On Fri, Dec 7, 2012 at 1:35 PM, Rick "Zero_Chaos" Farina
<[email protected]> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> From: "Rick Farina (Zero_Chaos)" <[email protected]>
>
> After the recent fixes which ensure the bindist use flag
> is always set, users now have no way to disable this flag.
> This patch introduces the new "bindist" feature, enabled by
> default, which will allow users to turn off bindist if
> they are not going to redistribute the builds (or for
> tinderbox testing, etc).
> - ---
>  catalyst                        |    7 +++++++
>  files/catalyst.conf             |    4 +++-
>  modules/generic_stage_target.py |    5 +++--
>  modules/grp_target.py           |   11 ++++++-----
>  modules/livecd_stage1_target.py |    6 ++++--
>  targets/stage1/stage1-chroot.sh |   10 +++++++---
>  6 files changed, 30 insertions(+), 13 deletions(-)
>
> diff --git a/catalyst b/catalyst
> index 3d31599..8485984 100755
> - --- a/catalyst
> +++ b/catalyst
> @@ -112,6 +112,13 @@ def parse_config(myconfig):
>                 print "Autoresuming support enabled."
>                 conf_values["AUTORESUME"]="1"
>
> +       if "bindist" in string.split(conf_values["options"]):
> +               print "Binary redistribution enabled"
> +               conf_values["BINDIST"]="1"
> +       else:
> +               print "Bindist is not enabled in catalyst.conf"
> +               print "Binary redistribution of generated stages/isos is 
> prohibited
> by law."
> +
>         if "ccache" in string.split(conf_values["options"]):
>                 print "Compiler cache support enabled."
>                 conf_values["CCACHE"]="1"
> diff --git a/files/catalyst.conf b/files/catalyst.conf
> index ea74eb1..18c6ab8 100644
> - --- a/files/catalyst.conf
> +++ b/files/catalyst.conf
> @@ -49,6 +49,8 @@ hash_function="crc32"
>  #      the -a option to the catalyst cmdline.  -p will clear the autoresume
> flags
>  #      as well as your pkgcache and kerncache
>  #      ( This option is not fully tested, bug reports welcome )
> +# bindist = enable this option when the builds will be publicly
> redistributed to prevent
> +       building of patent encumbered and redistribution restricted items.
>  # ccache = enables build time ccache support (highly recommended)
>  # distcc = enable distcc support for building. You have to set
> distcc_hosts in
>  #      your spec file.
> @@ -64,7 +66,7 @@ hash_function="crc32"
>  #      your cache. The cache is unlinked before any empty or rm processing,
> though.
>  #
>  # (These options can be used together)
> - -options="autoresume kerncache pkgcache seedcache snapcache"
> +options="autoresume bindist kerncache pkgcache seedcache snapcache"
>
>  # portdir specifies the source portage tree used by the snapshot target.
>  portdir="/usr/portage"
> diff --git a/modules/generic_stage_target.py
> b/modules/generic_stage_target.py
> index 3597680..89082c5 100644
> - --- a/modules/generic_stage_target.py
> +++ b/modules/generic_stage_target.py
> @@ -490,8 +490,9 @@ class generic_stage_target(generic_target):
>                 if type(self.settings["use"])==types.StringType:
>                         self.settings["use"]=self.settings["use"].split()
>
> - -             # Force bindist for all targets
> - -             self.settings["use"].append("bindist")
> +               # Force bindist when options ask for it
> +               if self.settings.has_key("BINDIST"):
> +                       self.settings["use"].append("bindist")
>
>         def set_stage_path(self):
>                 
> self.settings["stage_path"]=normpath(self.settings["chroot_path"])
> diff --git a/modules/grp_target.py b/modules/grp_target.py
> index 12eab08..5d3af2e 100644
> - --- a/modules/grp_target.py
> +++ b/modules/grp_target.py
> @@ -62,11 +62,12 @@ class grp_target(generic_stage_target):
>                                 raise CatalystError,"GRP build aborting due 
> to error."
>
>         def set_use(self):
> - -         generic_stage_target.set_use(self)
> - -         if self.settings.has_key("use"):
> - -             self.settings["use"].append("bindist")
> - -         else:
> - -             self.settings["use"]=["bindist"]
> +               generic_stage_target.set_use(self)
> +               if self.settings.has_key("BINDIST"):
> +                       if self.settings.has_key("use"):
> +                               self.settings["use"].append("bindist")
> +                       else:
> +                               self.settings["use"]=["bindist"]
>
>         def set_mounts(self):
>             self.mounts.append("/tmp/grp")
> diff --git a/modules/livecd_stage1_target.py
> b/modules/livecd_stage1_target.py
> index 17254bb..a27cfe4 100644
> - --- a/modules/livecd_stage1_target.py
> +++ b/modules/livecd_stage1_target.py
> @@ -48,10 +48,12 @@ class livecd_stage1_target(generic_stage_target):
>                 generic_stage_target.set_use(self)
>                 if self.settings.has_key("use"):
>                         self.settings["use"].append("livecd")
> - -                     self.settings["use"].append("bindist")
> +                       if self.settings.has_key("BINDIST"):
> +                               self.settings["use"].append("bindist")
>                 else:
>                         self.settings["use"]=["livecd"]
> - -                     self.settings["use"].append("bindist")
> +                       if self.settings.has_key("BINDIST"):
> +                               self.settings["use"].append("bindist")

This if has_key -> append otherwise create and append pattern is ugly.
I wonder if there's a cleaner way to do this. I'll see what I can
find.

In any case, you can factor the bindist part out of the if has_key block.

>         def set_packages(self):
>                 generic_stage_target.set_packages(self)
> diff --git a/targets/stage1/stage1-chroot.sh
> b/targets/stage1/stage1-chroot.sh
> index e40982b..8e5a492 100644
> - --- a/targets/stage1/stage1-chroot.sh
> +++ b/targets/stage1/stage1-chroot.sh
> @@ -6,7 +6,11 @@ source /tmp/chroot-functions.sh
>  export clst_buildpkgs="$(/tmp/build.py)"
>
>  # Setup our environment
> - -BOOTSTRAP_USE="$(portageq envvar BOOTSTRAP_USE)"
> +if [ -n "${clst_BINDIST}" ]; then
> +       BOOTSTRAP_USE="$(portageq envvar BOOTSTRAP_USE) bindist"
> +else
> +       BOOTSTRAP_USE="$(portageq envvar BOOTSTRAP_USE)"
> +fi

I would change this to just

BOOTSTRAP_USE="$(portageq envvar BOOTSTRAP_USE)"
if [ -n "${clst_BINDIST}" ]; then
        BOOTSTRAP_USE="$BOOTSTRAP_USE bindist"
fi

>  FEATURES="${clst_myfeatures} nodoc noman noinfo -news"
>
>  ## Sanity check profile
> @@ -50,8 +54,8 @@ sed -i '/USE="${USE} -build"/d' /etc/portage/make.conf
>
>  # Now, we install our packages
>  [ -e /etc/portage/make.conf ] && \
> - -     echo "USE=\"-* bindist build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"" \
> +       echo "USE=\"-* build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"" \
>         >> /etc/portage/make.conf
>  run_merge "--oneshot ${clst_buildpkgs}"
> - -sed -i "/USE=\"-* bindist build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"/d" \
> +sed -i "/USE=\"-* build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"/d" \
>         /etc/portage/make.conf
> - --
> 1.7.8.6

Overall, the patch looks good. With the couple of little style changes
and the wording change suggested by Mike & Jorge, this is Reviewed-by:
Matt Turner <[email protected]>

Reply via email to