From 29fd2e335caa465372eb35a1b65ecdf9a37f83a6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 22 May 2007 06:27:32 +0000 Subject: When ${PKGDIR}/All/ doesn't exist, put packages in ${PKGDIR}/${CATEGORY}/ instead. This new layout is backward compatible with portage-2.1.2 and it will be a requirement for new PORTAGE_BINHOST support that is comming. svn path=/main/trunk/; revision=6568 --- bin/misc-functions.sh | 14 +++++++++++--- pym/portage/__init__.py | 5 ----- pym/portage/dbapi/bintree.py | 13 +++++++++---- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index d7aa9b05f..86d13292d 100755 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -496,13 +496,18 @@ preinst_selinux_labels() { dyn_package() { cd "${PORTAGE_BUILDDIR}/image" install_mask "${PORTAGE_BUILDDIR}/image" ${PKG_INSTALL_MASK} - local pkg_dest="${PKGDIR}/All/${PF}.tbz2" - local pkg_tmp="${PKGDIR}/All/${PF}.tbz2.$$" + if [ -d "${PKGDIR}/All" ] ; then + local pkg_dest="${PKGDIR}/All/${PF}.tbz2" + else + local pkg_dest="${PKGDIR}/${CATEGORY}/${PF}.tbz2" + fi + local pkg_tmp="${pkg_dest}.$$" local tar_options="" [ "${PORTAGE_QUIET}" == "1" ] || tar_options="${tar_options} -v" # Sandbox is disabled in case the user wants to use a symlink # for $PKGDIR and/or $PKGDIR/All. export SANDBOX_ON="0" + mkdir -p "${pkg_tmp%/*}" || die "mkdir failed" tar ${tar_options} -cf - . | bzip2 -f > "${pkg_tmp}" || \ die "Failed to create tarball" cd .. @@ -513,7 +518,10 @@ dyn_package() { die "Failed to append metadata to the tbz2 file" fi mv -f "${pkg_tmp}" "${pkg_dest}" || die "Failed to move tbz2 to ${pkg_dest}" - ln -sf "../All/${PF}.tbz2" "${PKGDIR}/${CATEGORY}/${PF}.tbz2" || die "Failed to create symlink in ${PKGDIR}/${CATEGORY}" + if [ -d "${PKGDIR}/All" ] ; then + ln -sf "../All/${PF}.tbz2" "${PKGDIR}/${CATEGORY}/${PF}.tbz2" || \ + die "Failed to create symlink in ${PKGDIR}/${CATEGORY}" + fi vecho ">>> Done." cd "${PORTAGE_BUILDDIR}" touch .packaged || die "Failed to 'touch .packaged' in ${PORTAGE_BUILDDIR}" diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 171806f7a..f79b525ed 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -3816,11 +3816,6 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, actionmap[x]["dep"] = ' '.join(actionmap_deps[x]) if mydo in actionmap.keys(): - if mydo=="package": - portage.util.ensure_dirs( - os.path.join(mysettings["PKGDIR"], mysettings["CATEGORY"])) - portage.util.ensure_dirs( - os.path.join(mysettings["PKGDIR"], "All")) retval = spawnebuild(mydo, actionmap, mysettings, debug, logfile=logfile) elif mydo=="qmerge": diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index 4a0c70e18..2a9651df5 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -113,6 +113,8 @@ class binarytree(object): self.invalids = [] self.settings = settings self._pkg_paths = {} + self._all_directory = os.path.isdir( + os.path.join(self.pkgdir, "All")) def move_ent(self, mylist): if not self.populated: @@ -285,6 +287,8 @@ class binarytree(object): use for a given cpv. If a collision will occur with an existing package from another category, the existing package will be bumped to ${PKGDIR}/${CATEGORY}/${PF}.tbz2 so that both can coexist.""" + if not self._all_directory: + return if not self.populated: # Try to avoid the population routine when possible, so that # FEATURES=buildpkg doesn't always force population. @@ -357,8 +361,6 @@ class binarytree(object): "populates the binarytree" if (not os.path.isdir(self.pkgdir) and not getbinpkgs): return 0 - if (not os.path.isdir(self.pkgdir+"/All") and not getbinpkgs): - return 0 categories = set(self.settings.categories) @@ -500,8 +502,11 @@ class binarytree(object): if mypath: return os.path.join(self.pkgdir, mypath) mycat, mypkg = catsplit(mycpv) - mypath = os.path.join("All", mypkg + ".tbz2") - if mypath in self._pkg_paths.values(): + if self._all_directory: + mypath = os.path.join("All", mypkg + ".tbz2") + if mypath in self._pkg_paths.values(): + mypath = os.path.join(mycat, mypkg + ".tbz2") + else: mypath = os.path.join(mycat, mypkg + ".tbz2") self._pkg_paths[mycpv] = mypath # cache for future lookups return os.path.join(self.pkgdir, mypath) -- cgit v1.2.3-1-g7c22