Compare commits

...

32 Commits
v2 ... v8

Author SHA1 Message Date
Brett T. Warden b628caf931 Add Config fields for pkey and signature macros 2024-04-11 12:37:09 -07:00
Brett T. Warden 8142032e7c Fix escaping to satisfy flake 2024-04-11 12:22:59 -07:00
Brett T. Warden 5a302d6c91 Check GPG package signatures during build
Add gpg commands to the specfile so we verify the package signature
during every rpmbuild. Also ensure that the signature key ID matches
what we expect.
2024-04-11 12:22:59 -07:00
William Douglas f56f1fa18d Don't autodetect xz build requirements
Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-29 15:10:55 -07:00
Brett T. Warden 0c408e7089 Yell louder about known bad signing keys 2024-03-29 11:43:38 -07:00
Brett T. Warden 5471f10f61 Implement blocklist for signing key IDs
Implement a blocklist, keyid_blocklist. If a keyid (without leading 0x)
in this file matches the signing key for a release, terminate autospec
with an error.

This is intended as a mechanism to block building releases signed with a
known compromised key.
2024-03-29 11:43:38 -07:00
William Douglas c02b2fec6a Add etc_files log
When a package has content in /etc, it is removed silently, this
change adds an etc_files log file in git that shows what files were in
/etc that weren't packaged.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-22 14:11:36 -07:00
William Douglas 312e1714f2 Update failed patterns and cmake patterns for qt6
Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-22 12:42:28 -07:00
William Douglas 652616b1b6 Add path handling for qt6
Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-22 12:42:28 -07:00
William Douglas f4bef72a70 Add handling for multiline find_package
Previously support for cmake's find_package parsing was only able to
handle single line entries. This change adds support for multiline
versions and allows for module namespacing (currently qt6 and kf6
support is available).

The change for cmake_modules shows this namespacing in use.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-15 14:20:20 -07:00
William Douglas 6095ef84a0 Migrate configs for qt6
Partial migration of patterns to qt6 for failed_commands and
qt_modules. Still more changes needed here but this is a start.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-15 14:20:20 -07:00
William Douglas fa36e95657 Stop using the %qmake macro
Rather than using %qmake, add the definition into autospec. This is
done to allow for using make_command to specify which version of qmake
to use.

Note for now qmake6 is not in PATH and needs a build_prepend addition.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-15 14:20:20 -07:00
William Douglas 3d985ebaf9 Allow optimization level specification in the R pattern
Signed-off-by: William Douglas <william.douglas@intel.com>
2024-03-11 16:25:34 -07:00
Brett T. Warden 1ab68caa3d Search licenses/*.txt
We search for licenses as *.txt in subdirectories "LICENSES" and "license". Also search "licenses".
2024-03-04 16:21:34 -08:00
Brett T. Warden e738c511eb Add support for non-tarball bz2 archives
Some projects require additional bz2 downloads that are single
compressed files, not tar archives. Detect and extract those with
appropriate bz2 tools instead of tar.

For a given entry like this:
ARCHIVES = https://example.com/download/foo.dat.bz2 src/data

...upstream file is downloaded to:
builddir/build/SOURCES/foo.dat.bz2

...initially extracted as:
builddir/build/BUILD/foo.dat/foo.dat

...and finally copied to
builddir/build/BUILD/<pkg>/src/data/foo.dat
2024-02-26 09:12:10 -08:00
William Douglas da8b975a56 Add --host to autogen pattern for apx
autogen uses autotools and also needs a --host parameter to build apx.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-02-07 14:06:26 -08:00
William Douglas 213bb01a2f Make use of GOAMD64
Add export for GOAMD64 and modify where needed in order to support
building optimized binaries using golang.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-02-05 13:14:23 -08:00
William Douglas 25ad860d7f Add handling for APX configure patterns
Support APX package builds using the configure patterns (needed to
handle cross compilation via --host option).

Also fixup some flag usage inconsistencies.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-02-05 10:55:39 -08:00
William Douglas 750e50d160 Add support for building APX binaries
Add early support for APX builds in autospec. This change also makes
APX disabled by default for now but may revert back to enabled by
default in the future. The APX prefix will be /VA as the arch flag is
not yet finalized. This also may change in the future though for now
there are no plans to move it.

Currently autotools builds are unable to use this as it detects as a
cross compilation.

Currently only C using GCC is supported.

This change also reworks how R language optimized binaries are built
and distributed. They will now work as all the other tooling does with
the /VX prefix.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-02-03 07:25:59 -08:00
William Douglas fae1327921 Correct configure pattern LDFLAGS setting
Update LDFLAGS to use the intermediate flags and be set the same as
the other avx2 flags.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-01-23 12:23:35 -08:00
William Douglas 1eaf8cd10c Rework avx2/512 flag passing
Instead of hard coding flags in each use, add global constants that
are substituted on use (removes a little copypasta and fixes up some
flags that were unintentionally different between build systems).

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-01-18 10:07:48 -08:00
William Douglas 8c949329a8 Update regex for reconfigure detection
Update regex as grep doesn't need escape slashes and python hates
them.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-01-18 10:07:48 -08:00
Brett T. Warden 537da873db Add unit tests for allow_exe 2024-01-16 14:29:07 -08:00
Brett T. Warden e664610c0e Add a mechanism to automatically exclude Windows executables
Some packages, especially PIP wheels, install Windows executables.
Introduce an option, allow_exe, with which to permit installing those
executables. Otherwise, explicitly delete them so they're not
inadvertently installed via wildcards later.
2024-01-16 13:59:27 -08:00
Brett T. Warden ab27b0e7ad Add use_apx flag to options.conf
Set value True by default, but other added options still default to
false.

diff --git a/options.conf b/options.conf
index ed481d682825..127ec6e6ffaa 100644
--- a/options.conf
+++ b/options.conf
@@ -59,6 +59,16 @@ server = false
 skip_tests = false
 # add .so files to the lib package instead of dev
 so_to_lib = false
+# configure build for apx
+use_apx = true
+# configure build for avx2
+use_avx2 = false
+# configure build for avx512
+use_avx512 = false
+# add clang flags
+use_clang = false
+# configure build for lto
+use_lto = false
 # require package verification for build
 verify_required = false
2024-01-04 11:49:16 -08:00
William Douglas c1050fe40c Add more bits to the blacklist
A poorly parsed license file caused these to need to be added.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-12-04 15:28:00 -08:00
William Douglas e661f3a625 Update test function assert call name
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-11-13 10:08:32 -08:00
William Douglas 874204ec31 Correct tests based on warnings
Previous code would emit:
SyntaxWarning: invalid escape sequence

Correct this by removing the escapes as they are not necessary.

Also add a missing buildreq that is detected correctly after the
fix.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-11-13 10:08:32 -08:00
Brett T. Warden 80d20893c2 Stop redirecting libproxy dep to pacrunner-dev
We fixed the real libproxy a while back to query pacrunner itself via
dbus, so pacrunner no longer provides a libproxy shim, nor the
pacrunner-dev package.
2023-11-13 09:21:01 -08:00
William Douglas 250a6667eb Add global requires ban handling logic
Some packages should not be able to be added to any subpkg. Add
handling for this case.

Also as pypi-nose is no longer usable so ban it from being added as a
dependency.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-10-20 12:23:35 -07:00
William Douglas c644c18072 Update license bans
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-10-18 13:35:42 -07:00
William Douglas 94f0e995b2 Ban setuptools submodule that is no longer needed
The submodule's function is now incorporated into setuptools so
banlist it.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-10-18 13:35:42 -07:00
18 changed files with 842 additions and 268 deletions
+40 -7
View File
@@ -268,10 +268,13 @@ class Requirements(object):
def __init__(self, url):
"""Initialize Default requirements settings."""
self.banned_requires = {None: set(["futures",
"configparser",
"typing",
"ipaddress"])}
self.banned_anywhere_requires = set(["futures",
"configparser",
"typing",
"ipaddress",
"pypi-nose",
"pypi(nose)"])
self.banned_requires = {None: set()}
self.buildreqs = set()
self.buildreqs_cache = set()
self.requires = {None: set(), "pypi": set()}
@@ -293,7 +296,11 @@ class Requirements(object):
"configparser",
"setuptools_scm[toml]",
"typing",
"ipaddress"])
"ipaddress",
"pypi-nose",
"pypi(setuptools_scm_git_archive)",
"pypi(setuptools_changelog_shortener)",
"pypi(nose)"])
self.autoreconf_reqs = ["gettext-bin",
"automake-dev",
"automake",
@@ -346,6 +353,8 @@ class Requirements(object):
banned_requires = self.banned_requires[subpkg] = set()
if req in banned_requires:
return False
if req in self.banned_anywhere_requires:
return False
if req not in self.buildreqs and req not in packages and not override:
if req:
@@ -397,7 +406,7 @@ class Requirements(object):
if line.startswith('#'):
return
pat_reqs = [(r"AC_CHECK_FUNC\([tgetent]", ["ncurses-devel"]),
pat_reqs = [(r"AC_CHECK_FUNC([tgetent]", ["ncurses-devel"]),
("PROG_INTLTOOL", ["intltool"]),
("GETTEXT_PACKAGE", ["gettext", "perl(XML::Parser)"]),
("AM_GLIB_GNU_GETTEXT", ["gettext", "perl(XML::Parser)"]),
@@ -474,21 +483,45 @@ class Requirements(object):
def set_build_req(self, config):
"""Add build requirements based on the build pattern."""
def findpackage_parse_lines(self, fp_line, line_iter, cmake_modules):
"""Parse find_package multiline segment of the line_iter."""
qt6module = re.compile(r"^[^#]*find_package\(\s*\bQt6.*", re.I)
kf6module = re.compile(r"^[^#]*find_package\(\s*\bKF6.*", re.I)
ns = ''
if qt6module.search(fp_line):
ns = 'qt6'
elif kf6module.search(fp_line):
ns = 'kf6'
while True:
ln = next(line_iter).strip()
if not ln:
continue
modules = ln.strip(')').split(' ')
for module in modules:
if module:
if pkg := cmake_modules.get(f"{ns}.{module}"):
self.add_buildreq(pkg)
if ')' in ln:
break
def parse_cmake(self, filename, cmake_modules, conf32):
"""Scan a .cmake or CMakeLists.txt file for what's it's actually looking for."""
findpackage = re.compile(r"^[^#]*find_package\((\w+)\b.*\)", re.I)
findpackage_multiline = re.compile(r"^[^#]*find_package\((\w+)\b.*", re.I)
pkgconfig = re.compile(r"^[^#]*pkg_check_modules\s*\(\w+ (.*)\)", re.I)
pkg_search_modifiers = {'REQUIRED', 'QUIET', 'NO_CMAKE_PATH',
'NO_CMAKE_ENVIRONMENT_PATH', 'IMPORTED_TARGET'}
extractword = re.compile(r'(?:"([^"]+)"|(\S+))(.*)')
with util.open_auto(filename, "r") as f:
lines = f.readlines()
lines = iter(f.readlines())
for line in lines:
if match := findpackage.search(line):
module = match.group(1)
if pkg := cmake_modules.get(module):
self.add_buildreq(pkg)
elif findpackage_multiline.search(line):
self.findpackage_parse_lines(line, lines, cmake_modules)
if match := pkgconfig.search(line):
rest = match.group(1)
+19 -2
View File
@@ -266,6 +266,7 @@ KSMServerDBusInterface, plasma-workspace-dev
KSaneCore, ksanecore-dev
KScreenLocker, kscreenlocker-dev
KSysGuard, libksysguard-dev
KUserFeedback, kuserfeedback-dev
KWaylandServer, kwayland-server-dev
KWinDBusInterface, kwin-dev
KWinEffects, kwin-dev
@@ -288,7 +289,6 @@ LibIcal, libical-dev
LibKEduVocDocument, libkeduvocdocument-dev
LibKWorkspace, plasma-workspace-dev
LibKompareDiff2, libkomparediff2-dev
LibLZMA, xz-dev
LibNotificationManager, plasma-workspace-dev
LibObs, obs-studio-dev
LibTaskManager, plasma-workspace-dev
@@ -329,6 +329,7 @@ PerlLibs, perl
Phonon4Qt5, phonon-dev
Phonon4Qt5Experimental, phonon-dev
PkgConfig, pkg-config
PlasmaActivities, plasma-activities-dev
PlasmaPotdProvider, kdeplasma-addons-dev
PlasmaWaylandProtocols, plasma-wayland-protocols-dev
Png2Ico, extra-cmake-modules png2ico
@@ -346,7 +347,7 @@ Python3, python3-dev
PythonInterp, python3
PythonLibs, python3-dev
QGpgme, gpgme-dev gpgme-extras
QHelpGenerator, extra-cmake-modules qttools-dev
QHelpGenerator, extra-cmake-modules qt6tools-dev
QMobipocket, kdegraphics-mobipocket-dev
Qca-qt5, qca-qt5-dev
Qt3DTests, qt6base-dev
@@ -901,6 +902,19 @@ igsc, igsc-dev
json-c, json-c-dev
kColorPicker, kcolorpicker-dev
kImageAnnotator, kimageannotator-dev
kf6.Config, kconfig-dev
kf6.CoreAddons, kcoreaddons-dev
kf6.Crash, kcrash-dev
kf6.DBusAddons, kdbusaddons-dev
kf6.FileMetaData, kfilemetadata-dev
kf6.I18n, ki18n-dev
kf6.JobWidgets, kjobwidgets-dev
kf6.KIO, kio-dev
kf6.Notifications, knotifications-dev
kf6.Purpose, purpose-dev
kf6.Runner, krunner-dev
kf6.Service, kservice-dev
kf6.StatusNotifierItem, kstatusnotifieritem-dev
kim-api, kim-api-data
leveldb, leveldb-dev
libavif, libavif-dev
@@ -926,6 +940,9 @@ pugixml, pugixml-dev
pybind11, pypi(pybind11)
qt5xdg, libqtxdg-data
qt5xdgiconloader, libqtxdg-data
qt6.DBus, qt6base-dev
qt6.Gui, qt6base-dev
qt6.Widgets, qt6base-dev
qtxdg-tools, qtxdg-tools-data
rabbitmq-c, rabbitmq-c-dev
realsense2, librealsense-dev
+12 -2
View File
@@ -74,6 +74,7 @@ class Config(object):
self.extra_configure64 = ""
self.extra_configure_avx2 = ""
self.extra_configure_avx512 = ""
self.extra_configure_apx = ""
self.extra_configure_openmpi = ""
self.config_files = set()
self.parallel_build = " %{?_smp_mflags} "
@@ -114,12 +115,15 @@ class Config(object):
self.old_keyid = None
self.profile_payload = None
self.signature = None
self.signature_macro = None
self.pkey_macro = None
self.yum_conf = None
self.failed_pattern_dir = None
self.alias = None
self.failed_commands = {}
self.ignored_commands = {}
self.gems = {}
self.keyid_blocklist = {}
self.license_hashes = {}
self.license_translations = {}
self.license_blacklist = {}
@@ -153,6 +157,7 @@ class Config(object):
"broken_c++": "extend flags with '-std=gnu++98",
"cargo_vendor": "create vendor archive with cargo",
"use_lto": "configure build for lto",
"use_apx": "configure build for APX",
"use_avx2": "configure build for avx2",
"use_avx512": "configure build for avx512",
"keepstatic": "do not remove static libraries",
@@ -180,7 +185,8 @@ class Config(object):
"nodebug": "do not generate debuginfo for this package",
"openmpi": "configure build also for openmpi",
"server": "Package is only used by servers",
"no_glob": "Do not use the replacement pattern for file matching"
"no_glob": "Do not use the replacement pattern for file matching",
"allow_exe": "Allow Windows executables (*.exe, *.dll) to be packaged",
}
# simple_pattern_pkgconfig patterns
# contains patterns for parsing build.log for missing dependencies
@@ -600,6 +606,7 @@ class Config(object):
read_pattern_conf("license_blacklist", self.license_blacklist, list_format=True, path=path)
read_pattern_conf("qt_modules", self.qt_modules, path=path)
read_pattern_conf("cmake_modules", self.cmake_modules, path=path)
read_pattern_conf("keyid_blocklist", self.keyid_blocklist, list_format=True, path=path)
def parse_existing_spec(self, name):
"""Determine the old version, old patch list, old keyid, and cves from old spec file."""
@@ -875,7 +882,7 @@ class Config(object):
self.patches += self.read_conf_file(os.path.join(self.download_path, "series"))
pfiles = [("%s/%s" % (self.download_path, x.split(" ")[0])) for x in self.patches]
cmd = "grep -E \"(\+\+\+|\-\-\-).*((Makefile.am)|(aclocal.m4)|(configure.ac|configure.in))\" %s" % " ".join(pfiles) # noqa: W605
cmd = "grep -E \"(+++|---).*((Makefile.am)|(aclocal.m4)|(configure.ac|configure.in))\" %s" % " ".join(pfiles) # noqa: W605
if self.patches and call(cmd,
check=False,
stdout=subprocess.DEVNULL,
@@ -908,6 +915,9 @@ class Config(object):
content = self.read_conf_file(os.path.join(self.download_path, "configure_avx512"))
self.extra_configure_avx512 = " \\\n".join(content)
content = self.read_conf_file(os.path.join(self.download_path, "configure_apx"))
self.extra_configure_apx = " \\\n".join(content)
content = self.read_conf_file(os.path.join(self.download_path, "configure_openmpi"))
self.extra_configure_openmpi = " \\\n".join(content)
+97 -25
View File
@@ -3,7 +3,6 @@
# This file is sorted with LC_COLLATE=C
# Lines beginning with '#' are ignored.
# For patterns that start with '#', escape the '#' as '\#'.
'nose', pypi(nose)
'numpy', pypi(numpy)
'pexpect', pypi(pexpect)
-lEGL, mesa-dev
@@ -13,6 +12,7 @@
-lICE, pkgconfig(ice)
-lIlmThread, ilmbase-dev
-lSM, pkgconfig(sm)
-lTerminfo, ncurses-dev
-lX11, pkgconfig(x11)
-lXau, libXau-dev
-lXaw, pkgconfig(xaw)
@@ -76,7 +76,6 @@
-lkrb5, krb5-dev
-lldap, openldap-dev
-lldb, ldb-dev
-llzma, xz-dev
-llzo, lzo-dev
-lmagic, file-dev
-lmenu, ncurses-dev
@@ -97,15 +96,14 @@
-lpcap, libpcap-dev
-lpcre, pcre-dev
-lpopt, popt-dev
-lproxy, pacrunner-dev
-lrdmacm, rdma-core-dev
-lreadline, readline-dev
-lsecret, libsecret-dev
-lsecret, pkgconfig(libsecret-1)
-lsensors, lm-sensors-dev
-lsqlite3, sqlite-autoconf-dev
-lssh, libssh-dev
-lssl, openssl-dev
-lTerminfo, ncurses-dev
-ltermcap, ncurses-dev
-ltinfo, ncurses-dev
-ltinfow, ncurses-dev
@@ -131,6 +129,7 @@ Analitza, analitza-dev
Analitza5, analitza-dev
BABL, babl-dev
BISON, bison
BROTLI, brotli-dev
BZ2_bzCompress, bzip2-dev
BZip2, bzip2-dev
Berkeley DB, db
@@ -140,6 +139,7 @@ Boost, boost-dev
Breeze, breeze-dev
CAIRO, cairo-dev
CARES, c-ares-dev
CFITSIO, cfitsio-dev
CGAL, CGAL-dev
CHECK, check
CLUTTER, clutter-dev
@@ -176,6 +176,7 @@ Eet.h, eet-dev
Eigen/Core, eigen-dev
Eigen/Dense, eigen-dev
Eigen3, eigen-dev
Epoxy, pkgconfig(epoxy)
Exiv2, exiv2-dev
Expat 1.95.x, expat-dev
Expat XML Parser, expat-dev
@@ -256,6 +257,7 @@ Fontconfig, pkgconfig(fontconfig)
FreeType 2, freetype-dev
Freetype, freetype-dev
GCRYPT, libgcrypt-dev
GCrypt, libgcrypt-dev
GD, gd-dev
GDBM, gdbm-dev
GDM_PAM_EXTENSIONS, gdm-dev
@@ -285,6 +287,7 @@ GTK, gtk+-dev
GnuTLS, gnutls-dev
GooglePerftools, gperftools-dev
Gperf, gperf
Gpgme, pkgconfig(gpgme)
Gpgmepp, gpgme-dev
Gphoto2, libgphoto2-dev
Grantlee5, grantlee-dev
@@ -377,6 +380,7 @@ KF5KMahjongglib, libkmahjongg-dev
KF5KdepimDBusInterfaces, kdepim-apps-libs-dev
KF5Kipi, libkipi-dev
KF5Kirigami2, kirigami2-dev
KF5KirigamiAddons, kirigami2-dev
KF5KontactInterface, kontactinterface-dev
KF5Kross, kross-dev
KF5Ldap, kldap-dev
@@ -418,6 +422,8 @@ KF5Su, kdesu-dev
KF5Syndication, syndication-dev
KF5SyntaxHighlighting, syntax-highlighting-dev
KF5SysGuard, libksysguard-dev
KF5TextAutoCorrection, ktextaddons-dev
KF5TextAutoCorrectionWidgets, ktextaddons-dev
KF5TextEditor, ktexteditor-dev
KF5TextWidgets, ktextwidgets-dev
KF5ThreadWeaver, threadweaver-dev
@@ -430,16 +436,74 @@ KF5WidgetsAddons, kwidgetsaddons-dev
KF5WindowSystem, kwindowsystem-dev
KF5XmlGui, kxmlgui-dev
KF5XmlRpcClient, kxmlrpcclient-dev
KF6Attica, attica-dev
KF6Baloo, baloo-dev
KF6BalooWidgets, baloo-widgets-dev
KF6ColorScheme, kcolorscheme-dev
KF6Config, kconfig-dev
KF6Contacts, kcontacts-dev
KF6DNSSD, kdnssd-dev
KF6FileMetaData, kfilemetadata-dev
KF6GlobalAccel, kglobalaccel-dev
KF6Holidays, kholidays-dev
KF6IdleTime, kidletime-dev
KF6JobWidgets, kjobwidgets-dev
KF6KCMUtils, kcmutils-dev
KF6Kirigami, kirigami-dev
KF6Kirigami2, kirigami-dev
KF6KirigamiAddons, kirigami-addons-dev
KF6KirigamiAddons2, kirigami-addons-dev
KF6KirigamiPlatform, kirigami-dev
KF6NetworkManagerQt, networkmanager-qt-dev
KF6NewStuff, knewstuff-def
KF6Notifications, knotifications-dev
KF6NotifyConfig, knotifyconfig-dev
KF6Package, kpackage-dev
KF6Purpose, purpose-dev
KF6QuickCharts, kquickcharts-dev
KF6Runner, krunner-dev
KF6Screen, libkscreen-dev
KF6StatusNotifierItem, kstatusnotifieritem-dev
KF6SyntaxHighlighting, syntax-highlighting-dev
KF6TextEditor, ktexteditor-dev
KGantt, kdiagram-dev
KPim5Akonadi, akonadi-dev
KPim5AkonadiContact, akonadi-contacts-dev
KPim5AkonadiMime, akonadi-mime-dev
KPim5AkonadiNotes, akonadi-notes-dev
KPim5GrantleeTheme, grantleetheme-dev
KPim5Gravatar, libgravatar-dev
KPim5IMAP, kimap-staticdev
KPim5Ldap, kldap-dev
KPim5LibKSieve, libksieve-dev
KPim5Libkdepim, libkdepim-dev
KPim5Libkleo, libkleo-dev
KPim5MailImporter, mailimporter-dev
KPim5MailTransport, kmailtransport-dev
KPim5MailTransportAkonadi, kmailtransport-dev
KPim5MessageComposer, messagelib-dev
KPim5MessageCore, messagelib-dev
KPim5Mime, kmime-dev
KPim5PimCommon, pimcommon-dev
KPim5TextEdit, kpimtextedit-dev
KPim6IMAP, kimap-dev
KPim6Libkdepim, libkdepim-dev
KPim6Libkleo, libkleo-dev
KPim6MailTransport, kmailtransport-dev
KPim6MessageCore, messagelib-dev
KPim6Mime, kmime-dev
KPim6PimCommon, pimcommon-dev
KPimGAPI, libkgapi-dev
KPimKDAV, kdav-dev
KPimPkPass, kpkpass-dev
KPimSMTP, ksmtp-dev
KPimSMTPConfig, ksmtp-dev
KPipeWire, kpipewire-dev
KScreenLocker, kscreenlocker-dev
KTP, ktp-common-internals-dev
KdepimLibs, kdepimlibs-dev
Kerberos 5, krb5-dev
KirigamiAddons, kirigami-addons-dev
LEX, flex bison
LIBCAP_NG_PATH, libcap-ng-dev
LIBEXIF, libexif-dev
@@ -447,7 +511,6 @@ LIBGCRYPT - version >= 1.5.0, libgcrypt-dev
LIBGD, libgd-dev
LIBICAL, libical-dev
LIBKONQ, kde-baseapps-dev
LIBLZMA, xz-dev
LIBNOTIFY, libnotify-dev
LIBPCREVERSION, pcre-dev
LIBRSVG, librsvg-dev
@@ -469,12 +532,12 @@ LibExiv2, pkgconfig(exiv2)
LibKEduVocDocument, libkeduvocdocument-dev
LibKWorkspace, plasma-workspace-dev
LibKrb5, krb5-dev
LibLZMA, xz-dev
LibR, R-dev
LibSSH, libssh-dev
LibXml2, libxml2-dev
LibXslt, libxslt-bin
Libcap, libcap-dev
Libev, libev-dev
Lua51, lua-dev
LuaJIT, LuaJIT-dev
MDDS, mdds-dev
@@ -505,12 +568,16 @@ PAM, Linux-PAM-dev
PCAP, libpcap-dev
PCIUTILS, pciutils-dev
PCRE, pcre-dev
PCRE2, pcre2-dev
PNG, pkgconfig(libpng)
POPT, popt-dev
POSIX ACL, acl-dev
PULSEAUDIO, pulseaudio-dev
Phonon, phonon-dev
Phonon4Qt5, phonon-dev
Phonon4Qt6, phonon-dev
PlasmaActivities, plasma-activities-dev
PlasmaActivitiesStats, plasma-activities-stats-dev
PolkitQt5-1, polkit-qt-dev
Poppler, poppler-dev
PopplerQt4, poppler-dev
@@ -524,13 +591,12 @@ Python, python3-dev
Python.h, python3-dev
PythonLibs, python3-dev
PythonLibsUnix, python3-dev
QCoro5, qcoro-dev
QGpgme, gpgme-dev
QImageBlitz, qimageblitz-dev
QREncode, qrencode-dev
QRencode, qrencode-dev
QT, buildreq-kde
Qt::Quick, qt6declarative-dev
Qt::Svg, qt6svg-dev
Qalculate, libqalculate-dev
Qca-qt5, qca-qt5-dev
Qt4, qt-everywhere-opensource-src-dev
@@ -541,6 +607,7 @@ Qt5Keychain, qtkeychain-dev
Qt5LinguistTools, qttools-dev
Qt5Multimedia, qtmultimedia-dev
Qt5Network, qtbase-dev
Qt5NetworkAuth, pkgconfig(Qt5NetworkAuth)
Qt5QuickControls2, pkgconfig(Qt5QuickControls2)
Qt5QuickTemplates2, pkgconfig(Qt5QuickTemplates2)
Qt5QuickTest, pkgconfig(Qt5QuickTest)
@@ -557,6 +624,9 @@ Qt6Positioning, qt6positioning-dev
Qt6Quick, qt6declarative-dev
Qt6QuickTimeline, qt6quicktimeline-dev
Qt6ShaderTools, qt6shadertools-dev
Qt6WaylandClient, qt6wayland-dev
Qt::Quick, qt6declarative-dev
Qt::Svg, qt6svg-dev
R, R
READLINE, readline-dev
RSVG, librsvg-dev
@@ -600,6 +670,7 @@ WEBKIT, webkitgtk-dev
WEBPMUX, libwebp-dev
WSME, WSME
Wayland, wayland-dev
WaylandProtocols, wayland-protocols-dev plasma-wayland-protocols-dev
WaylandScanner, wayland
WebOb, pypi-webob
X, pkgconfig(x11)
@@ -780,7 +851,7 @@ debtcollector, debtcollector
decorator, pypi-decorator
deflate, zlib-dev
deflateBound in -lz, zlib-dev
designer, qttools-dev
designer, qt6tools-dev
desktop-file-install, desktop-file-utils
desktop-file-validate, desktop-file-utils
dialog, dialog
@@ -819,6 +890,7 @@ ez_setup, pypi-setuptools
ffi.h, libffi-dev
ffi_call, libffi-dev
fftw3.h, fftw-dev
file, file
find_packages, pypi-setuptools
flatbuffers/flatbuffers.h, FlatBuffers-dev
flatpak, flatpak-dev
@@ -831,6 +903,7 @@ fontconfig.h, fontconfig-dev
fontconfig/fontconfig.h, fontconfig-dev
freerdp2, freerdp-dev
freetype-config, freetype-dev
frozen/unordered_map.h, frozen-dev
fuse (via pkg-config), compat-fuse-soname2-dev fuse-dev
fuse, fuse-dev
fuse.h, fuse-dev
@@ -844,6 +917,7 @@ gawk, gawk
gc/gc.h, gc-dev
gcj, gcj
gconftool-2, GConf-dev
gcr-3, pkgconfig(gcr-3)
gcrypt.h, libgcrypt-dev
gdal-config, gdal-dev
gdbm.h, gdbm-dev
@@ -860,6 +934,7 @@ gevent, pypi-gevent
gflags, gflags-dev
gfortran, gfortran
gi, pygobject
gi-docgen, gi-docgen
gif_lib.h, giflib-dev
gio-2.0, glib-dev
giomm-2.4, glibmm-dev
@@ -981,7 +1056,7 @@ lber.h, openldap-dev
lcms2, lcms2-dev
lcms2.h, lcms2-dev
lcms2/lcms2.h, lcms2-dev
lconvert, qttools-dev
lconvert, qt6tools-dev
ldap.h, openldap-dev
ldap_parse_sort_control, openldap-dev
ldap_search in -lldap, openldap-dev
@@ -1022,7 +1097,6 @@ libhandy-0.0, libhandy-dev
libiberty.h, binutils-dev
libkmod.h, kmod-dev
libksba, libksba-dev
liblzma, xz-dev
libmnl/libmnl.h, libmnl-dev
libmpfr, mpfr-dev
libmspack >= 0.0.20040308alpha (via pkg-config), libmspack-dev
@@ -1031,14 +1105,13 @@ libnettle, nettle-dev nettle-lib
libnftnl, libnftnl-dev
libnl-1, libnl-dev
libnotify, libnotify-dev
libnova, libnova-dev
libpeas-1.0, libpeas-dev
libpipewire-0.2, pipewire-dev
libpng, pkgconfig(libpng)
libpng-config, pkgconfig(libpng)
libpng/png.h, pkgconfig(libpng)
libportal, libportal-dev
libproxy-1.0 pkg-config data, pacrunner-dev
libproxy-1.0, pacrunner-dev
libpsl, libpsl-dev
libqhull/libqhull.h, qhull-dev
library ldap, openldap-dev
@@ -1069,14 +1142,14 @@ libxml2 devel libraries, libxml2-dev
libxml2 library, libxml2-dev
libxslt/pattern.h, libxslt-dev
libz, zlib-dev
linguist, qttools-dev
linguist, qt6tools-dev
linux/xattr.h, attr-dev
llvm-config, llvm-dev
loadkeys, kbd
lrelease, qttools-dev
lrelease, qt6tools-dev
ltdl.h, libtool-dev
lua, lua-dev
lupdate, qttools-dev
lupdate, qt6tools-dev
lvm2app.h, LVM2-dev
lxml, pypi-lxml
lxqt, liblxqt-dev
@@ -1084,8 +1157,6 @@ lxqt-build-tools, lxqt-build-tools
lxqt-globalkeys, lxqt-globalkeys-dev
lxqt-globalkeys-ui, lxqt-globalkeys-dev
lz4.h, lz4-dev
lzma, xz-dev
lzma.h, xz-dev
lzo/lzoconf.h, lzo-dev
magic, file-dev
magic.h, file-dev
@@ -1132,7 +1203,6 @@ nfsidmap.h, libnfsidmap-dev
nghttp, nghttp2-dev
nl_handle_alloc, libnl-dev
node, nodejs
nose, pypi-nose
nosexcover, nosexcover
notmuch.h, notmuch-dev
nroff, groff
@@ -1199,7 +1269,7 @@ pg_config, postgresql-dev
php, php
php-config7, php
pip, pypi-pip
pixeltool, qttools-dev
pixeltool, qt6tools-dev
pixman, pkgconfig(pixman-1)
pkg-config, pkg-config
pkg.m4, pkg-config-dev
@@ -1237,11 +1307,11 @@ python-pcre, python-pcre
python-subunit, pypi(python_subunit)
pytz, pypi(pytz)
pyyaml, PyYAML
qcollectiongenerator, qttools-dev
qcollectiongenerator, qt6tools-dev
qdbuscpp2xml, qtbase-dev
qdbusxml2cpp, qtbase-dev
qhelpconverter, qttools-dev
qhelpgenerator, qttools-dev
qhelpconverter, qt6tools-dev
qhelpgenerator, qt6tools-dev
qhull/libqhull.h, qhull-dev
qjson/parser.h, qjson-dev
qlalr, qtbase-dev
@@ -1255,8 +1325,8 @@ qmlplugindump, qtdeclarative-dev
qmltestrunner, qtdeclarative-dev
qscxmlc, qtscxml-dev
qt5, buildreq-kde
qtattributionsscanner, qttools-dev
qtplugininfo, qttools-dev
qtattributionsscanner, qt6tools-dev
qtplugininfo, qt6tools-dev
qtwaylandscanner, qtwayland-dev
qvkgen, qtbase-dev
raptor, raptor2-dev
@@ -1272,6 +1342,7 @@ requests, pypi-requests
rest-0.7, rest-dev
retrying, retrying
rpm, pkgconfig(rpm)
rst2man rst2man.py, pypi-docutils
rst2man, pypi-docutils
rsvg-convert, librsvg
ruby, ruby
@@ -1284,6 +1355,7 @@ sbc, sbc-dev
scrollkeeper-config, rarian
scrollkeeper-preinstall, rarian
sdl2, SDL2-dev
sdl2-config, SDL2-dev
security/pam_appl.h, Linux-PAM-dev
selenium, pypi-selenium
setcap, libcap-dev
+22 -5
View File
@@ -59,7 +59,7 @@ class FileManager(object):
r"/usr/src.*",
r"/var.*"]
for bpath in banned_paths:
if re.search(r"^(/V3|/V4)?" + bpath, path):
if re.search(r"^(/V3|/V4|/VA)?" + bpath, path):
return True
return False
@@ -101,7 +101,7 @@ class FileManager(object):
exclude = True
for pat in patterns:
pat = re.compile(r"^(/V3|/V4)?" + pat)
pat = re.compile(r"^(/V3|/V4|/VA)?" + pat)
if pat.search(filename):
exclude = False
break
@@ -126,10 +126,10 @@ class FileManager(object):
# All patterns at this time and should always be prefixed by '^'
# but just in case add the following to strip just the '^'
pattern = pattern if not pattern.startswith('^') else pattern[1:]
pat = re.compile(r"^(/V3|/V4)?" + pattern)
pat = re.compile(r"^(/V3|/V4|/VA)?" + pattern)
match = pat.search(filename)
if match:
if len(match.groups()) > 0 and match.groups()[0] in ['/V3', '/V4']:
if len(match.groups()) > 0 and match.groups()[0] in ['/V3', '/V4', '/VA']:
norm_filename = filename.removeprefix(match.groups()[0])
if replacement != filename:
replacement = match.groups()[0] + replacement
@@ -236,7 +236,7 @@ class FileManager(object):
# Explicit file packaging
for k, v in self.file_maps.items():
for match_name in v['files']:
match = re.search(r"^/(V3|V4)", filename)
match = re.search(r"^/(V3|V4|VA)", filename)
norm_filename = filename if not match else filename.removeprefix(match.group())
if isinstance(match_name, str):
if norm_filename == match_name:
@@ -272,6 +272,16 @@ class FileManager(object):
if self.want_dev_split and self.file_pat_match(filename, r"^/usr/.*/include/.*\.h$", "dev"):
return
# Exclude Windows executables and DLLs unless otherwise configured
# Can't just skip them because they could be swept up in a python lib wildcard, for example
if re.search(r"[^/]+\.(exe|dll)$", filename):
if self.config.config_opts.get('allow_exe'):
util.print_warning("Allowing {} because allow_exe is true".format(filename))
else:
util.print_warning("Blocking {} because allow_exe is false".format(filename))
self.excludes.append(filename)
return
# if configured to do so, add .so files to the lib package instead of
# the dev package. THis is useful for packages with a plugin
# architecture like elfutils and mesa.
@@ -291,6 +301,7 @@ class FileManager(object):
(r"^/usr/share/info/", "info"),
(r"^/usr/share/abi/", "abi"),
(r"^/usr/share/qt5/examples/", "examples"),
(r"^/usr/share/qt6/examples/", "examples"),
(r"^/usr/share/omf", "main", "/usr/share/omf/*"),
(r"^/usr/share/installed-tests/", "tests"),
(r"^/usr/libexec/installed-tests/", "tests"),
@@ -339,11 +350,17 @@ class FileManager(object):
(r"^/usr/lib64/cmake/", "dev"),
(r"^/usr/lib32/cmake/", "dev32"),
(r"^/usr/lib/qt5/mkspecs/", "dev"),
(r"^/usr/lib/qt6/mkspecs/", "dev"),
(r"^/usr/lib64/qt5/mkspecs/", "dev"),
(r"^/usr/lib32/qt5/mkspecs/", "dev32"),
(r"^/usr/lib64/qt6/mkspecs/", "dev"),
(r"^/usr/lib32/qt6/mkspecs/", "dev32"),
(r"^/usr/lib/qt5/", "lib"),
(r"^/usr/lib/qt6/", "lib"),
(r"^/usr/lib64/qt5/", "lib"),
(r"^/usr/lib32/qt5/", "lib32"),
(r"^/usr/lib64/qt6/", "lib"),
(r"^/usr/lib32/qt6/", "lib32"),
(r"^/usr/lib/[a-zA-Z0-9._+-]*\.so$", so_dest),
(r"^/usr/lib64/libkdeinit5_[a-zA-Z0-9._+-]*\.so$", "lib"),
(r"^/usr/lib32/libkdeinit5_[a-zA-Z0-9._+-]*\.so$", "lib32"),
+1
View File
@@ -109,6 +109,7 @@ def commit_to_git(config, name, success):
call("git add profile_payload", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add options.conf", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add configure_misses", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add etc_files", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add whatrequires", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add description", check=False, stderr=subprocess.DEVNULL, cwd=path)
call("git add attrs", check=False, stderr=subprocess.DEVNULL, cwd=path)
+1
View File
@@ -0,0 +1 @@
59FCF207FEA7F445
+1 -1
View File
@@ -178,7 +178,7 @@ def scan_for_licenses(srcdir, config, pkg_name):
# seen in the DPDK 20.11.3 tree, where the `LICENSES` directory is
# named `license` instead.
dirbase = os.path.basename(dirpath)
if re.search(r'^(LICENSES|license)$', dirbase) and re.search(r'\.txt$', name):
if re.search(r'^(LICENSES|licenses?)$', dirbase) and re.search(r'\.txt$', name):
license_from_copying_hash(os.path.join(dirpath, name),
srcdir, config, pkg_name)
+13
View File
@@ -3,6 +3,7 @@
# This file is sorted with LC_COLLATE=C
# Lines beginning with '#' are ignored.
# For strings that start with '#', escape the '#' as '\#'.
=========================
%
%license
(LGPL)
@@ -13,6 +14,7 @@
-MIT
-or-
.git
.md
.mit
.txt
/
@@ -25,6 +27,7 @@
3-clause
3BSD
@CPACK_RPM_PACKAGE_LICENSE@
AGPLv3+
ALv2
AND
APL-2.0
@@ -157,3 +160,13 @@ with
your
|
~
Permission
a
charge
copy
granted
hereby
obtaining
of
person
to
+27 -7
View File
@@ -18,10 +18,25 @@
import os
import re
import sys
from util import print_fatal, write_out
def log_etc(lines):
"""Return the content of the START/etc ... END/etc section."""
etc = []
while True:
line = next(lines)
line = line.strip()
if line == 'END/etc':
break
if line.startswith('+'):
continue
etc.append(line)
return etc
def logcheck(pkg_loc):
"""Try to discover configuration options that were automatically switched off."""
log = os.path.join(pkg_loc, 'results', 'build.log')
@@ -52,7 +67,12 @@ def logcheck(pkg_loc):
pat = re.compile(r"^checking (?:for )?(.*?)\.\.\. no")
misses = []
for line in lines:
iter_lines = iter(lines)
for line in iter_lines:
if line.strip() == "START/etc":
etc = log_etc(iter_lines)
if etc:
write_log(pkg_loc, "etc_files", etc)
match = None
m = pat.search(line)
if m:
@@ -70,8 +90,8 @@ def logcheck(pkg_loc):
if match in blacklist:
print_fatal("Blacklisted configure-miss is forbidden: " + match)
misses.append("Blacklisted configure-miss is forbidden: " + match)
write_misses(pkg_loc, misses)
exit(1)
write_log(pkg_loc, 'configure_misses', misses)
sys.exit(1)
print("Configure miss: " + match)
misses.append("Configure miss: " + match)
@@ -79,9 +99,9 @@ def logcheck(pkg_loc):
if not misses:
return
write_misses(pkg_loc, misses)
write_log(pkg_loc, 'configure_misses', misses)
def write_misses(pkg_loc, misses):
"""Create configure_misses file with automatically disabled configuration options."""
write_out(os.path.join(pkg_loc, 'configure_misses'), '\n'.join(sorted(misses)))
def write_log(pkg_loc, fname, content):
"""Create log file with content."""
write_out(os.path.join(pkg_loc, fname), '\n'.join(sorted(content)))
+4
View File
@@ -483,6 +483,10 @@ class GPGVerifier(Verifier):
return None
# valid signature exists at package_sign_path, operate on it now
keyid = get_keyid(self.package_sign_path)
if keyid in self.config.keyid_blocklist:
self.print_result(False, err_msg='KNOWNBADACTOR: {}'.format(keyid))
self.quit()
# default location first
pubkey_loc = self.pubkey_path.format(keyid)
cache_key = os.path.join(KEY_CACHE_DIR, pubkey_loc)
+64 -64
View File
@@ -2,67 +2,67 @@
# pkgconfig equivalent, to be added to BuildRequires. Please keep sorted.
# This file is sorted with LC_COLLATE=C
# Format: <qmake key>, <pkgconfig value>
3danimation, Qt53DAnimation
3dcore, Qt53DCore
3dextras, Qt53DExtras
3dinput, Qt53DInput
3dlogic, Qt53DLogic
3dquick, Qt53DQuick
3dquickanimation, Qt53DQuickAnimation
3dquickextras, Qt53DQuickExtras
3dquickinput, Qt53DQuickInput
3dquickrender, Qt53DQuickRender
3dquickscene2d, Qt53DQuickScene2D
3drender, Qt53DRender
bluetooth, Qt5Bluetooth
charts, Qt5Charts
concurrent, Qt5Concurrent
core, Qt5Core
datavisualization, Qt5DataVisualization
dbus, Qt5DBus
declarative, Qt5Declarative
designer, Qt5Designer
gamepad, Qt5Gamepad
gui, Qt5Gui
help, Qt5Help
location, Qt5Location
multimedia, Qt5Multimedia
multimediawidgets, Qt5MultimediaWidgets
network, Qt5Network
networkauth, Qt5NetworkAuth
nfc, Qt5Nfc
opengl, Qt5OpenGL
openglextensions, Qt5OpenGLExtensions
positioning, Qt5Positioning
printsupport, Qt5PrintSupport
purchasing, Qt5Purchasing
qml, Qt5Qml
qmltest, Qt5QuickTest
quick, Qt5Quick
quickcontrols2, Qt5QuickControls2
quickwidgets, Qt5QuickWidgets
remoteobjects, Qt5RemoteObjects
script, Qt5Script
scripttools, Qt5ScriptTools
scxml, Qt5Scxml
sensors, Qt5Sensors
serialbus, Qt5SerialBus
serialport, Qt5SerialPort
sql, Qt5Sql
svg, Qt5Svg
testlib, Qt5Test
texttospeech, Qt5TextToSpeech
uitools, Qt5UiTools
waylandclient, Qt5WaylandClient
waylandcompositor, Qt5WaylandCompositor
webchannel, Qt5WebChannel
webengine, Qt5WebEngine
webenginecore, Qt5WebEngineCore
webenginewidgets, Qt5WebEngineWidgets
webkit, Qt5WebKit
webkitwidgets, Qt5WebKitWidgets
websockets, Qt5WebSockets
widgets, Qt5Widgets
x11extras, Qt5X11Extras
xml, Qt5Xml
xmlpatterns, Qt5XmlPatterns
3danimation, Qt63DAnimation
3dcore, Qt63DCore
3dextras, Qt63DExtras
3dinput, Qt63DInput
3dlogic, Qt63DLogic
3dquick, Qt63DQuick
3dquickanimation, Qt63DQuickAnimation
3dquickextras, Qt63DQuickExtras
3dquickinput, Qt63DQuickInput
3dquickrender, Qt63DQuickRender
3dquickscene2d, Qt63DQuickScene2D
3drender, Qt63DRender
bluetooth, Qt6Bluetooth
charts, Qt6Charts
concurrent, Qt6Concurrent
core, Qt6Core
datavisualization, Qt6DataVisualization
dbus, Qt6DBus
declarative, Qt6Declarative
designer, Qt6Designer
gamepad, Qt6Gamepad
gui, Qt6Gui
help, Qt6Help
location, Qt6Location
multimedia, Qt6Multimedia
multimediawidgets, Qt6MultimediaWidgets
network, Qt6Network
networkauth, Qt6NetworkAuth
nfc, Qt6Nfc
opengl, Qt6OpenGL
openglextensions, Qt6OpenGLExtensions
positioning, Qt6Positioning
printsupport, Qt6PrintSupport
purchasing, Qt6Purchasing
qml, Qt6Qml
qmltest, Qt6QuickTest
quick, Qt6Quick
quickcontrols2, Qt6QuickControls2
quickwidgets, Qt6QuickWidgets
remoteobjects, Qt6RemoteObjects
script, Qt6Script
scripttools, Qt6ScriptTools
scxml, Qt6Scxml
sensors, Qt6Sensors
serialbus, Qt6SerialBus
serialport, Qt6SerialPort
sql, Qt6Sql
svg, Qt6Svg
testlib, Qt6Test
texttospeech, Qt6TextToSpeech
uitools, Qt6UiTools
waylandclient, Qt6WaylandClient
waylandcompositor, Qt6WaylandCompositor
webchannel, Qt6WebChannel
webengine, Qt6WebEngine
webenginecore, Qt6WebEngineCore
webenginewidgets, Qt6WebEngineWidgets
webkit, Qt6WebKit
webkitwidgets, Qt6WebKitWidgets
websockets, Qt6WebSockets
widgets, Qt6Widgets
x11extras, Qt6X11Extras
xml, Qt6Xml
xmlpatterns, Qt6XmlPatterns
+419 -148
View File
@@ -28,6 +28,17 @@ from collections import OrderedDict
import git
from util import _file_write, open_auto
AVX2_CFLAGS = "-march=x86-64-v3"
AVX2_LCFLAGS = "-march=x86-64-v3"
AVX2_LFLAGS = "-Wl,-z,x86-64-v3"
AVX512_CFLAGS = "-march=x86-64-v4 -mprefer-vector-width=512"
AVX512_FCFLAGS = "-march=x86-64-v4 -mprefer-vector-width=256"
AVX512_LCFLAGS = "-march=x86-64-v4"
AVX512_LFLAGS = "-Wl,-z,x86-64-v4"
APX_CFLAGS = "-march=x86-64-v3 -mapxf -mavx10.1"
APX_LCFLAGS = "-march=x86-64-v3"
APX_LFLAGS = "-Wl,-z,x86-64-v3"
class Specfile(object):
"""Holds data and methods needed to write the spec file."""
@@ -150,6 +161,12 @@ class Specfile(object):
if self.keyid and self.config.signature:
count += 1
self._write_strip(f"Source{count} : {self.config.signature}")
self.config.signature_macro = f"%{{SOURCE{count}}}"
# Also include the public key in the source tarball.
count += 1
self._write_strip(f"Source{count} : {self.keyid}.pkey")
self.config.pkey_macro = f"%{{SOURCE{count}}}"
for source in self.config.extra_sources:
count += 1
@@ -419,6 +436,12 @@ class Specfile(object):
def write_prep(self):
"""Write prep section to spec file."""
self._write_strip("%prep")
if self.keyid and self.config.signature:
self._write_strip("mkdir .gnupg")
self._write_strip("chmod 700 .gnupg")
self._write_strip(f"gpg --homedir .gnupg --import {self.config.pkey_macro}")
self._write_strip(f"gpg --homedir .gnupg --status-fd 1 --verify {self.config.signature_macro} %{{SOURCE0}} > gpg.status")
self._write_strip(f"grep '^\\[GNUPG:\\] GOODSIG {self.keyid}' gpg.status")
self.write_prep_prepend()
prefix = self.content.prefixes[self.url]
if self.config.default_pattern == 'R':
@@ -431,6 +454,8 @@ class Specfile(object):
extract_cmd = 'tar xf {}'
if archive.endswith('.zip'):
extract_cmd = 'unzip -q {}'
if archive.endswith('.bz2') and not archive.endswith('.tar.bz2'):
extract_cmd = 'bzcat {0} > $(basename "{0}" .bz2)'
self._write_strip('cd %{_builddir}')
archive_file = os.path.basename(archive)
if self.config.archive_details.get(archive + "prefix"):
@@ -481,11 +506,7 @@ class Specfile(object):
if self.config.subdir:
self._write_strip("popd")
if self.config.default_pattern == "distutils3" or self.config.default_pattern == "pyproject":
self._write_strip("pushd ..")
self._write_strip("cp -a {} buildavx2".format(self.content.tarball_prefix))
self._write_strip("popd")
elif self.config.default_pattern != 'cmake':
if self.config.default_pattern != 'cmake':
if self.config.config_opts['32bit']:
self._write_strip("pushd ..")
self._write_strip("cp -a {} build32".format(self.content.tarball_prefix))
@@ -498,6 +519,10 @@ class Specfile(object):
self._write_strip("pushd ..")
self._write_strip("cp -a {} buildavx512".format(self.content.tarball_prefix))
self._write_strip("popd")
if self.config.config_opts['use_apx']:
self._write_strip("pushd ..")
self._write_strip("cp -a {} buildapx".format(self.content.tarball_prefix))
self._write_strip("popd")
if self.config.config_opts['openmpi']:
self._write_strip("pushd ..")
self._write_strip("cp -a {} build-openmpi".format(self.content.tarball_prefix))
@@ -566,7 +591,7 @@ class Specfile(object):
flags.extend(["-Ofast", "-fno-semantic-interposition", "-falign-functions=32"])
if not self.config.config_opts['full-debug-info'] and not self.config.config_opts['use_clang']:
flags.extend(["-gno-variable-location-views", "-gno-column-info", "-femit-struct-debug-baseonly", "-fdebug-types-section", "-gz=zstd", "-g1"])
if self.config.default_pattern != 'qmake':
if self.config.default_pattern != 'qmake' or self.config.default_pattern != 'qmake6':
if self.config.config_opts['use_lto']:
flags.extend(["-O3", lto, "-ffat-lto-objects"])
if self.config.config_opts['use_clang']:
@@ -699,6 +724,7 @@ class Specfile(object):
self.write_license_files()
self._write_strip("export GOAMD64=v2")
if self.config.config_opts['32bit']:
self._write_strip("pushd ../build32/" + self.config.subdir)
self._write_strip("%make_install32 {} {}".format(self.config.extra_make_install,
@@ -718,16 +744,25 @@ class Specfile(object):
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write_strip("%s_v3 %s\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['use_avx512']:
self._write_strip("GOAMD64=v4")
self._write_strip("pushd ../buildavx512/" + self.config.subdir)
self._write_strip("%s_v4 %s\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['use_apx']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self._write_strip("%s_va %s\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['openmpi']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd ../build-openmpi/" + self.config.subdir)
self.write_install_openmpi()
self._write_strip("popd")
@@ -735,6 +770,7 @@ class Specfile(object):
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
self._write_strip("GOAMD64=v2")
self._write_strip("%s %s\n" % (self.config.install_macro, self.config.extra_make_install))
if self.config.subdir:
@@ -795,10 +831,12 @@ class Specfile(object):
skips = ""
for setuid in self.setuid:
skips = f"{skips} --skip-path {setuid}"
if self.config.config_opts['use_avx2'] or self.config.default_pattern == "distutils3" or self.config.default_pattern == "pyproject":
if self.config.config_opts['use_avx2']:
self._write_strip('/usr/bin/elf-move.py avx2 %{buildroot}-v3 %{buildroot} %{buildroot}/usr/share/clear/filemap/filemap-%{name}' + skips)
if self.config.config_opts['use_avx512']:
self._write_strip('/usr/bin/elf-move.py avx512 %{buildroot}-v4 %{buildroot} %{buildroot}/usr/share/clear/filemap/filemap-%{name}' + skips)
if self.config.config_opts['use_apx']:
self._write_strip('/usr/bin/elf-move.py apx %{buildroot}-va %{buildroot} %{buildroot}/usr/share/clear/filemap/filemap-%{name}' + skips)
def write_exclude_deletes(self):
"""Write out deletes for excluded files."""
@@ -861,6 +899,8 @@ class Specfile(object):
self.write_license_files()
self._write_strip("export GOAMD64=v2")
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
@@ -884,20 +924,30 @@ class Specfile(object):
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd clr-build-avx2")
self._write_strip("%s_v3 %s || :\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['use_avx512']:
self._write_strip("GOAMD64=v4")
self._write_strip("pushd clr-build-avx512")
self._write_strip("%s_v4 %s || :\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['use_apx']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd clr-build-apx")
self._write_strip("%s_va %s || :\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
if self.config.config_opts['openmpi']:
self._write_strip("GOAMD64=v3")
self._write_strip("pushd clr-build-openmpi")
self.write_install_openmpi()
self._write_strip("popd")
self._write_strip("GOAMD64=v2")
self._write_strip("pushd clr-build")
self._write_strip("%s %s\n" % (self.config.install_macro, self.config.extra_make_install))
self._write_strip("popd")
@@ -980,6 +1030,7 @@ class Specfile(object):
self.write_profile_payload("configure")
if self.config.subdir:
self._write_strip("pushd {}".format(self.config.subdir))
self._write_strip("export GOAMD64=v2")
self._write_strip("{0}%configure {1} {2} {3}"
.format(self.get_profile_use_flags(),
self.config.disable_static,
@@ -1008,11 +1059,12 @@ class Specfile(object):
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("%configure {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1024,11 +1076,12 @@ class Specfile(object):
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildavx512/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v4 "')
self._write_strip("GOAMD64=v4")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX512_FCFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX512_LCFLAGS} "')
self._write_strip("%configure {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1036,16 +1089,35 @@ class Specfile(object):
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_apx']:
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self.write_build_prepend()
self._write_strip("GOAMD64=v3")
self._write_strip('CC="gcc-14"')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self._write_strip("%configure --host=x86_64-clr-linux-gnu {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
self.config.extra_configure_avx2))
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['openmpi']:
self._write_strip("pushd ../build-openmpi/" + self.config.subdir)
self._write_strip(". /usr/share/defaults/etc/profile.d/modules.sh")
self._write_strip("module load openmpi")
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("./configure {0} \\\n{1} {2}"
.format(self.config.conf_args_openmpi,
self.config.disable_static,
@@ -1065,6 +1137,7 @@ class Specfile(object):
self.write_profile_payload("configure_ac")
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
self._write_strip("export GOAMD64=v2")
self._write_strip("{0}%reconfigure {1} {2} {3}"
.format(self.get_profile_use_flags(),
self.config.disable_static,
@@ -1092,11 +1165,12 @@ class Specfile(object):
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("%reconfigure {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1108,11 +1182,12 @@ class Specfile(object):
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildavx512/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=256 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v4 "')
self._write_strip("GOAMD64=v4")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX512_FCFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX512_LCFLAGS} "')
self._write_strip("%reconfigure {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1120,6 +1195,24 @@ class Specfile(object):
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_apx']:
self._write_strip("unset PKG_CONFIG_PATH")
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self.write_build_prepend()
self._write_strip("GOAMD64=v3")
self._write_strip('CC="gcc-14"')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self._write_strip("%reconfigure --host=x86_64-clr-linux-gnu {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
self.config.extra_configure_avx2))
self.write_make_line()
self._write_strip("popd")
self._write_strip("\n")
self.write_check()
self.write_make_install()
@@ -1132,6 +1225,7 @@ class Specfile(object):
self.write_profile_payload("make")
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
self._write_strip("export GOAMD64=v2")
self.write_make_line()
if self.config.subdir:
self._write_strip("popd")
@@ -1144,21 +1238,35 @@ class Specfile(object):
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_avx512']:
self._write_strip("pushd ../buildavx512" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=512 -Wl,-z,x86-64-v4 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v4 -mprefer-vector-width=256 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v4 "')
self._write_strip("GOAMD64=v4")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX512_FCFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX512_LCFLAGS} "')
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx" + self.config.subdir)
self.write_build_prepend()
self._write_strip("GOAMD64=v3")
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self.write_make_line()
self._write_strip("popd")
@@ -1172,6 +1280,7 @@ class Specfile(object):
self.write_lang_c(export_epoch=True)
self.write_variables()
self.write_profile_payload("autogen")
self._write_strip("export GOAMD64=v2")
self._write_strip("{0}%autogen {1} {2} {3}"
.format(self.get_profile_use_flags(),
self.config.disable_static,
@@ -1197,11 +1306,12 @@ class Specfile(object):
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("%autogen {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1212,11 +1322,12 @@ class Specfile(object):
if self.config.config_opts['use_avx512']:
self._write_strip("pushd ../buildavx512/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -mprefer-vector-width=512"')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -mprefer-vector-width=512"')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v4 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v4 "')
self._write_strip("GOAMD64=v4")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX512_FCFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX512_LCFLAGS} "')
self._write_strip("%autogen {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
@@ -1224,6 +1335,23 @@ class Specfile(object):
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self.write_build_prepend()
self._write_strip("GOAMD64=v3")
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self._write_strip("%autogen --host=x86_64-clr-linux-gnu {0} {1} {2} "
.format(self.config.disable_static,
self.config.extra_configure,
self.config.extra_configure_apx))
self.write_make_line()
self._write_strip("popd")
self.write_check()
self.write_make_install()
@@ -1239,18 +1367,34 @@ class Specfile(object):
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 -m build --wheel --skip-dependency-check --no-isolation " + self.config.extra_configure)
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 -m build --wheel --skip-dependency-check --no-isolation " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 -m build --wheel --skip-dependency-check --no-isolation " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 -m build --wheel --skip-dependency-check --no-isolation " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
self._write_strip("\n")
if self.config.subdir:
@@ -1276,14 +1420,26 @@ class Specfile(object):
self._write_strip("cat %{buildroot}/usr/lib/python3*/site-packages/*/requires.txt || :")
self._write_strip("echo ----[ mark ]----")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("python3 -m installer --destdir=%{buildroot}-v3 dist/*.whl")
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("python3 -m installer --destdir=%{buildroot}-v3 dist/*.whl")
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self._write_strip("python3 -m installer --destdir=%{buildroot}-va dist/*.whl")
self._write_strip("popd")
self.write_find_lang()
@@ -1302,18 +1458,34 @@ class Specfile(object):
if self.config.subdir:
self._write_strip("popd")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 setup.py build " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self.write_build_prepend()
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 setup.py build " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self.write_build_prepend()
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
for module in self.config.pypi_overrides:
self._write_strip(f"pypi-dep-fix.py . {module}")
self._write_strip("python3 setup.py build " + self.config.extra_configure)
self._write_strip("\n")
self._write_strip("popd")
self.write_build_append()
self.write_check()
@@ -1336,14 +1508,26 @@ class Specfile(object):
self._write_strip("cat %{buildroot}/usr/lib/python3*/site-packages/*/requires.txt || :")
self._write_strip("echo ----[ mark ]----")
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 "')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -m64 -march=x86-64-v3 "')
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -m64 -march=x86-64-v3 "')
self._write_strip("python3 -tt setup.py build install --root=%{buildroot}-v3")
self._write_strip("popd")
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {AVX2_LCFLAGS} "')
self._write_strip("python3 -tt setup.py build install --root=%{buildroot}-v3")
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("pushd ../buildapx/" + self.config.subdir)
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip(f'LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS {APX_LCFLAGS} "')
self._write_strip("python3 -tt setup.py build install --root=%{buildroot}-va")
self._write_strip("popd")
self.write_find_lang()
@@ -1368,39 +1552,58 @@ class Specfile(object):
self._write_strip('LDFLAGS="$CLEAR_INTERMEDIATE_LDFLAGS -Wl,-z -Wl,relro"\n')
self._write_strip("mkdir -p %{buildroot}/usr/lib64/R/library")
self._write_strip("mkdir -p %{buildroot}-v3/usr/lib64/R/library")
self._write_strip("mkdir -p %{buildroot}-v4/usr/lib64/R/library")
self._write_strip("mkdir -p %{buildroot}-va/usr/lib64/R/library")
self._write_strip("\n")
self._write_strip("mkdir -p ~/.R")
self._write_strip("mkdir -p ~/.stash")
self._write_strip("echo \"CFLAGS = $CFLAGS -march=x86-64-v3 -ftree-vectorize -mno-vzeroupper\" > ~/.R/Makevars")
self._write_strip("echo \"FFLAGS = $FFLAGS -march=x86-64-v3 -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip("echo \"CXXFLAGS = $CXXFLAGS -march=x86-64-v3 -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
if self.config.config_opts['use_avx2']:
self._write_strip(f"echo \"CFLAGS = $CFLAGS {AVX2_CFLAGS} -ftree-vectorize -mno-vzeroupper\" > ~/.R/Makevars")
self._write_strip(f"echo \"FFLAGS = $FFLAGS {AVX2_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip(f"echo \"CXXFLAGS = $CXXFLAGS {AVX2_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip("R CMD INSTALL "
"--install-tests "
"--use-LTO "
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--data-compress=none "
"--compress=none "
"--build -l "
"%{buildroot}/usr/lib64/R/library .")
self._write_strip("for i in `find %{buildroot}/usr/lib64/R/ -name \"*.so\"`; do mv $i $i.avx2 ; mv $i.avx2 ~/.stash/; done\n")
self._write_strip("R CMD INSTALL "
f"{self.config.extra_configure} "
"--install-tests "
"--use-LTO "
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--data-compress=none "
"--compress=none "
"--build -l "
"%{buildroot}-v3/usr/lib64/R/library .")
self._write_strip("echo \"CFLAGS = $CFLAGS -march=x86-64-v4 -ftree-vectorize -mno-vzeroupper -mprefer-vector-width=512 \" > ~/.R/Makevars")
self._write_strip("echo \"FFLAGS = $FFLAGS -march=x86-64-v4 -ftree-vectorize -mno-vzeroupper -mprefer-vector-width=512 \" >> ~/.R/Makevars")
self._write_strip("echo \"CXXFLAGS = $CXXFLAGS -march=x86-64-v4 -ftree-vectorize -mno-vzeroupper -mprefer-vector-width=512 \" >> ~/.R/Makevars")
if self.config.config_opts['use_avx512']:
self._write_strip(f"echo \"CFLAGS = $CFLAGS {AVX512_CFLAGS} -ftree-vectorize -mno-vzeroupper \" > ~/.R/Makevars")
self._write_strip(f"echo \"FFLAGS = $FFLAGS {AVX512_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip(f"echo \"CXXFLAGS = $CXXFLAGS {AVX512_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip("R CMD INSTALL "
"--preclean "
"--install-tests "
"--use-LTO "
"--no-test-load "
"--data-compress=none "
"--compress=none "
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--build -l "
"%{buildroot}/usr/lib64/R/library .")
self._write_strip("for i in `find %{buildroot}/usr/lib64/R/ -name \"*.so\"`; do mv $i $i.avx512 ; mv $i.avx512 ~/.stash/; done\n")
self._write_strip("R CMD INSTALL "
"--preclean "
f"{self.config.extra_configure} "
"--install-tests "
"--use-LTO "
"--no-test-load "
"--data-compress=none "
"--compress=none "
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--build -l "
"%{buildroot}-v4/usr/lib64/R/library .")
if self.config.config_opts['use_apx']:
self._write_strip(f"echo \"CFLAGS = $CFLAGS {APX_CFLAGS} -ftree-vectorize -mno-vzeroupper\" > ~/.R/Makevars")
self._write_strip(f"echo \"FFLAGS = $FFLAGS {APX_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip(f"echo \"CXXFLAGS = $CXXFLAGS {AVX2_CFLAGS} -ftree-vectorize -mno-vzeroupper \" >> ~/.R/Makevars")
self._write_strip("R CMD INSTALL "
f"{self.config.extra_configure} "
"--install-tests "
"--use-LTO "
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--data-compress=none "
"--compress=none "
"--build -l "
"%{buildroot}-va/usr/lib64/R/library .")
self._write_strip("echo \"CFLAGS = $CFLAGS -ftree-vectorize \" > ~/.R/Makevars")
self._write_strip("echo \"FFLAGS = $FFLAGS -ftree-vectorize \" >> ~/.R/Makevars")
@@ -1408,6 +1611,7 @@ class Specfile(object):
self._write_strip("R CMD INSTALL "
"--preclean "
f"{self.config.extra_configure} "
"--use-LTO "
"--install-tests "
"--data-compress=none "
@@ -1415,7 +1619,6 @@ class Specfile(object):
"--built-timestamp=${SOURCE_DATE_EPOCH} "
"--build -l "
"%{buildroot}/usr/lib64/R/library .")
self._write_strip("cp ~/.stash/* %{buildroot}/usr/lib64/R/library/*/libs/ || :")
self._write_strip("%{__rm} -rf %{buildroot}%{_datadir}/R/library/R.css")
self.write_find_lang()
@@ -1432,6 +1635,7 @@ class Specfile(object):
self._write_strip("mkdir -p clr-build")
self._write_strip("pushd clr-build")
self.write_variables()
self._write_strip("export GOAMD64=v2")
self._write_strip("%cmake {} {}".format(self.config.cmake_srcdir, self.extra_cmake))
self.write_profile_payload("cmake")
@@ -1444,10 +1648,11 @@ class Specfile(object):
self._write_strip("pushd clr-build-avx2")
self.write_build_prepend()
self.write_variables()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self._write_strip("%cmake {} {}".format(self.config.cmake_srcdir, self.extra_cmake))
self.write_make_line()
self._write_strip("popd")
@@ -1457,10 +1662,26 @@ class Specfile(object):
self._write_strip("pushd clr-build-avx512")
self.write_build_prepend()
self.write_variables()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -march=x86-64-v4 -m64 -Wl,-z,x86-64-v4 -mprefer-vector-width=512"')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -march=x86-64-v4 -m64 -Wl,-z,x86-64-v4 -mprefer-vector-width=512"')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -march=x86-64-v4 -m64 -Wl,-z,x86-64-v4 -mprefer-vector-width=512"')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -march=x86-64-v4 -m64 "')
self._write_strip("GOAMD64=v4")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX512_CFLAGS} "')
self._write_strip("%cmake {} {}".format(self.config.cmake_srcdir, self.extra_cmake))
self.write_make_line()
self._write_strip("popd")
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("mkdir -p clr-build-apx")
self._write_strip("pushd clr-build-apx")
self.write_build_prepend()
self.write_variables()
self._write_strip("GOAMD64=v3")
self._write_strip('CC=gcc-14')
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {APX_CFLAGS} {APX_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {APX_CFLAGS} "')
self._write_strip("%cmake {} {}".format(self.config.cmake_srcdir, self.extra_cmake))
self.write_make_line()
self._write_strip("popd")
@@ -1486,10 +1707,11 @@ class Specfile(object):
self._write_strip("module load openmpi")
self.write_build_prepend()
self.write_variables()
self._write_strip('CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS -march=x86-64-v3 -m64 -Wl,-z,x86-64-v3"')
self._write_strip('FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS -march=x86-64-v3 -m64"')
self._write_strip("GOAMD64=v3")
self._write_strip(f'CFLAGS="$CLEAR_INTERMEDIATE_CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'CXXFLAGS="$CLEAR_INTERMEDIATE_CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FFLAGS="$CLEAR_INTERMEDIATE_FFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "')
self._write_strip(f'FCFLAGS="$CLEAR_INTERMEDIATE_FCFLAGS {AVX2_CFLAGS} "')
self.write_cmake_line_openmpi()
self.write_make_line()
self._write_strip("module unload openmpi")
@@ -1523,7 +1745,18 @@ class Specfile(object):
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
self._write_strip("%qmake {} {}".format(extra_qmake_args, self.config.extra_configure))
self._write_strip('export QMAKE_CFLAGS="$CFLAGS"')
self._write_strip('export QMAKE_CXXFLAGS="$CXXFLAGS"')
self._write_strip('export QMAKE_LFLAGS="$LDFLAGS"')
self._write_strip('export QMAKE_LIBDIR=/usr/lib64')
self._write_strip('export QMAKE_CFLAGS_RELEASE=')
self._write_strip('export QMAKE_CXXFLAGS_RELEASE=')
if self.config.make_command:
qmake = self.config.make_command
else:
qmake = "qmake6"
self._write_strip(f"{qmake} {extra_qmake_args} {self.config.extra_configure}")
self._write_strip("test -r config.log && cat config.log")
self.write_make_line()
@@ -1532,9 +1765,9 @@ class Specfile(object):
if self.config.config_opts['use_avx2']:
self._write_strip("pushd ../buildavx2/" + self.config.subdir)
self._write("%qmake 'QT_CPU_FEATURES.x86_64 += avx avx2 bmi bmi2 f16c fma lzcnt popcnt'\\\n")
self._write(" QMAKE_CFLAGS+=\"-march=x86-64-v3 -Wl,-z,x86-64-v3\" QMAKE_CXXFLAGS+=\"-march=x86-64-v3 -Wl,-z,x86-64-v3\" \\\n")
self._write(" QMAKE_LFLAGS+=-march=x86-64-v3 {} {}\n".format(extra_qmake_args, self.config.extra_configure))
self._write(f"{qmake} 'QT_CPU_FEATURES.x86_64 += avx avx2 bmi bmi2 f16c fma lzcnt popcnt'\\\n")
self._write(f' QMAKE_CFLAGS+="{AVX2_CFLAGS} {AVX2_LFLAGS}" QMAKE_CXXFLAGS+="{AVX2_CFLAGS} {AVX2_LFLAGS}" \\\n')
self._write(f' QMAKE_LFLAGS+="{AVX2_LCFLAGS}" {extra_qmake_args} {self.config.extra_configure}\n')
self.write_make_line()
self._write_strip("popd")
@@ -1597,14 +1830,16 @@ class Specfile(object):
self.write_variables()
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
self._write_strip("export GOAMD64=v2")
self._write_strip('meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} {1} builddir'
.format(self.config.extra_configure,
self.config.extra_configure64))
self._write_strip("ninja -v -C builddir")
if self.config.config_opts['use_avx2']:
self._write_strip("GOAMD64=v3")
if self.config.config_opts['pgo'] and self.config.profile_payload != "":
self._write_strip('CFLAGS="$CFLAGS_GENERATE -m64 -march=x86-64-v3 -O3 -Wl,-z,x86-64-v3" CXXFLAGS="$CXXFLAGS_GENERATE '
'-m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 " LDFLAGS="$LDFLAGS_GENERATE -m64 -march=x86-64-v3" '
self._write_strip(f'CFLAGS="$CFLAGS_GENERATE {AVX2_CFLAGS} {AVX2_LFLAGS} " CXXFLAGS="$CXXFLAGS_GENERATE '
f'{AVX2_CFLAGS} {AVX2_LFLAGS} " LDFLAGS="$LDFLAGS_GENERATE {AVX2_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx2'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx2')
@@ -1612,21 +1847,22 @@ class Specfile(object):
self._write_strip("\n".join(self.config.profile_payload))
self._write_strip('popd')
self._write_strip('rm -rf builddiravx2')
self._write_strip('CFLAGS="$CFLAGS_USE -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 -O3" CXXFLAGS="$CXXFLAGS_USE '
'-m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 " LDFLAGS="$LDFLAGS_USE -m64 -march=x86-64-v3" '
self._write_strip(f'CFLAGS="$CFLAGS_USE {AVX2_CFLAGS} {AVX2_LFLAGS} " CXXFLAGS="$CXXFLAGS_USE '
f'{AVX2_CFLAGS} {AVX2_LFLAGS} " LDFLAGS="$LDFLAGS_USE {AVX2_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx2'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx2')
else:
self._write_strip('CFLAGS="$CFLAGS -m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 -O3" CXXFLAGS="$CXXFLAGS '
'-m64 -march=x86-64-v3 -Wl,-z,x86-64-v3 " LDFLAGS="$LDFLAGS -m64 -march=x86-64-v3" '
self._write_strip(f'CFLAGS="$CFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} " CXXFLAGS="$CXXFLAGS '
f'{AVX2_CFLAGS} {AVX2_LFLAGS} " LDFLAGS="$LDFLAGS {AVX2_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx2'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx2')
if self.config.config_opts['use_avx512']:
self._write_strip("GOAMD64=v4")
if self.config.config_opts['pgo'] and self.config.profile_payload != "":
self._write_strip('CFLAGS="$CFLAGS_GENERATE -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -O3" CXXFLAGS="$CXXFLAGS_GENERATE '
'-m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -mprefer-vector-width=512" LDFLAGS="$LDFLAGS_GENERATE -m64 -march=x86-64-v4" '
self._write_strip(f'CFLAGS="$CFLAGS_GENERATE {AVX512_CFLAGS} {AVX512_LFLAGS} " CXXFLAGS="$CXXFLAGS_GENERATE '
f'{AVX512_CFLAGS} {AVX512_LFLAGS} " LDFLAGS="$LDFLAGS_GENERATE {AVX512_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx512'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx512')
@@ -1634,17 +1870,44 @@ class Specfile(object):
self._write_strip("\n".join(self.config.profile_payload))
self._write_strip('popd')
self._write_strip('rm -rf builddiravx512')
self._write_strip('CFLAGS="$CFLAGS_USE -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -O3 -mprefer-vector-width=512" CXXFLAGS="$CXXFLAGS_USE '
'-m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -mprefer-vector-width=512" LDFLAGS="$LDFLAGS_USE -m64 -march=x86-64-v4" '
self._write_strip(f'CFLAGS="$CFLAGS_USE {AVX512_CFLAGS} {AVX512_LFLAGS} " CXXFLAGS="$CXXFLAGS_USE '
f'{AVX512_CFLAGS} {AVX512_LFLAGS} " LDFLAGS="$LDFLAGS_USE {AVX512_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx512'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx512')
else:
self._write_strip('CFLAGS="$CFLAGS -m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -O3 -mprefer-vector-width=512" CXXFLAGS="$CXXFLAGS '
'-m64 -march=x86-64-v4 -Wl,-z,x86-64-v4 -mprefer-vector-width=512" LDFLAGS="$LDFLAGS -m64 -march=x86-64-v4" '
self._write_strip(f'CFLAGS="$CFLAGS {AVX512_CFLAGS} {AVX512_LFLAGS} " CXXFLAGS="$CXXFLAGS '
f'{AVX512_CFLAGS} {AVX512_LFLAGS} " LDFLAGS="$LDFLAGS {AVX512_LCFLAGS} " '
'meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
'{1} builddiravx512'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddiravx512')
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("GOAMD64=v3")
self._write_strip('CC=gcc-14')
if self.config.config_opts['pgo'] and self.config.profile_payload != "":
self._write_strip(f'CFLAGS="$CFLAGS_GENERATE {APX_CFLAGS} {APX_LFLAGS} "'
f' CXXFLAGS="$CXXFLAGS_GENERATE {AVX2_CFLAGS} {AVX2_LFLAGS} "'
f' LDFLAGS="$LDFLAGS_GENERATE {APX_LCFLAGS} " '
' meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
' {1} builddirapx'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddirapx')
self._write_strip('pushd builddirapx')
self._write_strip("\n".join(self.config.profile_payload))
self._write_strip('popd')
self._write_strip('rm -rf builddirapx')
self._write_strip(f'CFLAGS="$CFLAGS_USE {APX_CFLAGS} {APX_LFLAGS} "'
f' CXXFLAGS="$CXXFLAGS_USE {AVX2_CFLAGS} {AVX2_LFLAGS} "'
f' LDFLAGS="$LDFLAGS_USE {APX_LCFLAGS} " '
' meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
' {1} builddirapx'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddirapx')
else:
self._write_strip(f'CFLAGS="$CFLAGS {APX_CFLAGS} {APX_LFLAGS} "'
f' CXXFLAGS="$CXXFLAGS {AVX2_CFLAGS} {AVX2_LFLAGS} "'
f' LDFLAGS="$LDFLAGS {APX_LCFLAGS} " '
' meson --libdir=lib64 --prefix=/usr --buildtype=plain {0} '
' {1} builddirapx'.format(self.config.extra_configure, self.config.extra_configure64))
self._write_strip('ninja -v -C builddirapx')
if self.config.subdir:
self._write_strip("popd")
if self.config.config_opts['32bit']:
@@ -1663,6 +1926,7 @@ class Specfile(object):
self._write_strip("%install")
self.write_variables()
self.write_install_prepend()
self._write_strip("export GOAMD64=v2")
self.write_license_files()
if self.config.config_opts['32bit']:
self._write_strip('pushd ../build32/' + self.config.subdir)
@@ -1683,10 +1947,17 @@ class Specfile(object):
if self.config.subdir:
self._write_strip("pushd " + self.config.subdir)
if self.config.config_opts['use_avx2']:
self._write_strip("GOAMD64=v3")
self._write_strip('DESTDIR=%{buildroot}-v3 ninja -C builddiravx2 install')
if self.config.config_opts['use_avx512']:
self._write_strip("GOAMD64=v4")
self._write_strip('DESTDIR=%{buildroot}-v4 ninja -C builddiravx512 install')
if self.config.config_opts['use_apx'] and not self.config.config_opts['use_clang']:
self._write_strip("GOAMD64=v3")
self._write_strip('CC=gcc-14')
self._write_strip('DESTDIR=%{buildroot}-va ninja -C builddirapx install')
self._write_strip("GOAMD64=v2")
self._write_strip("DESTDIR=%{buildroot} ninja -C builddir install")
if self.config.subdir:
self._write_strip("popd")
+15
View File
@@ -17,6 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import bz2
import configparser
import os
import re
@@ -50,6 +51,8 @@ class Source():
"""Determine compression type."""
if self.url.lower().endswith(('.zip', 'jar')):
self.type = 'zip'
elif self.url.lower().endswith(('.bz2')) and not self.url.lower().endswith(('.tar.bz2')):
self.type = 'bz2'
else:
self.type = 'tar'
@@ -78,6 +81,9 @@ class Source():
print_fatal("Not a valid tar file.")
sys.exit(1)
def set_bz2_prefix(self):
"""No prefix for plain bz2 archives."""
def set_zip_prefix(self):
"""Determine prefix folder name of zip file."""
if zipfile.is_zipfile(self.path):
@@ -108,6 +114,15 @@ class Source():
with tarfile.open(self.path) as content:
content.extractall(path=extraction_path)
def extract_bz2(self, extraction_path):
"""Extract plain bz2 file in path."""
with bz2.BZ2File(self.path, 'rb') as content:
data = content.read()
newfile = self.path.rsplit('/', 1)[1]
newfile = newfile.rsplit('.bz2', 1)[0]
with open(os.path.join(extraction_path), mode='wb') as f:
f.write(data)
def extract_zip(self, extraction_path):
"""Extract zip in path."""
with zipfile.ZipFile(self.path, 'r') as content:
+37 -4
View File
@@ -80,6 +80,13 @@ class TestBuildreq(unittest.TestCase):
self.assertFalse(self.reqs.add_requires('testreq', []))
self.assertNotIn('testreq', self.reqs.requires[None])
def test_add_banned_requires(self):
"""
Test add_requires with banned new req (override buildreq).
"""
self.assertFalse(self.reqs.add_requires('pypi(nose)', [], override=True))
self.assertNotIn('testreq', self.reqs.requires[None])
def test_ban_provides(self):
"""
Test ban_provides with prov already present in provides
@@ -129,20 +136,20 @@ class TestBuildreq(unittest.TestCase):
"""
Test configure_ac_line with standard pattern
"""
self.reqs.configure_ac_line('AC_CHECK_FUNC\([tgetent])', False)
self.reqs.configure_ac_line('AC_CHECK_FUNC([tgetent])', False)
self.assertIn('ncurses-devel', self.reqs.buildreqs)
def test_configure_ac_line_comment(self):
"""
Test configure_ac_line with commented line
"""
self.reqs.configure_ac_line('# AC_CHECK_FUNC\([tgetent])', False)
self.reqs.configure_ac_line('# AC_CHECK_FUNC([tgetent])', False)
self.assertEqual(self.reqs.buildreqs, set())
def test_configure_ac_line_pkg_check_modules(self):
"""
Test the somewhat complicated logic of configure_ac_line check for the
PKG_CHECK_MODULES\((.*?)\) line.
PKG_CHECK_MODULES((.*?)) line.
"""
self.reqs.configure_ac_line(
'PKG_CHECK_MODULES(prefix, '
@@ -193,6 +200,7 @@ class TestBuildreq(unittest.TestCase):
self.assertEqual(self.reqs.buildreqs,
set(['gettext',
'ncurses-devel',
'perl(XML::Parser)',
'pkgconfig(module2)',
'pkgconfig(module)',
@@ -613,12 +621,30 @@ class TestBuildreq(unittest.TestCase):
"valid": "valid",
"valid_but_commented": "valid_but_commented",
"different_name": "another_name",
"qt6.module1": "qt6module1",
"qt6.module2": "qt6module2",
"kf6.module3": "kf6module3",
"kf6.module4": "kf6module4",
".module5": "namodule5",
".module6": "namodule6"
}
content = '''
find_package(valid)
#find_package(foo)
# find_package(valid_but_commented)
find_package(different_name)
find_package(Qt6 stuff
module1
module2)
find_package(KF6 stuff
module3
module4
)
find_package(NOT_HANDLED_NAMESPACE stuff
module5
module6
)
'''
with tempfile.TemporaryDirectory() as tmpd:
with open(os.path.join(tmpd, 'fname'), 'w') as f:
@@ -626,7 +652,14 @@ find_package(different_name)
self.reqs.parse_cmake(os.path.join(tmpd, 'fname'), cmake_modules, False)
self.assertEqual(self.reqs.buildreqs,
set(['valid', 'another_name']))
set(['valid',
'another_name',
'qt6module1',
'qt6module2',
'kf6module3',
'kf6module4',
'namodule5',
'namodule6']))
def test_r_desc_field_begin(self):
"""Test parsing of the first R description field."""
+67
View File
@@ -33,6 +33,7 @@ class TestFiles(unittest.TestCase):
"/opt/two",
"/V3/opt/two",
"/V4/opt/two",
"/VA/opt/two",
"/usr/etc/three",
"/usr/local/four",
"/usr/src/five",
@@ -58,6 +59,7 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file('/etc/test-fn')
self.fm.push_package_file('/V3/etc/test-fn')
self.fm.push_package_file('/V4/etc/test-fn')
self.fm.push_package_file('/VA/etc/test-fn')
self.assertTrue(self.fm.has_banned)
self.assertFalse(self.fm.newfiles_printed)
@@ -84,6 +86,7 @@ class TestFiles(unittest.TestCase):
self.assertTrue(self.fm.compat_exclude('/usr/lib64/libfoo.so'))
self.assertTrue(self.fm.compat_exclude('/V3/usr/lib64/libfoo.so'))
self.assertTrue(self.fm.compat_exclude('/V4/usr/lib64/libfoo.so'))
self.assertTrue(self.fm.compat_exclude('/VA/usr/lib64/libfoo.so'))
def test_compat_exclude_not_compat_mode(self):
"""
@@ -94,6 +97,7 @@ class TestFiles(unittest.TestCase):
self.assertFalse(self.fm.compat_exclude('/usr/lib64/libfoo.so'))
self.assertFalse(self.fm.compat_exclude('/V3/usr/lib64/libfoo.so'))
self.assertFalse(self.fm.compat_exclude('/V4/usr/lib64/libfoo.so'))
self.assertFalse(self.fm.compat_exclude('/VA/usr/lib64/libfoo.so'))
def test_file_pat_match(self):
"""
@@ -107,6 +111,8 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file.assert_called_with('/V3/test-fn', 'main')
self.assertTrue(self.fm.file_pat_match('/V4/test-fn', r'^/test-fn', 'main'))
self.fm.push_package_file.assert_called_with('/V4/test-fn', 'main')
self.assertTrue(self.fm.file_pat_match('/VA/test-fn', r'^/test-fn', 'main'))
self.fm.push_package_file.assert_called_with('/VA/test-fn', 'main')
def test_file_pat_match_exclude(self):
"""
@@ -117,6 +123,7 @@ class TestFiles(unittest.TestCase):
self.assertTrue(self.fm.file_pat_match('/test-fn', r'^/test-fn', 'main'))
self.assertTrue(self.fm.file_pat_match('/V3/test-fn', r'^/test-fn', 'main'))
self.assertTrue(self.fm.file_pat_match('/V4/test-fn', r'^/test-fn', 'main'))
self.assertTrue(self.fm.file_pat_match('/VA/test-fn', r'^/test-fn', 'main'))
self.fm.push_package_file.assert_not_called()
def test_file_pat_match_replacement(self):
@@ -130,6 +137,8 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file.assert_called_with('/V3/testfn', 'main')
self.assertTrue(self.fm.file_pat_match('/V4/test-fn', r'/test-fn', 'main', '/testfn'))
self.fm.push_package_file.assert_called_with('/V4/testfn', 'main')
self.assertTrue(self.fm.file_pat_match('/VA/test-fn', r'/test-fn', 'main', '/testfn'))
self.fm.push_package_file.assert_called_with('/VA/testfn', 'main')
def test_file_pat_match_replacement_no_glob(self):
"""
@@ -143,6 +152,42 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file.assert_called_with('/V3/test-fn', 'main')
self.assertTrue(self.fm.file_pat_match('/V4/test-fn', r'^/test-fn', 'main', '/testfn'))
self.fm.push_package_file.assert_called_with('/V4/test-fn', 'main')
self.assertTrue(self.fm.file_pat_match('/VA/test-fn', r'^/test-fn', 'main', '/testfn'))
self.fm.push_package_file.assert_called_with('/VA/test-fn', 'main')
def test_file_windows_exe_not_allowed(self):
"""
Test that Windows exe and dll files are excluded
"""
self.fm.push_package_file = MagicMock()
self.fm.config.config_opts['allow_exe'] = False
self.fm.push_file('/usr/bin/foo.exe', 'test')
self.fm.push_file('/usr/lib64/foo.dll', 'test')
self.fm.push_file('/usr/lib/python3.12/site-packages/nsist/msvcrt/x86/api-ms-win-core-console-l1-1-0.dll', 'test')
self.fm.push_file('/usr/lib/python3.12/site-packages/installer/_scripts/t32.exe', 'test')
self.assertIn('/usr/bin/foo.exe', self.fm.excludes)
self.assertIn('/usr/lib64/foo.dll', self.fm.excludes)
self.assertIn('/usr/lib/python3.12/site-packages/nsist/msvcrt/x86/api-ms-win-core-console-l1-1-0.dll', self.fm.excludes)
self.assertIn('/usr/lib/python3.12/site-packages/installer/_scripts/t32.exe', self.fm.excludes)
def test_file_windows_exe_allowed(self):
"""
Test that Windows exe and dll files are not excluded
"""
self.fm.push_package_file = MagicMock()
self.fm.config.config_opts['allow_exe'] = True
self.fm.push_file('/usr/bin/foo.exe', 'test')
self.fm.push_file('/usr/lib64/foo.dll', 'test')
self.fm.push_file('/usr/lib/python3.12/site-packages/nsist/msvcrt/x86/api-ms-win-core-console-l1-1-0.dll', 'test')
self.fm.push_file('/usr/lib/python3.12/site-packages/installer/_scripts/t32.exe', 'test')
self.assertIn('/usr/bin/foo.exe', self.fm.files)
self.assertIn('/usr/lib64/foo.dll', self.fm.files)
self.assertIn('/usr/lib/python3.12/site-packages/nsist/msvcrt/x86/api-ms-win-core-console-l1-1-0.dll', self.fm.files)
self.assertIn('/usr/lib/python3.12/site-packages/installer/_scripts/t32.exe', self.fm.files)
self.assertNotIn('/usr/bin/foo.exe', self.fm.excludes)
self.assertNotIn('/usr/lib64/foo.dll', self.fm.excludes)
self.assertNotIn('/usr/lib/python3.12/site-packages/nsist/msvcrt/x86/api-ms-win-core-console-l1-1-0.dll', self.fm.excludes)
self.assertNotIn('/usr/lib/python3.12/site-packages/installer/_scripts/t32.exe', self.fm.excludes)
def test_file_pat_match_no_match(self):
"""
@@ -203,6 +248,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/foobar', '')
calls = [call('/V4/foobar', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/foobar', '')
calls = [call('/VA/foobar', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_package_file_glob_empty(self):
"""
@@ -220,6 +268,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/leftglobrightglob', '')
calls = [call('/V4/leftglob*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/leftglobrightglob', '')
calls = [call('/VA/leftglob*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_package_file_glob_left_match(self):
"""
@@ -237,6 +288,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/leftglobrightglob', '')
calls = [call('/V4/leftglob*', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/leftglobrightglob', '')
calls = [call('/VA/leftglob*', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_package_file_glob_right_match(self):
"""
@@ -254,6 +308,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/leftglobrightglob', '')
calls = [call('/V4/*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/leftglobrightglob', '')
calls = [call('/VA/*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_package_file_glob_leftright_match(self):
"""
@@ -271,6 +328,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/leftglobstuffrightglob', '')
calls = [call('/V4/leftglob*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/leftglobstuffrightglob', '')
calls = [call('/VA/leftglob*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_package_file_glob_multi_match(self):
"""
@@ -288,6 +348,9 @@ class TestFiles(unittest.TestCase):
self.fm.push_file('/V4/leftglobstuff/stuffrightglob', '')
calls = [call('/V4/leftglob*/*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
self.fm.push_file('/VA/leftglobstuff/stuffrightglob', '')
calls = [call('/VA/leftglob*/*rightglob', 'foobar-extras')]
self.fm.push_package_file.assert_has_calls(calls)
def test_push_file_setuid(self):
"""
@@ -313,6 +376,8 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file.assert_has_calls([call('/V3/usr/bin/test', 'bin')])
self.fm.push_file('/V4/usr/bin/test', '')
self.fm.push_package_file.assert_has_calls([call('/V4/usr/bin/test', 'bin')])
self.fm.push_file('/VA/usr/bin/test', '')
self.fm.push_package_file.assert_has_calls([call('/VA/usr/bin/test', 'bin')])
def test_push_file_match_pkg_name_dependency(self):
"""
@@ -327,6 +392,8 @@ class TestFiles(unittest.TestCase):
self.fm.push_package_file.assert_has_calls([call('/V3/usr/share/doc/testball/*', 'doc')])
self.fm.push_file('/V4/usr/share/doc/testball/', 'testball')
self.fm.push_package_file.assert_has_calls([call('/V4/usr/share/doc/testball/*', 'doc')])
self.fm.push_file('/VA/usr/share/doc/testball/', 'testball')
self.fm.push_package_file.assert_has_calls([call('/VA/usr/share/doc/testball/*', 'doc')])
def test_push_file_no_match(self):
"""
+1 -1
View File
@@ -10,7 +10,7 @@ class TestGeneral(unittest.TestCase):
interpolation=None argument
"""
grep_cmd = ["grep", "-re",
"ConfigParser(.*\(^interpolation=None\).*)",
"ConfigParser(.*(^interpolation=None).*)",
"autospec"]
try:
output = subprocess.check_output(grep_cmd).decode('utf-8')
+2 -2
View File
@@ -75,7 +75,7 @@ class TestLicense(unittest.TestCase):
conf.license_show = "license.show.url"
license.license_from_copying_hash('tests/COPYING_TEST', '', conf, '')
self.assertEquals(license.licenses, [])
self.assertEqual(license.licenses, [])
def test_license_from_copying_hash_bad_license(self):
"""
@@ -89,7 +89,7 @@ class TestLicense(unittest.TestCase):
with patch('license.get_contents', m_open, create=True):
license.license_from_copying_hash('copying.txt', '', conf, '')
self.assertEquals(license.licenses, [])
self.assertEqual(license.licenses, [])
def test_license_from_copying_hash_license_server_excep(self):
"""