summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorabcd <abcd@gentoo.org>2009-12-07 20:03:23 -0500
committerabcd <abcd@gentoo.org>2009-12-07 21:01:43 -0500
commit2cb6f6eb18b9d240f56af47f77a56b42268483db (patch)
tree7ea372ec76fb98cf34fa67f56f4c0ffd7e31dd2d
parenta32ed722fb7ba8de4311daf6e585bd3bc1e95073 (diff)
downloadkde-2cb6f6eb18b9d240f56af47f77a56b42268483db.tar.gz
kde-2cb6f6eb18b9d240f56af47f77a56b42268483db.tar.bz2
kde-2cb6f6eb18b9d240f56af47f77a56b42268483db.zip
[eclass] Add proper support for Gentoo Prefix and EAPI-3
-rw-r--r--eclass/cmake-utils.eclass18
-rw-r--r--eclass/kde4-base.eclass38
-rw-r--r--eclass/kde4-functions.eclass8
-rw-r--r--eclass/virtuoso.eclass9
4 files changed, 48 insertions, 25 deletions
diff --git a/eclass/cmake-utils.eclass b/eclass/cmake-utils.eclass
index c53eeae608e..386940cfb8d 100644
--- a/eclass/cmake-utils.eclass
+++ b/eclass/cmake-utils.eclass
@@ -40,7 +40,7 @@ inherit toolchain-funcs multilib flag-o-matic base
CMAKE_EXPF="src_compile src_test src_install"
case ${EAPI:-0} in
- 2) CMAKE_EXPF+=" src_configure" ;;
+ 3|2) CMAKE_EXPF+=" src_configure" ;;
1|0) ;;
*) die "Unknown EAPI, Bug eclass maintainers." ;;
esac
@@ -294,6 +294,18 @@ enable_cmake-utils_src_configure() {
SET (CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> <DEFINES> ${CPPFLAGS} <FLAGS> -o <OBJECT> -c <SOURCE>" CACHE STRING "C++ compile command" FORCE)
_EOF_
+ if use prefix; then
+ cat >> "${build_rules}" <<- _EOF_
+ # in Prefix we need rpath and must ensure cmake gets our default linker path
+ # right ... except for Darwin hosts
+ IF (NOT APPLE)
+ SET (CMAKE_SKIP_RPATH OFF CACHE BOOL "" FORCE)
+ SET (CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH "${EPREFIX}/usr/${CHOST}/lib/gcc;${EPREFIX}/usr/${CHOST}/lib;${EPREFIX}/usr/$(get_libdir);${EPREFIX}/$(get_libdir)"
+ CACHE STRING "" FORCE)
+ ENDIF (NOT APPLE)
+ _EOF_
+ fi
+
# Common configure parameters (invariants)
local common_config=${T}/gentoo_common_config.cmake
local libdir=$(get_libdir)
@@ -307,12 +319,14 @@ enable_cmake-utils_src_configure() {
mycmakeargs=(${mycmakeargs})
fi
+ has "${EAPI:-0}" 0 1 2 && ! use prefix && EPREFIX=
+
# Common configure parameters (overridable)
# NOTE CMAKE_BUILD_TYPE can be only overriden via CMAKE_BUILD_TYPE eclass variable
# No -DCMAKE_BUILD_TYPE=xxx definitions will be in effect.
local cmakeargs=(
-C "${common_config}"
- -DCMAKE_INSTALL_PREFIX="${PREFIX:-/usr}"
+ -DCMAKE_INSTALL_PREFIX="${PREFIX:-${EPREFIX}/usr}"
"${mycmakeargs[@]}"
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"
-DCMAKE_INSTALL_DO_STRIP=OFF
diff --git a/eclass/kde4-base.eclass b/eclass/kde4-base.eclass
index f31fee2c877..6a1b4f45161 100644
--- a/eclass/kde4-base.eclass
+++ b/eclass/kde4-base.eclass
@@ -424,7 +424,11 @@ kde4-base_pkg_setup() {
debug-print-function ${FUNCNAME} "$@"
# Prefix compat:
- use prefix || EROOT=${ROOT}
+ if [[ ${EAPI} == 2 ]] && ! use prefix; then
+ EPREFIX=
+ EROOT=${ROOT}
+ fi
+
# Append missing trailing slash character
[[ ${EROOT} = */ ]] || EROOT+="/"
@@ -436,11 +440,11 @@ kde4-base_pkg_setup() {
if [[ ${KDEBASE} = kde-base ]]; then
if use kdeprefix; then
- KDEDIR="${EROOT}usr/kde/${_kdedir}"
+ KDEDIR=${EPREFIX}/usr/kde/${_kdedir}
else
- KDEDIR="${EROOT}usr"
+ KDEDIR=${EPREFIX}/usr
fi
- PREFIX="${PREFIX:-${KDEDIR}}"
+ : ${PREFIX:=${KDEDIR}}
else
# Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
KDEDIR=
@@ -449,9 +453,9 @@ kde4-base_pkg_setup() {
[[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
- KDEDIR="${EROOT}usr/kde/${slot}"
+ KDEDIR=${EPREFIX}/usr/kde/${slot}
else
- KDEDIR="${EROOT}usr"
+ KDEDIR=${EPREFIX}/usr
fi
break;
fi
@@ -462,10 +466,10 @@ kde4-base_pkg_setup() {
if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
[[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
else
- [[ -z ${KDEDIR} ]] && KDEDIR="${EROOT}usr"
+ [[ -z ${KDEDIR} ]] && KDEDIR=${EPREFIX}/usr
fi
- PREFIX="${PREFIX:-${EROOT}usr}"
+ : ${PREFIX:=${EPREFIX}/usr}
fi
# Point pkg-config path to KDE *.pc files
export PKG_CONFIG_PATH="${KDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
@@ -487,10 +491,10 @@ kde4-base_src_unpack() {
if [[ ${BUILD_TYPE} = live ]]; then
migrate_store_dir
subversion_src_unpack
- elif [[ ${EAPI} == 2 ]]; then
+ elif [[ ${EAPI} == [23] ]]; then
local file
for file in ${A}; do
- # This setup is because EAPI <= 2 cannot unpack *.tar.xz files
+ # This setup is because EAPI <= 3 cannot unpack *.tar.xz files
# directly, so we do it ourselves (using the exact same code as portage)
case ${file} in
*.tar.xz)
@@ -504,7 +508,7 @@ kde4-base_src_unpack() {
esac
done
else
- # For EAPI >= 3, we can just use unpack() directly
+ # For EAPI >= 4, we can just use unpack() directly
unpack ${A}
fi
}
@@ -578,7 +582,7 @@ kde4-base_src_configure() {
unset KDEDIRS
# Handle kdeprefix-ed KDE
- if [[ ${KDEDIR} != "${EROOT}usr" ]]; then
+ if [[ ${KDEDIR} != ${EPREFIX}/usr ]]; then
# Override some environment variables - only when kdeprefix is different,
# to not break ccache/distcc
PATH="${KDEDIR}/bin:${PATH}"
@@ -595,7 +599,7 @@ kde4-base_src_configure() {
# Handle kdeprefix in application itself
if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
# If prefix is /usr, sysconf needs to be /etc, not /usr/etc
- cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EROOT}"etc)
+ cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
fi
if [[ $(declare -p mycmakeargs) != "declare -a mycmakeargs="* ]]; then
@@ -665,12 +669,14 @@ kde4-base_src_make_doc() {
done
fi
- if [[ -n ${KDEBASE} ]] && [[ -d "${D}${EROOT}usr/share/doc/${PF}" ]]; then
+ [[ -z ${ED} ]] && ED=${D}${EPREFIX}
+
+ if [[ -n ${KDEBASE} ]] && [[ -d ${ED}usr/share/doc/${PF} ]]; then
# work around bug #97196
dodir /usr/share/doc/KDE4 && \
- cp -r "${D}${EROOT}usr/share/doc/${PF}" "${D}${EROOT}usr/share/doc/KDE4/" || \
+ cp -r "${ED}usr/share/doc/${PF}" "${ED}usr/share/doc/KDE4/" || \
die "Failed to move docs to KDE4/."
- rm -rf "${D}${EROOT}usr/share/doc/${PF}"
+ rm -rf "${ED}usr/share/doc/${PF}"
fi
}
diff --git a/eclass/kde4-functions.eclass b/eclass/kde4-functions.eclass
index 1bbf4c92e97..86d290bf9d4 100644
--- a/eclass/kde4-functions.eclass
+++ b/eclass/kde4-functions.eclass
@@ -17,7 +17,7 @@ inherit versionator
# By default kde4 eclasses want EAPI 2 which might be redefinable to newer
# versions.
case ${EAPI:-0} in
- 2) : ;;
+ 2|3) : ;;
*) DEPEND="EAPI-TOO-OLD" ;;
esac
@@ -65,6 +65,8 @@ slot_is_at_least() {
buildsycoca() {
debug-print-function ${FUNCNAME} "$@"
+ [[ -z ${EROOT} ]] && EROOT=${ROOT}${EPREFIX}
+
local KDE3DIR="${EROOT}usr/kde/3.5"
if [[ -z ${EROOT%%/} && -x "${KDE3DIR}"/bin/kbuildsycoca ]]; then
# Since KDE3 is aware of shortcuts in /usr, rebuild database
@@ -320,7 +322,7 @@ install_library_dependencies() {
local depsfile="${T}/${PN}:${SLOT}"
ebegin "Installing library dependencies as ${depsfile##*/}"
- insinto ${EROOT}var/lib/kde
+ insinto /var/lib/kde
doins "${depsfile}" || die "Failed to install library dependencies."
eend $?
}
@@ -335,7 +337,7 @@ load_library_dependencies() {
i=0
for pn in ${KMLOADLIBS} ; do
((i++))
- depsfile="${EROOT}var/lib/kde/${pn}:${SLOT}"
+ depsfile="${EPREFIX}/var/lib/kde/${pn}:${SLOT}"
[[ -r "${depsfile}" ]] || die "Depsfile '${depsfile}' not accessible. You probably need to reinstall ${pn}."
sed -i -e "${i}iINCLUDE(\"${depsfile}\")" "${S}/CMakeLists.txt" || \
die "Failed to include library dependencies for ${pn}"
diff --git a/eclass/virtuoso.eclass b/eclass/virtuoso.eclass
index 183087b8632..2a0003143c4 100644
--- a/eclass/virtuoso.eclass
+++ b/eclass/virtuoso.eclass
@@ -11,7 +11,7 @@
# This eclass provides common code for splitting Virtuoso OpenSource database
case ${EAPI:-0} in
- 2) : ;;
+ 2|3) : ;;
*) DEPEND="EAPI-TOO-OLD" ;;
esac
@@ -111,8 +111,9 @@ virtuoso_src_configure() {
# Override some variables to make tests work
if [[ ${PN} != virtuoso-server ]]; then
- export ISQL="${ROOT}usr/bin/isql-v"
- export SERVER="${ROOT}usr/bin/virtuoso-t"
+ [[ ${EAPI} == 2 ]] && ! use prefix && EPREFIX=
+ export ISQL=${EPREFIX}/usr/bin/isql-v
+ export SERVER=${EPREFIX}/usr/bin/virtuoso-t
fi
# Version specific options
@@ -126,7 +127,7 @@ virtuoso_src_configure() {
econf \
--with-layout=gentoo \
- --localstatedir="${ROOT}var" \
+ --localstatedir=${EPREFIX}/var \
--enable-shared \
--with-pthreads \
${myconf}