From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 21694198005 for ; Tue, 26 Feb 2013 16:21:09 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 9E24EE0746; Tue, 26 Feb 2013 16:21:08 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 17FE1E0746 for ; Tue, 26 Feb 2013 16:21:08 +0000 (UTC) Received: from [192.168.1.210] (unknown [24.86.176.233]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: dolsen) by smtp.gentoo.org (Postfix) with ESMTPSA id D2A2F33DC2C; Tue, 26 Feb 2013 16:21:06 +0000 (UTC) Message-ID: <1361895645.3997.269.camel@big_daddy.dol-sen.ca> Subject: [gentoo-catalyst] patch, fix broken seed stage update From: Brian Dolbec To: "gentoo-catalyst@lists.gentoo.org" Cc: zmedico@gentoo.org, fuzzyray@gentoo.org Date: Tue, 26 Feb 2013 08:20:45 -0800 Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.6.3 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-catalyst@lists.gentoo.org Reply-to: gentoo-catalyst@lists.gentoo.org Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Archives-Salt: 0390955c-8e87-4032-b48a-20904c99f57f X-Archives-Hash: daaa3e8cd0007df26a2fb679cb1c003a The git branch is located at http://dev.gentoo.org/~dolsen/catalyst/ git checkout the rewrite branch. For those of you that have already cloned it, use --force in your pull. I've condensed, rearranged the changes into more logical complete changes. Still, I wouldn't think you could cherrypick any single commit in general. Some fixes could be cherrypicked to apply to current master, some would likely have to be hand applied due to other changes. Next on my todo list, fix doc's creation, create a setup.py and make the code installable via ebuild. I think also development should continue in a branch on the main catalyst repo on g.o.g.o. Possibly name it catalyst3b so it does not conflict with the catalyst3 branch started. I looked at rebasing my work on it, but decided against it. There were far too many changes in master since it was last updated. There are far too many patches to individually list them in this mail list. Please checkout the branch from my repo to review the changes. It would also be easier to use gitweb to view them online if it was pushed to the main repo. Anyway the latest patch... ====================================================================== Fix broken seed stage update... Strip --usepkg and --buildpkg from emerge options for user defined update_seed_command. Add a check for the update_seed option to set the correct update options. Fix default seed stage update command to properly update gcc and it's deps. Add a seed stage update system command and option. Add --binpkg-respect-use=y for all cases --usepkg is enabled. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >From 9ffa5b8812403bf20f17eba58543fc4b7c04bc33 Mon Sep 17 00:00:00 2001 From: Brian Dolbec Date: Mon, 25 Feb 2013 23:31:41 -0800 Subject: [PATCH] Fix broken seed stage update... Strip --usepkg and --buildpkg from emerge options for user defined update_seed_command. Add a check for the update_seed option to set the correct update options. Fix default seed stage update command to properly update gcc and it's deps. Add a seed stage update system command and option. Add --binpkg-respect-use=y for all cases --usepkg is enabled. --- catalyst/targets/stage1.py | 3 ++- doc/catalyst-spec.5.txt | 12 +++++++++++- targets/stage1/stage1-chroot.sh | 17 ++++++++++++++--- targets/support/chroot-functions.sh | 11 ++++++++++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/catalyst/targets/stage1.py b/catalyst/targets/stage1.py index e936929..e067c8c 100644 --- a/catalyst/targets/stage1.py +++ b/catalyst/targets/stage1.py @@ -18,7 +18,8 @@ class stage1(StageBase): def __init__(self,spec,addlargs): self.required_values=[] self.valid_values=["chost"] - self.valid_values.extend(["update_seed","update_seed_command"]) + self.valid_values.extend(["update_seed","update_seed_command", + "update_seed_system"]) StageBase.__init__(self,spec,addlargs) def set_stage_path(self): diff --git a/doc/catalyst-spec.5.txt b/doc/catalyst-spec.5.txt index 4a6e06c..196bdc3 100644 --- a/doc/catalyst-spec.5.txt +++ b/doc/catalyst-spec.5.txt @@ -138,9 +138,19 @@ it should update the seed stage or not (valid values: `yes no`). *update_seed_command*:: This is an optional command to pass to emerge for updating the seed stage (example: `--update dev-libs/mpfr dev-libs/mpc dev-libs/gmp`) -If not specified, catalyst will update gcc deps. +If not specified, catalyst will update gcc's deps, and rebuild gcc if any of +it's deps are updated with a new version. Even if it itself is not updated. +This prevents gcc breakage when it's dependency lib sonames have changed. This setting requires enabling update_seed. +*update_seed_system*:: +This is an optional setting supported by stage1 to tell catalyst if +it should update the seed's system packages or not (valid values: `yes no`). +This is run after any update_seed_command, updating any remaining upgradable +system packages. +This setting requires enabling update_seed. + + Compilation ~~~~~~~~~~~ diff --git a/targets/stage1/stage1-chroot.sh b/targets/stage1/stage1-chroot.sh index 97aef7f..65c2d81 100755 --- a/targets/stage1/stage1-chroot.sh +++ b/targets/stage1/stage1-chroot.sh @@ -26,12 +26,23 @@ clst_root_path=/ setup_pkgmgr # Update stage3 if [ -n "${clst_update_seed}" ]; then if [ "${clst_update_seed}" == "yes" ]; then - echo "Updating seed stage..." if [ -n "${clst_update_seed_command}" ]; then - clst_root_path=/ run_merge "--buildpkg=n ${clst_update_seed_command}" + echo "--- Updating seed stage with USER defined update_seed_command" + update_cmd=${clst_update_seed_command/--usepkg /} + update_cmd=${clst_update_seed_command/--buildpkg /} + clst_root_path=/ run_merge "${update_cmd}" else - clst_root_path=/ run_merge "--buildpkg=n --update --deep --newuse --onlydeps gcc" + echo "--- Updating seed stage with DEFAULT update_seed_command" + update_cmd="--update --deep --complete-graph --rebuild-if-new-ver gcc" + clst_root_path=/ run_merge ${update_cmd} fi + if [ "${clst_update_seed_system}" == "yes" ]; then + echo "--- Updating seed stage system packages" + update_cmd="--update --deep --complete-graph @system" + clst_root_path=/ run_merge ${update_cmd} + fi + # now reset the emerge options for the target + clst_update_seed=no setup_myemergeopts elif [ "${clst_update_seed}" != "no" ]; then echo "Invalid setting for update_seed: ${clst_update_seed}" exit 1 diff --git a/targets/support/chroot-functions.sh b/targets/support/chroot-functions.sh index 2524b4f..69d2923 100755 --- a/targets/support/chroot-functions.sh +++ b/targets/support/chroot-functions.sh @@ -133,9 +133,18 @@ setup_myemergeopts(){ then export bootstrap_opts="${bootstrap_opts} -f" export clst_myemergeopts="${clst_myemergeopts} -f" + # now intercept normal target options if we're updating the seed + # to update the seed we do not want binpkgs that may have links to + # sonames no longer installed, due to dependency updates. + # this function will be re-run later with clst_update_seed=no + elif [ "${clst_update_seed}" == "yes" ] + then + export clst_myemergeopts="${clst_myemergeopts} --newuse" + export bootstrap_opts="${bootstrap_opts} -r" elif [ -n "${clst_PKGCACHE}" ] then - export clst_myemergeopts="${clst_myemergeopts} --usepkg --buildpkg --newuse" + # if you add --usepkg, then also add --binpkg-respect-use=y + export clst_myemergeopts="${clst_myemergeopts} --usepkg --binpkg-respect-use=y --buildpkg --newuse" export bootstrap_opts="${bootstrap_opts} -r" fi } -- 1.8.1.2