Change-Id: Idb4939111f1ee1dc8cdfe3b2ce2fd7f1ebb3cd32
Reviewed-on: http://photon-jenkins.eng.vmware.com/619
Tested-by: jenkins-photon <wangnan2015@hotmail.com>
Reviewed-by: Divya Thaluru <dthaluru@vmware.com>
| ... | ... |
@@ -216,7 +216,8 @@ packages: check $(PHOTON_STAGE) $(PHOTON_PUBLISH_RPMS) $(PHOTON_SOURCES) $(CONTA |
| 216 | 216 |
-d $(PHOTON_DIST_TAG) \ |
| 217 | 217 |
-n $(PHOTON_BUILD_NUMBER) \ |
| 218 | 218 |
-v $(PHOTON_RELEASE_VERSION) \ |
| 219 |
- -w $(PHOTON_DATA_DIR)/pkg_info.json\ |
|
| 219 |
+ -w $(PHOTON_DATA_DIR)/pkg_info.json \ |
|
| 220 |
+ -g $(PHOTON_DATA_DIR)/pkg_build_options.json \ |
|
| 220 | 221 |
$(PHOTON_RPMCHECK_OPTION) \ |
| 221 | 222 |
-t ${THREADS}
|
| 222 | 223 |
|
| ... | ... |
@@ -485,6 +486,7 @@ check-packer-ovf-plugin: |
| 485 | 485 |
-d $(PHOTON_DIST_TAG) \ |
| 486 | 486 |
-n $(PHOTON_BUILD_NUMBER) \ |
| 487 | 487 |
-v $(PHOTON_RELEASE_VERSION) \ |
| 488 |
+ -g $(PHOTON_DATA_DIR)/pkg_build_options.json \ |
|
| 488 | 489 |
$(PHOTON_RPMCHECK_OPTION) \ |
| 489 | 490 |
-l $(PHOTON_LOGS_DIR) |
| 490 | 491 |
|
| ... | ... |
@@ -1,6 +1,6 @@ |
| 1 | 1 |
Summary: Management tools and libraries relating to cryptography |
| 2 | 2 |
Name: openssl |
| 3 |
-Version: 1.0.2f |
|
| 3 |
+Version: 1.0.2g |
|
| 4 | 4 |
Release: 1%{?dist}
|
| 5 | 5 |
License: OpenSSL |
| 6 | 6 |
URL: http://www.openssl.org |
| ... | ... |
@@ -8,7 +8,7 @@ Group: System Environment/Security |
| 8 | 8 |
Vendor: VMware, Inc. |
| 9 | 9 |
Distribution: Photon |
| 10 | 10 |
Source0: http://www.openssl.org/source/%{name}-%{version}.tar.gz
|
| 11 |
-%define sha1 openssl=2047c592a6e5a42bd37970bdb4a931428110a927 |
|
| 11 |
+%define sha1 openssl=36af23887402a5ea4ebef91df8e61654906f58f2 |
|
| 12 | 12 |
Patch0: c_rehash.patch |
| 13 | 13 |
Patch1: openssl-1.0.2f-ipv6apps.patch |
| 14 | 14 |
Requires: bash glibc libgcc |
| ... | ... |
@@ -58,6 +58,7 @@ export CFLAGS="%{optflags}"
|
| 58 | 58 |
--openssldir=/%{_sysconfdir}/ssl \
|
| 59 | 59 |
shared \ |
| 60 | 60 |
zlib-dynamic \ |
| 61 |
+ %{?_with_fips} \
|
|
| 61 | 62 |
-Wa,--noexecstack "${CFLAGS}" "${LDFLAGS}"
|
| 62 | 63 |
# does not support -j yet |
| 63 | 64 |
make |
| ... | ... |
@@ -107,6 +108,8 @@ rm -rf %{buildroot}/*
|
| 107 | 107 |
/%{_bindir}/c_rehash
|
| 108 | 108 |
|
| 109 | 109 |
%changelog |
| 110 |
+* Mon Mar 07 2016 Anish Swaminathan <anishs@vmware.com> 1.0.2g-1 |
|
| 111 |
+- Upgrade to 1.0.2g |
|
| 110 | 112 |
* Wed Feb 03 2016 Xiaolin Li <xiaolinl@vmware.com> 1.0.2f-1 |
| 111 | 113 |
- Update to version 1.0.2f |
| 112 | 114 |
* Mon Feb 01 2016 Anish Swaminathan <anishs@vmware.com> 1.0.2e-3 |
| ... | ... |
@@ -1,13 +1,12 @@ |
| 1 | 1 |
Summary: Python cryptography library |
| 2 | 2 |
Name: python-cryptography |
| 3 |
-Version: 1.2.2 |
|
| 3 |
+Version: 1.2.3 |
|
| 4 | 4 |
Release: 1%{?dist}
|
| 5 | 5 |
Url: https://cryptography.io |
| 6 | 6 |
License: ASL 2.0 |
| 7 | 7 |
Group: Development/Languages/Python |
| 8 | 8 |
Source0: https://pypi.python.org/packages/source/c/cryptography/cryptography-%{version}.tar.gz
|
| 9 |
-%define sha1 cryptography=16088fb22c2ea4cd445bcfca6a6bbb99b79dc285 |
|
| 10 |
- |
|
| 9 |
+%define sha1 cryptography=a8a8083e70875423bd72899ca99890b788189205 |
|
| 11 | 10 |
BuildRequires: python2 |
| 12 | 11 |
BuildRequires: python2-libs |
| 13 | 12 |
BuildRequires: python2-devel |
| ... | ... |
@@ -38,7 +37,9 @@ python setup.py install --prefix=%{_prefix} --root=%{buildroot}
|
| 38 | 38 |
%{python_sitelib}/*
|
| 39 | 39 |
|
| 40 | 40 |
%changelog |
| 41 |
-* Thu Feb 26 2016 Anish Swaminathan <anishs@vmware.com> 1.2.2-1 |
|
| 41 |
+* Mon Mar 07 2016 Anish Swaminathan <anishs@vmware.com> 1.2.3-1 |
|
| 42 |
+- Upgrade to 1.2.3 |
|
| 43 |
+* Fri Feb 26 2016 Anish Swaminathan <anishs@vmware.com> 1.2.2-1 |
|
| 42 | 44 |
- Upgrade version to 1.2.2 |
| 43 | 45 |
* Thu Jan 21 2016 Anish Swaminathan <anishs@vmware.com> 1.2.1-1 |
| 44 | 46 |
- Upgrade version |
| ... | ... |
@@ -9,7 +9,7 @@ import shutil |
| 9 | 9 |
|
| 10 | 10 |
class PackageBuilder(object): |
| 11 | 11 |
|
| 12 |
- def __init__(self,mapPackageToCycles,listAvailableCyclicPackages,logName=None,logPath=None): |
|
| 12 |
+ def __init__(self,mapPackageToCycles,listAvailableCyclicPackages,listBuildOptionPackages,pkgBuildOptionFile,logName=None,logPath=None): |
|
| 13 | 13 |
if logName is None: |
| 14 | 14 |
logName = "PackageBuilder" |
| 15 | 15 |
if logPath is None: |
| ... | ... |
@@ -20,6 +20,8 @@ class PackageBuilder(object): |
| 20 | 20 |
self.mapPackageToCycles = mapPackageToCycles |
| 21 | 21 |
self.listAvailableCyclicPackages = listAvailableCyclicPackages |
| 22 | 22 |
self.listNodepsPackages = ["glibc","gmp","zlib","file","binutils","mpfr","mpc","gcc","ncurses","util-linux","groff","perl","texinfo","rpm","openssl","go"] |
| 23 |
+ self.listBuildOptionPackages=listBuildOptionPackages |
|
| 24 |
+ self.pkgBuildOptionFile=pkgBuildOptionFile |
|
| 23 | 25 |
|
| 24 | 26 |
def prepareBuildRoot(self,chrootName,isToolChainPackage=False): |
| 25 | 27 |
chrootID=None |
| ... | ... |
@@ -100,7 +102,7 @@ class PackageBuilder(object): |
| 100 | 100 |
pkgUtils.installRPMSInAOneShot(chrootID,destLogPath) |
| 101 | 101 |
self.logger.info("Finished installing the build time dependent packages......")
|
| 102 | 102 |
pkgUtils.adjustGCCSpecs(package, chrootID, destLogPath) |
| 103 |
- pkgUtils.buildRPMSForGivenPackage(package,chrootID,destLogPath) |
|
| 103 |
+ pkgUtils.buildRPMSForGivenPackage(package,chrootID,self.listBuildOptionPackages,self.pkgBuildOptionFile,destLogPath) |
|
| 104 | 104 |
self.logger.info("Successfully built the package:"+package)
|
| 105 | 105 |
except Exception as e: |
| 106 | 106 |
self.logger.error("Failed while building package:" + package)
|
| ... | ... |
@@ -26,6 +26,8 @@ class PackageManager(object): |
| 26 | 26 |
self.mapOutputThread={}
|
| 27 | 27 |
self.mapThreadsLaunchTime={}
|
| 28 | 28 |
self.listAvailableCyclicPackages=[] |
| 29 |
+ self.listBuildOptionPackages=[] |
|
| 30 |
+ self.pkgBuildOptionFile="" |
|
| 29 | 31 |
|
| 30 | 32 |
def readPackageBuildData(self, listPackages): |
| 31 | 33 |
try: |
| ... | ... |
@@ -87,24 +89,28 @@ class PackageManager(object): |
| 87 | 87 |
def buildToolChain(self): |
| 88 | 88 |
try: |
| 89 | 89 |
tUtils=ToolChainUtils() |
| 90 |
- tUtils.buildCoreToolChainPackages() |
|
| 90 |
+ tUtils.buildCoreToolChainPackages(self.listBuildOptionPackages, self.pkgBuildOptionFile) |
|
| 91 | 91 |
except Exception as e: |
| 92 | 92 |
self.logger.error("Unable to build tool chain")
|
| 93 | 93 |
self.logger.error(e) |
| 94 | 94 |
raise e |
| 95 | 95 |
|
| 96 |
- def buildToolChainPackages(self, buildThreads): |
|
| 96 |
+ def buildToolChainPackages(self, listBuildOptionPackages, pkgBuildOptionFile, buildThreads): |
|
| 97 | 97 |
self.buildToolChain() |
| 98 | 98 |
self.buildGivenPackages(constants.listToolChainPackages, buildThreads) |
| 99 | 99 |
|
| 100 |
- def buildPackages(self,listPackages, buildThreads): |
|
| 101 |
- self.buildToolChainPackages(buildThreads) |
|
| 100 |
+ def buildPackages(self,listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads): |
|
| 101 |
+ self.listBuildOptionPackages = listBuildOptionPackages |
|
| 102 |
+ self.pkgBuildOptionFile = pkgBuildOptionFile |
|
| 103 |
+ self.buildToolChainPackages(listBuildOptionPackages, pkgBuildOptionFile, buildThreads) |
|
| 102 | 104 |
self.buildGivenPackages(listPackages, buildThreads) |
| 103 | 105 |
|
| 104 | 106 |
def initializeThreadPool(self,statusEvent): |
| 105 | 107 |
ThreadPool.clear() |
| 106 | 108 |
ThreadPool.mapPackageToCycle=self.mapPackageToCycle |
| 107 | 109 |
ThreadPool.listAvailableCyclicPackages=self.listAvailableCyclicPackages |
| 110 |
+ ThreadPool.listBuildOptionPackages=self.listBuildOptionPackages |
|
| 111 |
+ ThreadPool.pkgBuildOptionFile=self.pkgBuildOptionFile |
|
| 108 | 112 |
ThreadPool.logger=self.logger |
| 109 | 113 |
ThreadPool.statusEvent=statusEvent |
| 110 | 114 |
|
| ... | ... |
@@ -7,6 +7,8 @@ import re |
| 7 | 7 |
from time import sleep |
| 8 | 8 |
import PullSources |
| 9 | 9 |
from PackageInfo import SourcePackageInfo |
| 10 |
+import json |
|
| 11 |
+import collections |
|
| 10 | 12 |
|
| 11 | 13 |
class PackageUtils(object): |
| 12 | 14 |
|
| ... | ... |
@@ -132,9 +134,17 @@ class PackageUtils(object): |
| 132 | 132 |
self.logger.error("Multiple sources found for source:"+source+"\n"+ ",".join(sourcePath) +"\nUnable to determine one.")
|
| 133 | 133 |
raise Exception("Multiple sources found")
|
| 134 | 134 |
self.logger.info("Copying... Source path :" + source + " Source filename: " + sourcePath[0])
|
| 135 |
- shutil.copy2(sourcePath[0], destDir) |
|
| 135 |
+ shutil.copy2(sourcePath[0], destDir) |
|
| 136 | 136 |
|
| 137 |
- def buildRPMSForGivenPackage(self,package, chrootID,destLogPath=None): |
|
| 137 |
+ def copyAdditionalBuildFiles(self,listAdditionalFiles,destDir): |
|
| 138 |
+ cmdUtils = CommandUtils() |
|
| 139 |
+ index=0 |
|
| 140 |
+ for source in listAdditionalFiles: |
|
| 141 |
+ if os.path.exists(source): |
|
| 142 |
+ shutil.copytree(source, destDir+str(index)) |
|
| 143 |
+ index = index + 1 |
|
| 144 |
+ |
|
| 145 |
+ def buildRPMSForGivenPackage(self,package,chrootID,listBuildOptionPackages,pkgBuildOptionFile,destLogPath=None): |
|
| 138 | 146 |
self.logger.info("Building rpm's for package:"+package)
|
| 139 | 147 |
|
| 140 | 148 |
listSourcesFiles = constants.specData.getSources(package) |
| ... | ... |
@@ -152,11 +162,31 @@ class PackageUtils(object): |
| 152 | 152 |
# if os.geteuid()==0: |
| 153 | 153 |
self.copySourcesTobuildroot(listSourcesFiles,package,chrootSourcePath) |
| 154 | 154 |
self.copySourcesTobuildroot(listPatchFiles,package,chrootSourcePath) |
| 155 |
- |
|
| 155 |
+ |
|
| 156 |
+ listAdditionalFiles = [] |
|
| 157 |
+ macros = [] |
|
| 158 |
+ if package in listBuildOptionPackages: |
|
| 159 |
+ jsonData = open(pkgBuildOptionFile) |
|
| 160 |
+ pkg_build_option_json = json.load(jsonData, object_pairs_hook=collections.OrderedDict) |
|
| 161 |
+ jsonData.close() |
|
| 162 |
+ pkgs_sorted = pkg_build_option_json.items() |
|
| 163 |
+ for pkg in pkgs_sorted: |
|
| 164 |
+ p = str(pkg[0].encode('utf-8'))
|
|
| 165 |
+ if p == package: |
|
| 166 |
+ filelist = pkg[1]["files"] |
|
| 167 |
+ for f in filelist: |
|
| 168 |
+ listAdditionalFiles.append(str(f.encode('utf-8')))
|
|
| 169 |
+ macrolist = pkg[1]["macros"] |
|
| 170 |
+ for macro in macrolist: |
|
| 171 |
+ macros.append(str(macro.encode('utf-8')))
|
|
| 172 |
+ |
|
| 173 |
+ chrootAdditionalPath=chrootID+constants.topDirPath+"/ADDITIONAL" |
|
| 174 |
+ self.copyAdditionalBuildFiles(listAdditionalFiles,chrootAdditionalPath) |
|
| 175 |
+ |
|
| 156 | 176 |
listRPMFiles=[] |
| 157 | 177 |
listSRPMFiles=[] |
| 158 | 178 |
try: |
| 159 |
- listRPMFiles,listSRPMFiles = self.buildRPM(chrootSpecPath+"/"+specName,chrootLogsFilePath, chrootCmd) |
|
| 179 |
+ listRPMFiles,listSRPMFiles = self.buildRPM(chrootSpecPath+"/"+specName,chrootLogsFilePath,chrootCmd,package,macros) |
|
| 160 | 180 |
except Exception as e: |
| 161 | 181 |
self.logger.error("Failed while building rpm:"+package)
|
| 162 | 182 |
raise e |
| ... | ... |
@@ -176,11 +206,13 @@ class PackageUtils(object): |
| 176 | 176 |
SourcePackageInfo.addSRPMData(package,version,release,arch,srpmName) |
| 177 | 177 |
|
| 178 | 178 |
|
| 179 |
- def buildRPM(self,specFile,logFile,chrootCmd): |
|
| 179 |
+ def buildRPM(self,specFile,logFile,chrootCmd,package,macros): |
|
| 180 | 180 |
|
| 181 | 181 |
rpmBuildcmd= self.rpmbuildBinary+" "+self.rpmbuildBuildallOption+" "+self.rpmbuildDistOption |
| 182 | 182 |
if not constants.rpmCheck: |
| 183 | 183 |
rpmBuildcmd+=" "+self.rpmbuildNocheckOption |
| 184 |
+ for macro in macros: |
|
| 185 |
+ rpmBuildcmd+=' --define \\\"%s\\\"' % macro |
|
| 184 | 186 |
rpmBuildcmd+=" "+self.rpmbuildBuildNum+" "+self.rpmbuildReleaseVer |
| 185 | 187 |
rpmBuildcmd+=" "+specFile |
| 186 | 188 |
|
| ... | ... |
@@ -7,6 +7,8 @@ class ThreadPool(object): |
| 7 | 7 |
inactiveWorkerThreads=[] |
| 8 | 8 |
mapPackageToCycle={}
|
| 9 | 9 |
listAvailableCyclicPackages=[] |
| 10 |
+ listBuildOptionPackages=[] |
|
| 11 |
+ pkgBuildOptionFile="" |
|
| 10 | 12 |
logger=None |
| 11 | 13 |
statusEvent=None |
| 12 | 14 |
|
| ... | ... |
@@ -27,7 +29,14 @@ class ThreadPool(object): |
| 27 | 27 |
|
| 28 | 28 |
@staticmethod |
| 29 | 29 |
def addWorkerThread(workerThreadName): |
| 30 |
- workerThread = WorkerThread.WorkerThread(ThreadPool.statusEvent,workerThreadName,ThreadPool.mapPackageToCycle,ThreadPool.listAvailableCyclicPackages,ThreadPool.logger) |
|
| 30 |
+ workerThread = WorkerThread.WorkerThread( |
|
| 31 |
+ ThreadPool.statusEvent, |
|
| 32 |
+ workerThreadName, |
|
| 33 |
+ ThreadPool.mapPackageToCycle, |
|
| 34 |
+ ThreadPool.listAvailableCyclicPackages, |
|
| 35 |
+ ThreadPool.logger, |
|
| 36 |
+ ThreadPool.listBuildOptionPackages, |
|
| 37 |
+ ThreadPool.pkgBuildOptionFile) |
|
| 31 | 38 |
ThreadPool.mapWorkerThreads[workerThreadName]=workerThread |
| 32 | 39 |
|
| 33 | 40 |
@staticmethod |
| ... | ... |
@@ -94,10 +94,10 @@ class ToolChainUtils(object): |
| 94 | 94 |
rpmFile=self.findRPMFileInGivenLocation(package, constants.prevPublishRPMRepo) |
| 95 | 95 |
if rpmFile is None: |
| 96 | 96 |
if package == "util-linux-devel": |
| 97 |
- self.logger.info("No old verion of util-linux-devel exists, skip until the new version is built")
|
|
| 97 |
+ self.logger.info("No old version of util-linux-devel exists, skip until the new version is built")
|
|
| 98 | 98 |
continue |
| 99 | 99 |
if package == "flex-devel": |
| 100 |
- self.logger.info("No old verion of flex-devel exists, skip until the new version is built")
|
|
| 100 |
+ self.logger.info("No old version of flex-devel exists, skip until the new version is built")
|
|
| 101 | 101 |
continue |
| 102 | 102 |
|
| 103 | 103 |
self.logger.error("Unable to find rpm "+ package +" in current and previous versions")
|
| ... | ... |
@@ -163,7 +163,7 @@ class ToolChainUtils(object): |
| 163 | 163 |
self.logger.error("Found multiple rpm files for given package in rpm directory.Unable to determine the rpm file for package:"+package)
|
| 164 | 164 |
return None |
| 165 | 165 |
|
| 166 |
- def buildCoreToolChainPackages(self): |
|
| 166 |
+ def buildCoreToolChainPackages(self, listBuildOptionPackages, pkgBuildOptionFile): |
|
| 167 | 167 |
self.logger.info("Building core tool chain packages.....")
|
| 168 | 168 |
chrootID=None |
| 169 | 169 |
try: |
| ... | ... |
@@ -184,7 +184,7 @@ class ToolChainUtils(object): |
| 184 | 184 |
raise Exception("creating chroot failed")
|
| 185 | 185 |
self.installToolChainRPMS(chrootID) |
| 186 | 186 |
pkgUtils.adjustGCCSpecs(package, chrootID, destLogPath) |
| 187 |
- pkgUtils.buildRPMSForGivenPackage(package, chrootID,destLogPath) |
|
| 187 |
+ pkgUtils.buildRPMSForGivenPackage(package, chrootID, listBuildOptionPackages, pkgBuildOptionFile, destLogPath) |
|
| 188 | 188 |
chrUtils.destroyChroot(chrootID) |
| 189 | 189 |
chrootID=None |
| 190 | 190 |
self.logger.info("Successfully built toolchain")
|
| ... | ... |
@@ -209,10 +209,10 @@ class ToolChainUtils(object): |
| 209 | 209 |
rpmFile=self.findRPMFileInGivenLocation(package, constants.prevPublishRPMRepo) |
| 210 | 210 |
if rpmFile is None: |
| 211 | 211 |
if package == "util-linux-devel": |
| 212 |
- self.logger.info("No old verion of util-linux-devel exists, skip until the new version is built")
|
|
| 212 |
+ self.logger.info("No old version of util-linux-devel exists, skip until the new version is built")
|
|
| 213 | 213 |
continue |
| 214 | 214 |
if package == "flex-devel": |
| 215 |
- self.logger.info("No old verion of flex-devel exists, skip until the new version is built")
|
|
| 215 |
+ self.logger.info("No old version of flex-devel exists, skip until the new version is built")
|
|
| 216 | 216 |
continue |
| 217 | 217 |
self.logger.error("Unable to find rpm "+ package +" in current and previous versions")
|
| 218 | 218 |
raise Exception("Input Error")
|
| ... | ... |
@@ -5,13 +5,15 @@ import ThreadPool |
| 5 | 5 |
|
| 6 | 6 |
class WorkerThread(threading.Thread): |
| 7 | 7 |
|
| 8 |
- def __init__(self,event,name,mapPackageToCycle,listAvailableCyclicPackages,logger): |
|
| 8 |
+ def __init__(self,event,name,mapPackageToCycle,listAvailableCyclicPackages,logger,listBuildOptionPackages,pkgBuildOptionFile): |
|
| 9 | 9 |
threading.Thread.__init__(self) |
| 10 | 10 |
self.statusEvent=event |
| 11 | 11 |
self.name=name |
| 12 | 12 |
self.mapPackageToCycle=mapPackageToCycle |
| 13 | 13 |
self.listAvailableCyclicPackages=listAvailableCyclicPackages |
| 14 | 14 |
self.logger=logger |
| 15 |
+ self.listBuildOptionPackages=listBuildOptionPackages |
|
| 16 |
+ self.pkgBuildOptionFile=pkgBuildOptionFile |
|
| 15 | 17 |
|
| 16 | 18 |
def run(self): |
| 17 | 19 |
buildThreadFailed=False |
| ... | ... |
@@ -23,7 +25,7 @@ class WorkerThread(threading.Thread): |
| 23 | 23 |
if pkg is None: |
| 24 | 24 |
break |
| 25 | 25 |
self.logger.info("Thread "+self.name+" is building package:"+ pkg)
|
| 26 |
- pkgBuilder = PackageBuilder(self.mapPackageToCycle,self.listAvailableCyclicPackages,"build-"+pkg) |
|
| 26 |
+ pkgBuilder = PackageBuilder(self.mapPackageToCycle,self.listAvailableCyclicPackages,self.listBuildOptionPackages,self.pkgBuildOptionFile,"build-"+pkg) |
|
| 27 | 27 |
t = threading.Thread(target=pkgBuilder.buildPackageThreadAPI,args=(pkg,outputMap,pkg)) |
| 28 | 28 |
t.start() |
| 29 | 29 |
t.join() |
| ... | ... |
@@ -51,4 +53,4 @@ class WorkerThread(threading.Thread): |
| 51 | 51 |
|
| 52 | 52 |
|
| 53 | 53 |
|
| 54 |
- |
|
| 55 | 54 |
\ No newline at end of file |
| 55 |
+ |
| ... | ... |
@@ -27,7 +27,7 @@ def main(): |
| 27 | 27 |
parser.add_option("-z", "--top-dir-path", dest="topDirPath", default="/usr/src/photon")
|
| 28 | 28 |
parser.add_option("-j", "--json-file", dest="inputJSONFile", default="../../common/data/build_install_options_all.json")
|
| 29 | 29 |
parser.add_option("-b", "--build-root-path", dest="buildRootPath", default="/mnt")
|
| 30 |
- parser.add_option("-t", "--threads", dest="buildThreads", default=1, type="int", help="Numbeer of working threads")
|
|
| 30 |
+ parser.add_option("-t", "--threads", dest="buildThreads", default=1, type="int", help="Number of working threads")
|
|
| 31 | 31 |
parser.add_option("-m", "--tool-chain-stage", dest="toolChainStage", default="None")
|
| 32 | 32 |
parser.add_option("-c", "--pullsources-config", dest="pullsourcesConfig", default="pullsources.conf")
|
| 33 | 33 |
parser.add_option("-d", "--dist", dest="dist", default="")
|
| ... | ... |
@@ -37,6 +37,7 @@ def main(): |
| 37 | 37 |
parser.add_option("-u", "--enable-rpmcheck", dest="rpmCheck", default=False, action ="store_true")
|
| 38 | 38 |
parser.add_option("-a", "--source-rpm-path", dest="sourceRpmPath", default="../../stage/SRPMS")
|
| 39 | 39 |
parser.add_option("-w", "--pkginfo-file", dest="pkgInfoFile", default="../../common/data/pkg_info.json")
|
| 40 |
+ parser.add_option("-g", "--pkg-build-option-file", dest="pkgBuildOptionFile", default="../../common/data/pkg_build_options.json")
|
|
| 40 | 41 |
|
| 41 | 42 |
(options, args) = parser.parse_args() |
| 42 | 43 |
cmdUtils=CommandUtils() |
| ... | ... |
@@ -66,7 +67,9 @@ def main(): |
| 66 | 66 |
|
| 67 | 67 |
if not os.path.isfile(options.inputJSONFile) and not options.installPackage: |
| 68 | 68 |
logger.error("Given JSON File is not a file:"+options.inputJSONFile)
|
| 69 |
- errorFlag = True |
|
| 69 |
+ errorFlag = True |
|
| 70 |
+ if not os.path.isfile(options.pkgBuildOptionFile): |
|
| 71 |
+ logger.warning("Given JSON File is not a file:"+options.pkgBuildOptionFile)
|
|
| 70 | 72 |
|
| 71 | 73 |
if options.inputRPMSPath is not None and not os.path.isdir(options.inputRPMSPath): |
| 72 | 74 |
logger.error("Given input RPMS Path is not a directory:"+options.publishRPMSPath)
|
| ... | ... |
@@ -104,6 +107,8 @@ def main(): |
| 104 | 104 |
logger.info("JSON File :" + options.inputJSONFile)
|
| 105 | 105 |
else: |
| 106 | 106 |
logger.info("Package to build:"+package)
|
| 107 |
+ |
|
| 108 |
+ listBuildOptionPackages = get_packages_with_build_options(options.pkgBuildOptionFile) |
|
| 107 | 109 |
|
| 108 | 110 |
try: |
| 109 | 111 |
constants.initialize(options) |
| ... | ... |
@@ -120,9 +125,9 @@ def main(): |
| 120 | 120 |
pkgManager = PackageManager() |
| 121 | 121 |
pkgManager.buildToolChainPackages(options.buildThreads) |
| 122 | 122 |
elif options.installPackage: |
| 123 |
- buildAPackage(package, options.buildThreads) |
|
| 123 |
+ buildAPackage(package, listBuildOptionPackages, options.pkgBuildOptionFile, options.buildThreads) |
|
| 124 | 124 |
else: |
| 125 |
- buildPackagesFromGivenJSONFile(options.inputJSONFile, options.buildOption,logger, options.buildThreads) |
|
| 125 |
+ buildPackagesFromGivenJSONFile(options.inputJSONFile, options.buildOption, listBuildOptionPackages, options.pkgBuildOptionFile, logger, options.buildThreads) |
|
| 126 | 126 |
except Exception as e: |
| 127 | 127 |
logger.error("Caught an exception")
|
| 128 | 128 |
logger.error(str(e)) |
| ... | ... |
@@ -210,13 +215,13 @@ def buildSourcesList(specPath, yamlDir, singleFile=False): |
| 210 | 210 |
if singleFile: |
| 211 | 211 |
yamlFile.close() |
| 212 | 212 |
|
| 213 |
-def buildAPackage(package, buildThreads): |
|
| 213 |
+def buildAPackage(package, listBuildOptionPackages, pkgBuildOptionFile, buildThreads): |
|
| 214 | 214 |
listPackages=[] |
| 215 | 215 |
listPackages.append(package) |
| 216 | 216 |
pkgManager = PackageManager() |
| 217 |
- pkgManager.buildPackages(listPackages, buildThreads) |
|
| 217 |
+ pkgManager.buildPackages(listPackages, listBuildOptionPackages, pkgBuildOptionFile, buildThreads) |
|
| 218 | 218 |
|
| 219 |
-def buildPackagesFromGivenJSONFile(inputJSONFile,buildOption,logger, buildThreads): |
|
| 219 |
+def buildPackagesFromGivenJSONFile(inputJSONFile, buildOption, listBuildOptionPackages, pkgBuildOptionFile, logger, buildThreads): |
|
| 220 | 220 |
listPackages = get_all_package_names(inputJSONFile) |
| 221 | 221 |
|
| 222 | 222 |
listPackagesToBuild=[] |
| ... | ... |
@@ -226,7 +231,20 @@ def buildPackagesFromGivenJSONFile(inputJSONFile,buildOption,logger, buildThread |
| 226 | 226 |
logger.info("List of packages to build:")
|
| 227 | 227 |
logger.info(listPackagesToBuild) |
| 228 | 228 |
pkgManager = PackageManager() |
| 229 |
- pkgManager.buildPackages(listPackagesToBuild, buildThreads) |
|
| 229 |
+ pkgManager.buildPackages(listPackagesToBuild, listBuildOptionPackages, pkgBuildOptionFile, buildThreads) |
|
| 230 |
+ |
|
| 231 |
+def get_packages_with_build_options(pkg_build_options_file): |
|
| 232 |
+ packages = [] |
|
| 233 |
+ if os.path.exists(pkg_build_options_file): |
|
| 234 |
+ jsonData = open(pkg_build_options_file) |
|
| 235 |
+ pkg_build_option_json = json.load(jsonData, object_pairs_hook=collections.OrderedDict) |
|
| 236 |
+ jsonData.close() |
|
| 237 |
+ pkgs_sorted = pkg_build_option_json.items() |
|
| 238 |
+ for pkg in pkgs_sorted: |
|
| 239 |
+ p = pkg[0].encode('utf-8')
|
|
| 240 |
+ packages.append(str(p)) |
|
| 241 |
+ |
|
| 242 |
+ return packages |
|
| 230 | 243 |
|
| 231 | 244 |
def get_all_package_names(build_install_option): |
| 232 | 245 |
base_path = os.path.dirname(build_install_option) |