Bug #214619 - Run dyn_package() and preinst_mask() from ${T} instead of
authorZac Medico <zmedico@gentoo.org>
Sat, 29 Mar 2008 05:30:41 +0000 (05:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 29 Mar 2008 05:30:41 +0000 (05:30 -0000)
${D} in order to avoid leaving gmon.out files in ${D} in case any tools
were built with -pf in CFLAGS. Also, call preinst_mask() after all other
functions so that INSTALL_MASK can be used to wipe out any gmon.out files
created during previous functions.

svn path=/main/trunk/; revision=9592

bin/misc-functions.sh
pym/portage/__init__.py

index 48323e2dbdeab3c129cb7dd64264fd733cd568b3..41b38e5a5c51f17df4229f08fb2dadf7a657a46e 100755 (executable)
@@ -433,6 +433,11 @@ preinst_mask() {
                 eerror "${FUNCNAME}: D is unset"
                 return 1
        fi
+
+       # Make sure $PWD is not ${D} so that we don't leave gmon.out files
+       # in there in case any tools were built with -pg in CFLAGS.
+       cd "${T}"
+
        # remove man pages, info pages, docs if requested
        for f in man info doc; do
                if hasq no${f} $FEATURES; then
@@ -551,7 +556,9 @@ preinst_selinux_labels() {
 }
 
 dyn_package() {
-       cd "${PORTAGE_BUILDDIR}/image"
+       # Make sure $PWD is not ${D} so that we don't leave gmon.out files
+       # in there in case any tools were built with -pg in CFLAGS.
+       cd "${T}"
        install_mask "${PORTAGE_BUILDDIR}/image" "${PKG_INSTALL_MASK}"
        local tar_options=""
        [ "${PORTAGE_QUIET}" == "1" ] ||  tar_options="${tar_options} -v"
@@ -561,10 +568,9 @@ dyn_package() {
        [ -z "${PORTAGE_BINPKG_TMPFILE}" ] && \
                PORTAGE_BINPKG_TMPFILE="${PKGDIR}/${CATEGORY}/${PF}.tbz2"
        mkdir -p "${PORTAGE_BINPKG_TMPFILE%/*}" || die "mkdir failed"
-       tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS . | \
+       tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS -C "${D}" . | \
                bzip2 -f > "$PORTAGE_BINPKG_TMPFILE" || \
                die "Failed to create tarball"
-       cd ..
        export PYTHONPATH="${PORTAGE_PYM_PATH:-/usr/lib/portage/pym}:${PYTHONPATH}"
        python -c "from portage import xpak; t=xpak.tbz2('${PORTAGE_BINPKG_TMPFILE}'); t.recompose('${PORTAGE_BUILDDIR}/build-info')"
        if [ $? -ne 0 ]; then
index aaff7e116ef667b192edddce1e46ede20e2731ac..745ecb38c67499ee5ef7d78be000a373aaec87a2 100644 (file)
@@ -4704,11 +4704,14 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
                        phase_retval = exit_status_check(phase_retval)
                        if phase_retval == os.EX_OK:
                                # Post phase logic and tasks that have been factored out of
-                               # ebuild.sh.
+                               # ebuild.sh. Call preinst_mask last so that INSTALL_MASK can
+                               # can be used to wipe out any gmon.out files created during
+                               # previous functions (in case any tools were built with -pg
+                               # in CFLAGS).
                                myargs = [_shell_quote(misc_sh_binary),
-                                       "preinst_bsdflags", "preinst_mask",
+                                       "preinst_bsdflags",
                                        "preinst_sfperms", "preinst_selinux_labels",
-                                       "preinst_suid_scan"]
+                                       "preinst_suid_scan", "preinst_mask"]
                                _doebuild_exit_status_unlink(
                                        mysettings.get("EBUILD_EXIT_STATUS_FILE"))
                                mysettings["EBUILD_PHASE"] = ""