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 5DA42138A1A for ; Sat, 14 Feb 2015 19:02:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E612BE08E5; Sat, 14 Feb 2015 19:02:17 +0000 (UTC) Received: from virtual.dyc.edu (mail.virtual.dyc.edu [67.222.116.22]) by pigeon.gentoo.org (Postfix) with ESMTP id 658FFE08E5 for ; Sat, 14 Feb 2015 19:02:17 +0000 (UTC) Received: from [192.168.3.7] (cpe-74-77-145-97.buffalo.res.rr.com [74.77.145.97]) by virtual.dyc.edu (Postfix) with ESMTPSA id 2D7077E0353 for ; Sat, 14 Feb 2015 14:02:13 -0500 (EST) Message-ID: <54DF9C00.4010008@opensource.dyc.edu> Date: Sat, 14 Feb 2015 14:03:28 -0500 From: "Anthony G. Basile" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-releng@lists.gentoo.org Reply-to: gentoo-releng@lists.gentoo.org MIME-Version: 1.0 To: gentoo-releng@lists.gentoo.org Subject: [gentoo-releng] Enable USE_EXPAND support in catalyst Content-Type: multipart/mixed; boundary="------------020503050905060905010308" X-Archives-Salt: 3e85526c-329e-4b9e-b110-29d38c1bda8a X-Archives-Hash: adf62b8b2c60dd487c43a1012ab73c36 This is a multi-part message in MIME format. --------------020503050905060905010308 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit -- Anthony G. Basile, Ph. D. Chair of Information Technology D'Youville College Buffalo, NY 14201 (716) 829-8197 --------------020503050905060905010308 Content-Type: text/x-patch; name="0001-modules-generic_stage_target.py-handle-USE_EXPAND-fl.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-modules-generic_stage_target.py-handle-USE_EXPAND-fl.pa"; filename*1="tch" >From d442e3e6579bd47af793d6b57f82283f5b3ec3cf Mon Sep 17 00:00:00 2001 From: "Anthony G. Basile" Date: Sat, 14 Feb 2015 13:35:57 -0500 Subject: [PATCH] modules/generic_stage_target.py: handle USE_EXPAND flags Currently catalyst does not handle USE_EXPAND flags. However, the recent move of mmx, sse and friends from the global USE flags to the new CPU_FLAGS_X86 USE_EXPAND flag requires this. This commit adds code to handle a new syntax for self.setting[x] values which can now contain dictionaries to objects. We use these to build environment variables for USE_EXPAND flags. Eg. in arch/amd64.py we set self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} which is later exported in the environtment as: clst_HOSTUSEEXPAND="CPU_FLAGS_X86" and clst_CPU_FLAGS_X86="mmx sse sse2" In general one could have: self.settings["A"]={"B":[1,2,3],"C":[4,5,6]} which would export clst_A="B C" and clst_B="1 2 3" clst_C="4 5 6" Signed-off-by: Anthony G. Basile --- arch/amd64.py | 14 +++++++------- arch/x86.py | 20 ++++++++++---------- modules/generic_stage_target.py | 30 ++++++++++++++++++++++++++++++ targets/stage1/stage1-chroot.sh | 13 ++++++++++++- 4 files changed, 59 insertions(+), 18 deletions(-) diff --git a/arch/amd64.py b/arch/amd64.py index 262b55a..2743e22 100644 --- a/arch/amd64.py +++ b/arch/amd64.py @@ -13,7 +13,7 @@ class arch_amd64(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} class arch_nocona(generic_amd64): "improved version of Intel Pentium 4 CPU with 64-bit extensions, MMX, SSE, SSE2 and SSE3 support" @@ -21,7 +21,7 @@ class arch_nocona(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=nocona -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} # Requires gcc 4.3 to use this class class arch_core2(generic_amd64): @@ -30,7 +30,7 @@ class arch_core2(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=core2 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2","ssse3"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2","ssse3"]} class arch_k8(generic_amd64): "generic k8, opteron and athlon64 support" @@ -38,7 +38,7 @@ class arch_k8(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=k8 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2","3dnow"]} class arch_k8_sse3(generic_amd64): "improved versions of k8, opteron and athlon64 with SSE3 support" @@ -46,7 +46,7 @@ class arch_k8_sse3(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=k8-sse3 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2","3dnow"]} class arch_amdfam10(generic_amd64): "AMD Family 10h core based CPUs with x86-64 instruction set support" @@ -54,7 +54,7 @@ class arch_amdfam10(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=amdfam10 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","sse","sse2","3dnow"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2","3dnow"]} class arch_x32(generic_amd64): "builder class for generic x32 (Intel and AMD)" @@ -62,7 +62,7 @@ class arch_x32(generic_amd64): generic_amd64.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -pipe" self.settings["CHOST"]="x86_64-pc-linux-gnux32" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} def register(): "inform main catalyst program of the contents of this plugin" diff --git a/arch/x86.py b/arch/x86.py index 0391b79..585dcee 100644 --- a/arch/x86.py +++ b/arch/x86.py @@ -54,42 +54,42 @@ class arch_pentium_mmx(generic_x86): def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=pentium-mmx -pipe" - self.settings["HOSTUSE"]=["mmx"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx"]} class arch_pentium2(generic_x86): "Intel Pentium 2 CPU with MMX support" def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=pentium2 -pipe" - self.settings["HOSTUSE"]=["mmx"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx"]} class arch_pentium3(generic_x86): "Intel Pentium 3 CPU with MMX and SSE support" def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=pentium3 -pipe" - self.settings["HOSTUSE"]=["mmx","sse"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse"]} class arch_pentium4(generic_x86): "Intel Pentium 4 CPU with MMX, SSE and SSE2 support" def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=pentium4 -pipe" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} class arch_pentium_m(generic_x86): "Intel Pentium M CPU with MMX, SSE and SSE2 support" def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=pentium-m -pipe" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} class arch_prescott(generic_x86): "improved version of Intel Pentium 4 CPU with MMX, SSE, SSE2 and SSE3 support" def __init__(self,myspec): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=prescott -pipe" - self.settings["HOSTUSE"]=["mmx","sse","sse2"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","sse","sse2"]} self.settings["CHOST"]="i686-pc-linux-gnu" class arch_k6(generic_x86): @@ -98,7 +98,7 @@ class arch_k6(generic_x86): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=k6 -pipe" self.settings["CHOST"]="i686-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx"]} class arch_k6_2(generic_x86): "AMD K6-2 CPU with MMX and 3dNOW! support" @@ -106,7 +106,7 @@ class arch_k6_2(generic_x86): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=k6-2 -pipe" self.settings["CHOST"]="i686-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","3dnow"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","3dnow"]} class arch_athlon(generic_x86): "AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and SSE prefetch support" @@ -114,7 +114,7 @@ class arch_athlon(generic_x86): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=athlon -pipe" self.settings["CHOST"]="i686-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","3dnow"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","3dnow"]} class arch_athlon_xp(generic_x86): "improved AMD Athlon CPU with MMX, 3dNOW!, enhanced 3dNOW! and full SSE support" @@ -122,7 +122,7 @@ class arch_athlon_xp(generic_x86): generic_x86.__init__(self,myspec) self.settings["CFLAGS"]="-O2 -march=athlon-xp -pipe" self.settings["CHOST"]="i686-pc-linux-gnu" - self.settings["HOSTUSE"]=["mmx","3dnow","sse"] + self.settings["HOSTUSEEXPAND"]={"CPU_FLAGS_X86":["mmx","3dnow","sse"]} def register(): "Inform main catalyst program of the contents of this plugin." diff --git a/modules/generic_stage_target.py b/modules/generic_stage_target.py index cc24c63..3649223 100644 --- a/modules/generic_stage_target.py +++ b/modules/generic_stage_target.py @@ -1073,6 +1073,16 @@ class generic_stage_target(generic_target): "/use will cause portage to ignore" print "\tpackage.use in the profile and portage_confdir. You've been warned!" + myuseexpandvars={} + if "HOSTUSEEXPAND" in self.settings: + for hostuseexpand in self.settings["HOSTUSEEXPAND"]: + myuseexpandvars.update({hostuseexpand:self.settings["HOSTUSEEXPAND"][hostuseexpand]}) + + if myuseexpandvars: + myf.write("# These are the USE EXPAND flags that were used in addition to what is provided by the\n# profile used for building.\n") + for hostuseexpand in myuseexpandvars: + myf.write(hostuseexpand+'="'+string.join(myuseexpandvars[hostuseexpand])+'"\n') + myf.write('PORTDIR="/usr/portage"\n') myf.write('DISTDIR="${PORTDIR}/distfiles"\n') myf.write('PKGDIR="${PORTDIR}/packages"\n') @@ -1271,6 +1281,26 @@ class generic_stage_target(generic_target): self.env[varname]="true" else: self.env[varname]="false" + # This handles a dictionary of objects just one level deep and no deeper! + # Its currently used only for USE_EXPAND flags which are dictionaries of + # lists in arch/amd64.py and friends. If we wanted self.settigs[var] + # of any depth, we should make this function recursive. + elif type(self.settings[x])==types.DictType: + self.env[varname]=string.join(self.settings[x].keys()) + for y in self.settings[x].keys(): + varname2="clst_"+string.replace(y,"/","_") + varname2=string.replace(varname2,"-","_") + varname2=string.replace(varname2,".","_") + if type(self.settings[x][y])==types.StringType: + self.env[varname2]=self.settings[x][y] + elif type(self.settings[x][y])==types.ListType: + self.env[varname2]=string.join(self.settings[x][y]) + elif type(self.settings[x][y])==types.BooleanType: + if self.settings[x][y]: + self.env[varname]="true" + else: + self.env[varname]="false" + if "makeopts" in self.settings: self.env["MAKEOPTS"]=self.settings["makeopts"] diff --git a/targets/stage1/stage1-chroot.sh b/targets/stage1/stage1-chroot.sh index eccbd3f..f79f360 100755 --- a/targets/stage1/stage1-chroot.sh +++ b/targets/stage1/stage1-chroot.sh @@ -54,9 +54,20 @@ run_merge "--oneshot --nodeps sys-apps/baselayout" sed -i '/USE="${USE} -build"/d' /etc/portage/make.conf # Now, we install our packages -[ -e /etc/portage/make.conf ] && \ +if [ -e /etc/portage/make.conf ]; then echo "USE=\"-* build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"" \ >> /etc/portage/make.conf + for useexpand in "${clst_HOSTUSEEXPAND}"; do + x="clst_${useexpand}" + echo "${useexpand}=\"${!x}\"" \ + >> /etc/portage/make.conf + done +fi run_merge "--oneshot ${clst_buildpkgs}" sed -i "/USE=\"-* build ${BOOTSTRAP_USE} ${clst_HOSTUSE}\"/d" \ /etc/portage/make.conf +for useexpand in "${clst_HOSTUSEEXPAND}"; do + x="clst_${useexpand}" + sed -i "${useexpand}=\"${!x}\"" \ + /etc/portage/make.conf +done -- 2.0.5 --------------020503050905060905010308--