diff options
| author | abcd <abcd@gentoo.org> | 2009-12-07 20:03:23 -0500 |
|---|---|---|
| committer | abcd <abcd@gentoo.org> | 2009-12-07 21:01:43 -0500 |
| commit | 2cb6f6eb18b9d240f56af47f77a56b42268483db (patch) | |
| tree | 7ea372ec76fb98cf34fa67f56f4c0ffd7e31dd2d | |
| parent | a32ed722fb7ba8de4311daf6e585bd3bc1e95073 (diff) | |
| download | kde-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.eclass | 18 | ||||
| -rw-r--r-- | eclass/kde4-base.eclass | 38 | ||||
| -rw-r--r-- | eclass/kde4-functions.eclass | 8 | ||||
| -rw-r--r-- | eclass/virtuoso.eclass | 9 |
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} |
