support/package-builder/constants.py
b5e09fac
 from Logger import Logger
2820c61a
 
 class constants(object):
87815216
     specPath = ""
     sourcePath = ""
     rpmPath = ""
     logPath = ""
     topDirPath = ""
     buildRootPath = "/mnt"
     prevPublishRPMRepo = ""
     prevPublishXRPMRepo = ""
     pullsourcesConfig = ""
     buildPatch = False
     inputRPMSPath = ""
     rpmCheck = False
     sourceRpmPath = ""
     publishBuildDependencies = False
     packageWeightsPath = None
     dockerUnixSocket = "/var/run/docker.sock"
     userDefinedMacros = {}
accc8120
     dist = None
     buildNumber = None
     releaseVersion = None
     katBuild = None
     testForceRPMS = []
     tmpDirPath = "/dev/shm"
085306ae
     buildOptions = {}
7418d2bf
 
87815216
     noDepsPackageList = [
7418d2bf
         "texinfo",
         "bzip2",
         "bzip2-libs",
         "gettext",
         "nspr",
         "bison",
         "go",
         "sqlite",
         "sqlite-devel",
         "sqlite-libs"]
 
fb300e7c
     # These packages will be built in first order as build-core-toolchain stage
87815216
     listCoreToolChainPackages = [
21a45f16
         "filesystem",
55dba468
         "linux-api-headers",
         "glibc",
         "zlib",
         "file",
         "binutils",
         "gmp",
         "mpfr",
         "mpc",
         "libgcc",
         "libstdc++",
         "libgomp",
         "gcc",
         "pkg-config",
         "ncurses",
         "readline",
         "bash"]
 
fb300e7c
     # These packages will be built in a second stage to replace publish RPMS
87815216
     listToolChainPackages = [
21a45f16
         "filesystem",
55dba468
         "linux-api-headers",
         "glibc",
         "zlib",
         "file",
         "binutils",
         "gmp",
         "mpfr",
         "mpc",
         "gcc",
         "pkg-config",
         "ncurses",
         "bash",
         "bzip2",
         "sed",
         "procps-ng",
         "coreutils",
         "m4",
         "grep",
         "readline",
         "diffutils",
         "gawk",
         "findutils",
         "gettext",
         "gzip",
         "make",
         "patch",
         "util-linux",
         "tar",
         "xz",
         "libtool",
         "flex",
         "bison",
         "lua",
         "popt",
         "nspr",
7418d2bf
         "nspr-devel",
9874e684
         "sqlite",
55dba468
         "nss",
fb300e7c
         "elfutils",
         "expat",
         "libffi",
55dba468
         "libpipeline",
         "gdbm",
         "perl",
         "texinfo",
         "autoconf",
         "automake",
fb300e7c
         "openssl",
7418d2bf
         "openssl-devel",
fb300e7c
         "python2",
b3ee0bbc
         "libdb",
fb300e7c
         "rpm",
55dba468
         "groff",
         "man-pages",
b3ee0bbc
         "cpio"]
55dba468
 
fb300e7c
     # List or RPMS that will be installed in a chroot prior to build each
7f9d2e12
     # package. This list should be ordered by install order. On a stage1
     # and stage2 published rpms will/might be used after stage2 only local
     # RPMS will be used
87815216
     listToolChainRPMsToInstall = [
21a45f16
         "filesystem",
55dba468
         "linux-api-headers",
         "glibc",
         "glibc-devel",
42e8b7da
         "glibc-iconv",
         "glibc-tools",
55dba468
         "zlib",
         "zlib-devel",
a8ab4187
         "file-libs",
55dba468
         "file",
         "binutils",
         "binutils-devel",
         "gmp",
         "gmp-devel",
         "mpfr",
         "mpfr-devel",
         "mpc",
         "libgcc",
         "libgcc-devel",
         "libstdc++",
         "libstdc++-devel",
         "libgomp",
         "libgomp-devel",
         "gcc",
         "pkg-config",
         "ncurses",
f5cac196
         "ncurses-libs",
         "ncurses-devel",
55dba468
         "bash",
         "bzip2",
7fbd3a1e
         "bzip2-libs",
fb300e7c
         "bzip2-devel",
55dba468
         "sed",
         "procps-ng",
         "coreutils",
         "m4",
         "grep",
         "readline",
         "diffutils",
         "gawk",
         "findutils",
         "gettext",
         "gzip",
         "make",
         "patch",
         "util-linux",
42e8b7da
         "util-linux-libs",
55dba468
         "util-linux-devel",
         "tar",
         "xz",
7fbd3a1e
         "xz-libs",
55dba468
         "libtool",
         "flex",
         "flex-devel",
         "bison",
         "readline-devel",
         "lua",
         "lua-devel",
         "popt",
         "popt-devel",
         "nspr",
7fbd3a1e
         "nspr-devel",
9874e684
         "sqlite",
fb300e7c
         "sqlite-libs",
55dba468
         "nss",
7fbd3a1e
         "nss-libs",
55dba468
         "nss-devel",
         "elfutils-libelf",
         "elfutils",
         "elfutils-libelf-devel",
         "elfutils-devel",
         "expat",
7fbd3a1e
         "expat-libs",
55dba468
         "libffi",
         "libpipeline",
         "gdbm",
         "perl",
         "texinfo",
         "autoconf",
         "automake",
         "openssl",
         "openssl-devel",
         "python2",
         "python2-libs",
         "python2-devel",
         "libcap",
ec017e0f
         "libdb",
         "libdb-devel",
55dba468
         "rpm",
         "rpm-build",
         "rpm-devel",
fb300e7c
         "rpm-libs",
55dba468
         "groff",
         "man-pages",
fb300e7c
         "cpio",
b3ee0bbc
         "go"]
fb300e7c
 
87815216
     perPackageToolChain = dict.fromkeys(
         ["openjdk8",
          "openjdk8-doc",
          "openjdk8-src",
          "openjdk8-sample",
342710b6
          "openjre8",
          "openjdk9",
          "openjdk9-doc",
          "openjdk9-src",
d7f4baf3
          "openjre9",
          "openjdk10",
          "openjdk10-doc",
          "openjdk10-src",
          "openjre10"],
8a2c2c4e
           {
           "x86_64":[
87815216
             "icu-devel",
342710b6
             "cups",
             "cups-devel",
             "xorg-proto-devel",
             "libXtst",
             "libXtst-devel",
             "libXfixes",
             "libXfixes-devel",
             "libXi",
             "libXi-devel",
87815216
             "openjdk",
             "openjre",
             "icu",
             "alsa-lib",
             "alsa-lib-devel",
             "xcb-proto",
             "libXdmcp-devel",
             "libXau-devel",
             "util-macros",
             "xtrans",
             "libxcb-devel",
             "proto",
             "libXdmcp",
             "libxcb",
             "libXau",
             "xtrans-devel",
             "libX11",
             "libX11-devel",
             "libXext",
             "libXext-devel",
             "libICE-devel",
             "libSM",
             "libICE",
             "libSM-devel",
             "libXt",
             "libXmu",
             "libXt-devel",
             "libXmu-devel",
             "libXrender",
8a2c2c4e
             "libXrender-devel"],
          "aarch64":[
             "icu-devel",
             "openjdk",
             "openjre",
             "icu",
             "alsa-lib",
             "alsa-lib-devel",
             "xcb-proto",
             "libXdmcp-devel",
             "libXau-devel",
             "util-macros",
             "xtrans",
             "libxcb-devel",
             "proto",
             "libXdmcp",
             "libxcb",
             "libXau",
             "xtrans-devel",
             "libX11",
             "libX11-devel",
             "libXext",
             "libXext-devel",
             "libICE-devel",
             "libSM",
             "libICE",
             "libSM-devel",
             "libXt",
             "libXmu",
             "libXt-devel",
             "libXmu-devel",
             "libXrender",
             "libXrender-devel"]
           })
 
     perPackageToolChain["apache-maven"] = {
           "x86_64":["apache-maven"],
           "aarch64":["apache-maven"]
           }
 
fb300e7c
     # List of RPMs which are not published. They will be created during the
     # build process
87815216
     listOfRPMsProvidedAfterBuild = [
fb300e7c
         "util-linux-devel",
         "flex-devel",
7fbd3a1e
         "nspr-devel",
42e8b7da
         "glibc-iconv",
         "glibc-tools",
7fbd3a1e
         "bzip2-libs",
         "expat-libs",
f5cac196
         "ncurses-libs",
42e8b7da
         "util-linux-libs",
7fbd3a1e
         "nss-libs",
         "xz-libs",
9874e684
         "sqlite",
fb300e7c
         "sqlite-libs",
a8ab4187
         "file-libs",
fb300e7c
         "rpm-libs"]
55dba468
 
fb300e7c
     # List of packages that will be installed in addition for each
     # package to make check
87815216
     listMakeCheckRPMPkgtoInstall = [
b5e09fac
         "python2",
         "python2-devel",
         "python2-libs",
         "python2-tools",
202dd1d6
         "PyYAML",
         "libyaml",
b5e09fac
         "libffi",
         "python-setuptools",
14b9b3bb
         "python3-setuptools",
b5e09fac
         "ca-certificates",
         "linux",
         "createrepo",
         "sudo",
         "ruby",
         "curl",
         "pcre-devel",
         "boost-devel",
         "which",
         "go",
         "e2fsprogs-devel",
         "shadow",
         "check",
         "libacl-devel",
         "device-mapper",
         "wget",
         "tar",
         "pkg-config",
         "git",
         "openssl",
2a807a3e
         "openssl-devel",
b5e09fac
         "net-tools",
         "less",
9874e684
         "iana-etc",
b5e09fac
         "yum-metadata-parser",
         "yum",
ec017e0f
         "libdb",
b5e09fac
         "rpm-devel",
         "rpm",
         "libxml2",
         "python-xml",
14b9b3bb
         "python3-xml",
b5e09fac
         "libacl",
         "tzdata",
2a807a3e
         "libgcrypt-devel",
98f63cc4
         "Linux-PAM",
99f94a68
         "unzip",
         "systemd-devel",
a9c2129a
         "gnupg",
87815216
         "ncurses-terminfo"]
a5e4be9f
 
87815216
     listReInstallPackages = [
7418d2bf
         "go"]
 
ba2f92e6
     # List of packages that requires privileged docker
     # to run make check.
87815216
     listReqPrivilegedDockerForTest = [
83bd478f
         "elfutils", # SYS_PTRACE
96a6c448
         "gdb",
c9535d05
         "glibc",
         "tar"]
ba2f92e6
 
45c9260c
     # .spec file might contain lines such as
     # Requires(post):/sbin/useradd
     # Build system should interpret it as
     # Requires: shadow
87815216
     providedBy = {
7f9d2e12
         "/usr/sbin/useradd":"shadow",
         "/usr/sbin/groupadd":"shadow",
         "/usr/bin/which":"which",
         "/bin/sed":"sed"
45c9260c
     }
 
0f1fdc4b
     # list of spec files to skip for parsing for given arch
87815216
     skipSpecsForArch = {
4dab0a8b
         "x86_64":[
a2cf8f06
             "u-boot-rpi3.spec",
             "openjdk8_aarch64.spec"
4dab0a8b
             ],
0f1fdc4b
         "aarch64":[
             # fakeroot-ng does not support aarch64
             "fakeroot-ng.spec",
             # ipxe does not support aarch64
             "ipxe.spec",
             # kexec-tools for arm64 does not support fpic
             "kexec-tools.spec",
             # no TXT/tboot on arm64
             "tboot.spec",
             # backward-cpp does not support amd64
             "backward-cpp.spec",
             "envoy.spec",
             # only generic linux is for arm64
             "linux-esx.spec",
             "linux-secure.spec",
c01f1bff
             "linux-aws.spec",
0f1fdc4b
             # only linux-secure supports aufs
             "aufs-util.spec",
             # open-vm-tools does not support aarch64
             "open-vm-tools.spec",
9b9c0eac
             # syslinux does not support aarch64
             "syslinux.spec",
0f1fdc4b
             # TODO: mariadb build hangs on amd64
             "mariadb.spec",
             # TODO: mysql fails on amd64 with fpic
             "mysql.spec",
             # irqbalance for arm64 ?
             "irqbalance.spec",
7e05c54b
             # openjdk8.spec is for x86_64 arch
0f1fdc4b
             "openjdk8.spec",
7e05c54b
             # dashboard failed to build libxslt during `npm install`
0f1fdc4b
             "kubernetes-dashboard.spec",
7e05c54b
             # test issue (java null pointer exception) before compilation
0f1fdc4b
             "wavefront-proxy.spec",
             # sysdig for aarch64 requires luajit, skip it and falco
             # https://github.com/draios/sysdig/issues/833
             "sysdig.spec",
9b9c0eac
             "falco.spec",
9dd420fe
             # one more fail, not investigated yet
             "log4cpp.spec",
9b9c0eac
 
             # VIVACE packages
             # need to update to mono-4.5
             "mono.spec",
             "banshee.spec",
             "dbus-sharp.spec",
             "dbus-sharp-glib.spec",
             "gnome-keyring-sharp.spec",
             "gnome-sharp.spec",
             "gtk-sharp2.spec",
             "mono-addins.spec",
             "monodevelop.spec",
             "nuget.spec",
             "nunit.spec",
             "pinta.spec",
             "taglib-sharp.spec",
             "tomboy.spec",
             "totem.spec",
             "webkit-sharp.spec",
             # compilation issues with libwebkit
             "libwebkit.spec",
             "xf86-video-vmware.spec",
             "xf86-video-intel.spec",
             "xf86-input-vmmouse.spec",
             # does not recognize aarch64
             "thunderbird.spec",
             #
             "open-vm-tools-vivace.spec"
 
0f1fdc4b
         ]
     }
 
2820c61a
     @staticmethod
accc8120
     def setSpecPath(specPath):
         constants.specPath = specPath
 
     @staticmethod
     def setSourcePath(sourcePath):
         constants.sourcePath = sourcePath
 
     @staticmethod
     def setRpmPath(rpmPath):
         constants.rpmPath = rpmPath
 
     @staticmethod
     def setSourceRpmPath(sourceRpmPath):
         constants.sourceRpmPath = sourceRpmPath
 
     @staticmethod
     def setTopDirPath(topDirPath):
         constants.topDirPath = topDirPath
 
     @staticmethod
     def setLogPath(logPath):
         constants.logPath = logPath
 
     @staticmethod
     def setPrevPublishRPMRepo(prevPublishRPMRepo):
         constants.prevPublishRPMRepo = prevPublishRPMRepo
 
     @staticmethod
     def setPrevPublishXRPMRepo(prevPublishXRPMRepo):
         constants.prevPublishXRPMRepo = prevPublishXRPMRepo
 
     @staticmethod
     def setBuildRootPath(buildRootPath):
         constants.buildRootPath = buildRootPath
 
     @staticmethod
     def setPullSourcesConfig(pullSourcesConfig):
         constants.pullsourcesConfig = pullSourcesConfig
 
     @staticmethod
     def setInputRPMSPath(inputRPMSPath):
         constants.inputRPMSPath = inputRPMSPath
 
     @staticmethod
     def setRPMCheck(rpmCheck):
         constants.rpmCheck = rpmCheck
 
     @staticmethod
     def setRpmCheckStopOnError(rpmCheckStopOnError):
         constants.rpmCheckStopOnError = rpmCheckStopOnError
 
     @staticmethod
     def setPublishBuildDependencies(publishBuildDependencies):
         constants.publishBuildDependencies = publishBuildDependencies
 
     @staticmethod
     def setPackageWeightsPath(packageWeightsPath):
         constants.packageWeightsPath = packageWeightsPath
 
     @staticmethod
     def setDist(dist):
         constants.dist = dist
 
     @staticmethod
     def setBuildNumber(buildNumber):
         constants.buildNumber = buildNumber
 
     @staticmethod
     def setReleaseVersion(releaseVersion):
         constants.releaseVersion = releaseVersion
 
     @staticmethod
     def setKatBuild(katBuild):
         constants.katBuild = katBuild
 
     @staticmethod
     def initialize():
b5e09fac
         if constants.rpmCheck:
87815216
             constants.testLogger = Logger.getLogger("MakeCheckTest", constants.logPath)
             constants.addMacro("with_check", "1")
343d89e8
         else:
87815216
             constants.addMacro("with_check", "0")
343d89e8
 
accc8120
         # adding distribution rpm macro
         if constants.dist is not None:
             constants.addMacro("dist", constants.dist)
343d89e8
 
accc8120
         # adding buildnumber rpm macro
         if constants.buildNumber is not None:
             constants.addMacro("photon_build_number", constants.buildNumber)
343d89e8
 
accc8120
         # adding releasenumber rpm macro
         if constants.releaseVersion is not None:
             constants.addMacro("photon_release_version", constants.releaseVersion)
343d89e8
 
accc8120
         if constants.katBuild is not None:
             constants.addMacro("kat_build", constants.katBuild)
9b2f8b85
 
e2512398
     @staticmethod
     def setTestForceRPMS(listsPackages):
87815216
         constants.testForceRPMS = listsPackages
343d89e8
 
     @staticmethod
     def addMacro(macroName, macroValue):
87815216
         constants.userDefinedMacros[macroName] = macroValue
085306ae
 
     @staticmethod
     def setBuidOptions(options):
         constants.buildOptions = options