Compare commits

..

23 Commits
epel8 ... epel9

Author SHA1 Message Date
Maxwell G e144404aa7
Add forge-srpm-macros to the buildroot
10 months ago
Mattias Ellert 1b116421bf Add qt6-srpm-macros to the buildroot. Fixes rhbz#2220860.
1 year ago
Maxwell G 83096c1f15
Rebuild for RHEL 9.2
2 years ago
Maxwell G 22656b4be3
Add rust-srpm-macros-epel to the buildroot
2 years ago
Artur Frenszek-Iwicki fd96ff6194
Add a Requires on fpc-srpm-macros
2 years ago
Maxwell G a0d0fa2bf3
Add rpmautospec to the buildroot to mirror Fedora
2 years ago
Jitka Plesnikova 41c3ca379c Add boolean operator to perl-generators-epel
2 years ago
Jitka Plesnikova 0657f9b47c Add perl-generators-epel to the buildroot
2 years ago
Maxwell G ee11dd5032
Add go-srpm-macros-epel to the buildroot
2 years ago
Maxwell G c212ede694
Backport macros.shell-completions from Fedora
2 years ago
Carl George e19afa3b2e Backport java_arches macro from Fedora
3 years ago
Maxwell G db0166460a
Add `Requires: ansible-srpm-macros`
3 years ago
Carl George 61359cc134 Rebuild for EPEL9
3 years ago
Miro Hrončok 3dd1c45c3a Minor packaging nitpicks
3 years ago
Troy Dawson 1e810d8164 Add %dist to Release:, Fix pyproject-rpm-macros typo
3 years ago
Troy Dawson e714c8c15a Cleanup spec, prepare for new macros
3 years ago
Troy Dawson 5ac77a6aae epel-rpm-macros.rpmlintrc not used
3 years ago
Troy Dawson 34c5276fa0 macros.build-constraints provided by redhat-rpm-config
3 years ago
Troy Dawson 7353e5ae80 gpgverify provided by redhat-rpm-config
3 years ago
Troy Dawson 8ee9fd160e pythondist.attr provided by python3-rpm-generators
3 years ago
Troy Dawson 8122e8fd36 remove macros already in rhel9
3 years ago
Troy Dawson ccc4dda6d5 pyproject-rpm-macros in CRB thus not required by python3-devel or python3-rpm-macros
3 years ago
Troy Dawson ec361e3258 - Update release to 9
3 years ago

@ -1,3 +0,0 @@
addFilter("no-%build-section")
addFilter("no-documentation")
addFilter("only-non-binary-in-usr-lib")

@ -1,10 +1,9 @@
Name: epel-rpm-macros Name: epel-rpm-macros
Version: 8 Version: 9
Release: 41 Release: 14%{dist}
Summary: Extra Packages for Enterprise Linux RPM macros Summary: Extra Packages for Enterprise Linux RPM macros
# import_all_modules.py: MIT License: GPLv2
License: GPLv2 and MIT
# This is a EPEL maintained package which is specific to # This is a EPEL maintained package which is specific to
# our distribution. Thus the source is only available from # our distribution. Thus the source is only available from
@ -12,192 +11,107 @@ License: GPLv2 and MIT
URL: https://download.fedoraproject.org/pub/epel URL: https://download.fedoraproject.org/pub/epel
Source0: macros.epel-rpm-macros Source0: macros.epel-rpm-macros
Source1: macros.zzz-epel-override Source1: macros.zzz-epel-override
Source3: pythondist.attr Source2: GPL
Source9: GPL #Add source for misc macros below here
# https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/rawhide/f/macros.shell-completions
Source3: macros.shell-completions
# sysusers https://src.fedoraproject.org/rpms/systemd/c/ced9237a14d6775a98e1a2f93880990417b4ae6e
Source21: macros.sysusers
Source22: sysusers.attr
Source23: sysusers.prov
Source24: sysusers.generate-pre.sh
# misc macros
Source150: macros.build-constraints
Source151: https://src.fedoraproject.org/rpms/redhat-rpm-config/raw/rawhide/f/macros.shell-completions
# autochangelog and autorelease fallback macros
%global rpmautospec_commit 52f3c2017e10c5ab5a183fed772e9fe8a86a20fb
Source152: https://pagure.io/fedora-infra/rpmautospec/raw/%{rpmautospec_commit}/f/rpm/macros.d/macros.rpmautospec
# Python code
Source302: import_all_modules.py
BuildArch: noarch BuildArch: noarch
Requires: redhat-release >= %{version} Requires: redhat-release >= %{version}
# For FPC buildroot macros # For FPC buildroot macros
Requires: fpc-srpm-macros Requires: fpc-srpm-macros
# For Lua SRPM macros # pyproject-rpm-macros in CRB thus not required by python3-devel or python3-rpm-macros
Requires: lua-srpm-macros # https://bugzilla.redhat.com/show_bug.cgi?id=2001034
# For python buildroot macros Requires: (pyproject-rpm-macros if python3-rpm-macros)
Requires: python-srpm-macros
# Since the RHEL python-devel package doesn't require them, bring them in here
Requires: python-rpm-macros
Requires: (python2-rpm-macros if python2-devel)
# Make sure EPEL8's Python 3 packages use /usr/bin/python3.{6,8,9} instead of /usr/libexec/platform-python.
# This will install the python3X-rpm-macros version corresponding to the python3X-devel version installed.
# If multiple versions are installed together, it will prefer python36-rpm-macros, the default Python version.
Requires: (python-modular-rpm-macros if (python36-devel or python38-devel or python39-devel or python3.11-devel or python3.12-devel))
# We use weak dependencies here in order to avoid creating conflicts between
# the different python3X-devel packages.
Recommends: (python36-rpm-macros if python36-devel)
Suggests: (python38-rpm-macros if python38-devel)
Suggests: (python39-rpm-macros if python39-devel)
Suggests: (python3.11-rpm-macros if python3.11-devel)
Suggests: (python3.12-rpm-macros if python3.12-devel)
# # python3-rpm-generators is already pulled in by python3X-devel
# (indirectly through platform-python-devel by python36-devel and directly by the rest),
# but we explictly Require it here, as it's needed by pythondist.attr.
Requires: (python3-rpm-generators if python-modular-rpm-macros)
#systemd additional macros https://pagure.io/epel/issue/77
Requires: (epel-rpm-macros-systemd if systemd-rpm-macros)
Requires: ansible-srpm-macros Requires: ansible-srpm-macros
# Backwards-compatible backport of the new forge-srpm-macros from Fedora that
# avoids conflicts with EL 9's old version
Requires: forge-srpm-macros
# Provides backports from Fedora's go-rpm-macros and fixes critical
# bugs in RHEL's go-rpm-macros.
# Just like in Fedora, only the minimal -srpm-macros are needed in the buildroot.
# The rest of the macros are pulled in dynamically.
Requires: go-srpm-macros-epel
# Provides backports from Fedora's rust-srpm-macros
Requires: rust-srpm-macros-epel
# Provides backport from Fedora's perl-generators related to proposal # Provides backport from Fedora's perl-generators related to proposal
# https://fedoraproject.org/wiki/Changes/Perl_replace_MODULE_COMPAT_by_generator # https://fedoraproject.org/wiki/Changes/Perl_replace_MODULE_COMPAT_by_generator
Requires: (perl-generators-epel if perl-generators) Requires: (perl-generators-epel if perl-generators)
# Add rpmautospec to the buildroot to mirror Fedora
Requires: rpmautospec-rpm-macros
Requires: qt6-srpm-macros
%description %description
This package contains the Extra Packages for Enterprise Linux (EPEL) RPM This package contains the Extra Packages for Enterprise Linux (EPEL) RPM
macros for building EPEL packages. macros for building EPEL packages.
%package systemd
Summary: Extra Packages for Enterprise Linux RPM macros (systemd)
Requires: epel-rpm-macros
Requires: systemd-rpm-macros
%description systemd
This package contains the systemd specific Extra Packages for Enterprise
Linux (EPEL) RPM macros for building EPEL packages.
%prep %prep
%setup -cT %setup -cT
install -pm 644 %{SOURCE9} . install -pm 644 %{SOURCE2} .
%install %install
#GPG Key #epel rpm macros
install -Dpm 644 %{SOURCE0} \ install -Dpm 644 %{SOURCE0} \
%{buildroot}%{_rpmmacrodir}/macros.epel-rpm-macros %{buildroot}%{_rpmmacrodir}/macros.epel-rpm-macros
install -Dpm 644 %{SOURCE1} \ install -Dpm 644 %{SOURCE1} \
%{buildroot}%{_sysconfdir}/rpm/macros.zzz-epel-override %{buildroot}%{_sysconfdir}/rpm/macros.zzz-epel-override
#Add misc macros below here
install -Dpm 644 %{SOURCE3} \ install -Dpm 644 %{SOURCE3} \
%{buildroot}%{_fileattrsdir}/pythondist.attr
# sysusers
install -Dpm 0644 %{SOURCE21} \
%{buildroot}%{_rpmmacrodir}/macros.sysusers
install -Dpm 0644 %{SOURCE22} \
%{buildroot}%{_fileattrsdir}//sysusers.attr
install -Dpm 0755 %{SOURCE23} \
%{buildroot}%{_rpmconfigdir}/sysusers.prov
install -Dpm 0755 %{SOURCE24} \
%{buildroot}%{_rpmconfigdir}/sysusers.generate-pre.sh
# misc macros
install -Dpm 644 %{SOURCE150} \
%{buildroot}%{_rpmmacrodir}/macros.build-constraints
install -Dpm 644 %{SOURCE151} \
%{buildroot}%{_rpmmacrodir}/macros.shell-completions %{buildroot}%{_rpmmacrodir}/macros.shell-completions
install -Dpm 644 %{SOURCE152} \
%{buildroot}%{_rpmmacrodir}/macros.rpmautospec
# python scripts
mkdir -p %{buildroot}%{_rpmconfigdir}/redhat
install -Dpm 644 %{SOURCE302} %{buildroot}%{_rpmconfigdir}/redhat/
%files %files
%license GPL %license GPL
%{_rpmmacrodir}/macros.epel-rpm-macros %{_rpmmacrodir}/macros.epel-rpm-macros
%{_rpmmacrodir}/macros.rpmautospec
%{_sysconfdir}/rpm/macros.zzz-epel-override %{_sysconfdir}/rpm/macros.zzz-epel-override
%{_fileattrsdir}/pythondist.attr
# misc macros
%{_rpmmacrodir}/macros.build-constraints
%{_rpmmacrodir}/macros.shell-completions %{_rpmmacrodir}/macros.shell-completions
# python scripts
%{_rpmconfigdir}/redhat/import_all_modules.py
%files systemd
# sysusers
%{_rpmconfigdir}/macros.d/macros.sysusers
%{_rpmconfigdir}/fileattrs/sysusers.attr
%{_rpmconfigdir}/sysusers.prov
%{_rpmconfigdir}/sysusers.generate-pre.sh
%changelog %changelog
* Wed Jan 03 2024 Miro Hrončok <mhroncok@redhat.com> - 8-41 * Sat Mar 02 2024 Maxwell G <maxwell@gtmx.me> - 9-14
- Prepare support for Python 3.12 - Add forge-srpm-macros to the buildroot
* Thu Oct 05 2023 Mattias Ellert <mattias.ellert@physics.uu.se> - 9-13
- Add qt6-srpm-macros to the buildroot. Fixes rhbz#2220860.
* Fri Oct 06 2023 Orion Poplawski <orion@nwra.com> - 8-40 * Wed May 10 2023 Maxwell G <maxwell@gtmx.me> - 9-12
- Add full %%py3_check_import macro - Rebuild for RHEL 9.2
* Fri Apr 07 2023 Miro Hrončok <mhroncok@redhat.com> - 8-39 * Sun Mar 05 2023 Artur Frenszek-Iwicki <fedora@svgames.pl> - 9-11
- Prepare support for Python 3.11 - Add fpc-srpm-macros to the buildroot
* Fri Mar 10 2023 Maxwell G <maxwell@gtmx.me> - 8-38 * Sat Feb 25 2023 Maxwell G <maxwell@gtmx.me> - 9-10
- Backport rpmautospec fallback macros - Add rust-srpm-macros-epel to the buildroot
* Wed Feb 08 2023 Maxwell G <gotmax@e.email> - 8-37 * Fri Feb 10 2023 Maxwell G <gotmax@e.email> - 9-9
- Stop overriding macros that are now in RHEL 8.7 - Add rpmautospec to the buildroot to mirror Fedora
* Mon Jan 23 2023 Jitka Plesnikova <jplesnik@redhat.com> - 8-36 * Mon Jan 23 2023 Jitka Plesnikova <jplesnik@redhat.com> - 9-8
- Add perl-generators-epel to the buildroot - Add perl-generators-epel to the buildroot
* Tue Nov 22 2022 Todd Zullinger <tmz@pobox.com> - 8-35 * Fri Sep 02 2022 Maxwell G <gotmax@e.email> - 9-7
- Backport macros.shell-completions from Fedora - Add go-srpm-macros-epel to the buildroot
* Tue Nov 08 2022 Maxwell G <gotmax@e.email> - 8-34 * Thu Sep 01 2022 Maxwell G <gotmax@e.email> - 9-6
- Set %%__python3 to /usr/bin/python3.6 by default - Backport macros.shell-completions from Fedora
* Wed Aug 24 2022 Iñaki Úcar <iucar@fedoraproject.org> - 8-33 * Fri May 27 2022 Carl George <carl@george.computer> - 9-5
- Backport java_arches macro from Fedora - Backport java_arches macro from Fedora
* Sat Jul 16 2022 Maxwell G <gotmax@e.email> - 8-32 * Tue May 17 2022 Maxwell G <gotmax@e.email> - 9-4
- Explicitly Require python3-rpm-generators
- Remove %%__pythondist_provides from pythondist.attr.
- Ensure that packages built against alternative python stacks do not have
python3dist(x) Provides.
- Related: rhbz#1776941.
* Sat Jul 16 2022 Miro Hrončok <mhroncok@redhat.com> - 8-31
- Fix a regression in the %%pytest definition (/usr/bin/pytest: No such file or directory)
* Tue May 24 2022 Maxwell G <gotmax@e.email> - 8-30
- Pull in appropriate python3X-rpm-macros package for non-default Python
versions
- Ensure the python macros work properly when building against non-default
python interpreters.
- Only pull in python2-rpm-macros when python2-devel is present.
- Remove macros that have been added to RHEL itself.
* Tue May 17 2022 Maxwell G <gotmax@e.email> - 8-29
- Add `Requires: ansible-srpm-macros` - Add `Requires: ansible-srpm-macros`
- Backport @churchyard's packaging nitpicks from epel9
* Tue Mar 15 2022 Miro Hrončok <mhroncok@redhat.com> - 8-28
- Remove %%gpgverify and /usr/lib/rpm/gpgverify, it is available in RHEL 8.4+
* Wed Jan 19 2022 Pablo Greco <pgreco@centosproject.org> - 8-27 * Thu Dec 02 2021 Carl George <carl@george.computer> - 9-3
- Backport systemd sysusers macros from Fedora - Rebuild for EPEL9
* Wed Oct 27 2021 Karolina Surma <ksurma@redhat.com> - 8-26 * Mon Oct 25 2021 Troy Dawson <tdawson@redhat.com> - 9-2
- Add -t, -f, -e options to %%py_check_import which emit warning when used - Add %%dist to Release:
- Fix pyproject-rpm-macros typo
* Tue Oct 26 2021 Tomas Orsava <torsava@redhat.com> - 8-25 * Mon Oct 25 2021 Troy Dawson <tdawson@redhat.com> - 9-1
- Define a new macros %%python_wheel_dir and %%python_wheel_pkg_prefix - Make an initial macro set for 9
* Wed Sep 1 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 8-24 * Wed Sep 1 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 8-24
- Fix macros.build-constraints' %%limit_build - Fix macros.build-constraints' %%limit_build

@ -1,171 +0,0 @@
'''Script to perform import of each module given to %%py_check_import
'''
import argparse
import importlib
import fnmatch
import os
import re
import site
import sys
from contextlib import contextmanager
from pathlib import Path
def read_modules_files(file_paths):
'''Read module names from the files (modules must be newline separated).
Return the module names list or, if no files were provided, an empty list.
'''
if not file_paths:
return []
modules = []
for file in file_paths:
file_contents = file.read_text()
modules.extend(file_contents.split())
return modules
def read_modules_from_cli(argv):
'''Read module names from command-line arguments (space or comma separated).
Return the module names list.
'''
if not argv:
return []
# %%py3_check_import allows to separate module list with comma or whitespace,
# we need to unify the output to a list of particular elements
modules_as_str = ' '.join(argv)
modules = re.split(r'[\s,]+', modules_as_str)
# Because of shell expansion in some less typical cases it may happen
# that a trailing space will occur at the end of the list.
# Remove the empty items from the list before passing it further
modules = [m for m in modules if m]
return modules
def filter_top_level_modules_only(modules):
'''Filter out entries with nested modules (containing dot) ie. 'foo.bar'.
Return the list of top-level modules.
'''
return [module for module in modules if '.' not in module]
def any_match(text, globs):
'''Return True if any of given globs fnmatchcase's the given text.'''
return any(fnmatch.fnmatchcase(text, g) for g in globs)
def exclude_unwanted_module_globs(globs, modules):
'''Filter out entries which match the either of the globs given as argv.
Return the list of filtered modules.
'''
return [m for m in modules if not any_match(m, globs)]
def read_modules_from_all_args(args):
'''Return a joined list of modules from all given command-line arguments.
'''
modules = read_modules_files(args.filename)
modules.extend(read_modules_from_cli(args.modules))
if args.exclude:
modules = exclude_unwanted_module_globs(args.exclude, modules)
if args.top_level:
modules = filter_top_level_modules_only(modules)
# Error when someone accidentally managed to filter out everything
if len(modules) == 0:
raise ValueError('No modules to check were left')
return modules
def import_modules(modules):
'''Procedure to perform import check for each module name from the given list of modules.
'''
for module in modules:
print('Check import:', module, file=sys.stderr)
importlib.import_module(module)
def argparser():
parser = argparse.ArgumentParser(
description='Generate list of all importable modules for import check.'
)
parser.add_argument(
'modules', nargs='*',
help=('Add modules to check the import (space or comma separated).'),
)
parser.add_argument(
'-f', '--filename', action='append', type=Path,
help='Add importable module names list from file.',
)
parser.add_argument(
'-t', '--top-level', action='store_true',
help='Check only top-level modules.',
)
parser.add_argument(
'-e', '--exclude', action='append',
help='Provide modules globs to be excluded from the check.',
)
return parser
@contextmanager
def remove_unwanteds_from_sys_path():
'''Remove cwd and this script's parent from sys.path for the import test.
Bring the original contents back after import is done (or failed)
'''
cwd_absolute = Path.cwd().absolute()
this_file_parent = Path(__file__).parent.absolute()
old_sys_path = list(sys.path)
for path in old_sys_path:
if Path(path).absolute() in (cwd_absolute, this_file_parent):
sys.path.remove(path)
try:
yield
finally:
sys.path = old_sys_path
def addsitedirs_from_environ():
'''Load directories from the _PYTHONSITE environment variable (separated by :)
and load the ones already present in sys.path via site.addsitedir()
to handle .pth files in them.
This is needed to properly import old-style namespace packages with nspkg.pth files.
See https://bugzilla.redhat.com/2018551 for a more detailed rationale.'''
for path in os.getenv('_PYTHONSITE', '').split(':'):
if path in sys.path:
site.addsitedir(path)
def main(argv=None):
cli_args = argparser().parse_args(argv)
if not cli_args.modules and not cli_args.filename:
raise ValueError('No modules to check were provided')
modules = read_modules_from_all_args(cli_args)
with remove_unwanteds_from_sys_path():
addsitedirs_from_environ()
import_modules(modules)
if __name__ == '__main__':
main()

@ -1,42 +0,0 @@
# Macros to constrain resource use during the build process
# outputs build flag overrides to be used in conjunction with
# %%make_build, %%cmake_build etc.
#
# if no override is needed, this macro outputs nothing
#
# - m memory limit in MBs per core; default is 1024
#
# Usage:
# e.g. %make_build %{limit_build -m 2048}
# => /usr/bin/make -O -j16 V=1 VERBOSE=1
# %make_build %{limit_build -m 40960}
# => /usr/bin/make -O -j16 V=1 VERBOSE=1 -j1
#
%limit_build(m:) %{lua:
local mem_per_process=rpm.expand("%{-m*}")
if mem_per_process == "" then
mem_per_process = 1024
else
mem_per_process = tonumber(mem_per_process)
end
local mem_total = 0
for line in io.lines('/proc/meminfo') do
if line:sub(1, 9) == "MemTotal:" then
local tokens = {}
for token in line:gmatch("%w+") do
tokens[#tokens + 1] = token
end
mem_total = tonumber(tokens[2])
break
end
end
local max_jobs = mem_total // (mem_per_process * 1024)
if max_jobs < 1 then
max_jobs = 1
end
cur_max_jobs=tonumber(rpm.expand("%{_smp_build_ncpus}"))
if cur_max_jobs > max_jobs then
print("-j" .. max_jobs)
end
}

@ -1,109 +1,9 @@
# epel macros # epel macros
%epel 8 %epel 9
# Mono macros requested in rhbz 1295117
%mono_arches %{ix86} x86_64 sparc sparcv9 ia64 %{arm} alpha s390x ppc ppc64 ppc64le
%_monodir %{_prefix}/lib/mono
%_monogacdir %{_monodir}/gac
# Bash completions; not in bash to not intefere with install ordering # Bash completions; not in bash to not intefere with install ordering
# %bash_completion_dir /usr/share/bash-completion/completions/
# NOTE: This macro is deprecated; point to the preferred macro from
# macros.shell-completions
%bash_completion_dir %{bash_completions_dir}
# Use the non-underscored Python macros to refer to Python in spec, etc.
%python2 %__python2
# Users can use %%python only if they redefined %%__python (e.g. to %%__python3)
%python() %{lua:\
__python = rpm.expand("%__python")\
if __python == "/usr/bin/python" then\
rpm.expand("%{error:Cannot use %%python if %%__python wasn't redefined to something other than /usr/bin/python.}")\
else\
print(__python)\
end\
}
# With $PATH and $PYTHONPATH set to the %%buildroot,
# try to import the given Python module(s).
# Useful as a smoke test in %%check when running tests is not feasible.
# Use spaces or commas as separators.
%py_check_import(e:tf:) %{expand:\\\
%{-e:echo 'WARNING: The -e option of %%%%py_check_import is not currently supported on EPEL.' >&2}
%{-t:echo 'WARNING: The -t option of %%%%py_check_import is not currently supported on EPEL.' >&2}
%{-f:echo 'WARNING: The -f option of %%%%py_check_import is not currently supported on EPEL.' >&2}
(cd %{_topdir} &&\\\
PATH="%{buildroot}%{_bindir}:$PATH"\\\
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python_sitearch}:%{buildroot}%{python_sitelib}}"\\\
PYTHONDONTWRITEBYTECODE=1\\\
%{__python} -c "import %{lua:local m=rpm.expand('%{?*}'):gsub('[%s,]+', ', ');print(m)}"
)
}
%py2_check_import(e:tf:) %{expand:\\\
%{-e:echo 'WARNING: The -e option of %%%%py2_check_import is not currently supported on EPEL.' >&2}
%{-t:echo 'WARNING: The -t option of %%%%py2_check_import is not currently supported on EPEL.' >&2}
%{-f:echo 'WARNING: The -f option of %%%%py2_check_import is not currently supported on EPEL.' >&2}
(cd %{_topdir} &&\\\
PATH="%{buildroot}%{_bindir}:$PATH"\\\
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python2_sitearch}:%{buildroot}%{python2_sitelib}}"\\\
PYTHONDONTWRITEBYTECODE=1\\\
%{__python2} -c "import %{lua:local m=rpm.expand('%{?*}'):gsub('[%s,]+', ', ');print(m)}"
)
}
# With $PATH and $PYTHONPATH set to the %%buildroot,
# try to import the Python 3 module(s) given as command-line args or read from file (-f).
# Respect the custom values of %%py3_shebang_flags or set nothing if it's undefined.
# Filter and check import on only top-level modules using -t flag.
# Exclude unwanted modules by passing their globs to -e option.
# Useful as a smoke test in %%check when running tests is not feasible.
# Use spaces or commas as separators if providing list directly.
# Use newlines as separators if providing list in a file.
%py3_check_import(e:tf:) %{expand:\\\
PATH="%{buildroot}%{_bindir}:$PATH"\\\
PYTHONPATH="${PYTHONPATH:-%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}}"\\\
_PYTHONSITE="%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}"\\\
PYTHONDONTWRITEBYTECODE=1\\\
%{lua:
local command = "%{__python3} "
if rpm.expand("%{?py3_shebang_flags}") ~= "" then
command = command .. "-%{py3_shebang_flags}"
end
command = command .. " %{_rpmconfigdir}/redhat/import_all_modules.py "
-- handle multiline arguments correctly, see https://bugzilla.redhat.com/2018809
local args=rpm.expand('%{?**}'):gsub("[%s\\\\]*%s+", " ")
print(command .. args)
}
}
# When packagers go against the Packaging Guidelines and disable the runtime
# dependency generator, we want it to fall back to only creating the python(abi)
# Requires instead of none at all.
#
# This macro is EPEL 8 only, as the pythondist dependency generator
# is already disabled by the default in RHEL.
%python_disable_dependency_generator() \
%undefine __pythondist_requires \
%{nil}
# Define where Python wheels will be stored and the prefix of -wheel packages
# - In Fedora we want wheel subpackages named e.g. `python-pip-wheel` that
# install packages into `/usr/share/python-wheels`. Both names are not
# versioned, because they're used by all Python 3 stacks.
# - In RHEL we want wheel packages named e.g. `python3-pip-wheel` and
# `python3.11-pip-wheel` that install packages into similarly versioned
# locations. We want each Python stack in RHEL to have their own wheels,
# because the main python3 wheels (which we can't upgrade) will likely be
# quite old by the time we're adding new alternate Python stacks.
# - In ELN we want to follow Fedora, because builds for ELN and Fedora rawhide
# need to be interoperable.
%python_wheel_pkg_prefix python%{?rhel:%{!?eln:%{python3_pkgversion}}}
%python_wheel_dir %{_datadir}/%{python_wheel_pkg_prefix}-wheels
# qt5 macro removed from RHEL8 but needed to ensure qtwebengine, and
# its dependencies build on supported arches.
%qt5_qtwebengine_arches %{ix86} x86_64 %{arm} aarch64 mips mipsel mips64el
# Arches that OpenJDK and dependent packages run on # Arches that OpenJDK and dependent packages run on
%java_arches aarch64 ppc64le s390x x86_64 %java_arches aarch64 ppc64le s390x x86_64

@ -1,16 +0,0 @@
%autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = tonumber(rpm.expand("%{?_rpmautospec_release_number}%{!?_rpmautospec_release_number:1}"));
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
%autochangelog %{lua:
locale = os.setlocale(nil)
os.setlocale("C.utf8")
date = os.date("%a %b %d %Y")
os.setlocale(locale)
packager = rpm.expand("%{?packager}%{!?packager:John Doe <packager@example.com>}")
evr = rpm.expand("%{?epoch:%{epoch}:}%{version}-%{release}")
print("* " .. date .. " " .. packager .. " - " .. evr .. "\\n")
print("- local build")
}

@ -1,10 +0,0 @@
# RPM macros for packages creating system accounts
#
# Turn a sysusers.d file into macros specified by
# https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/#_dynamic_allocation
%sysusers_requires_compat Requires(pre): shadow-utils
%sysusers_create_compat() \
%(%{_rpmconfigdir}/sysusers.generate-pre.sh %{?*}) \
%{nil}

@ -1,27 +1,3 @@
# This file is used _only_ to override macros which exist in RHEL. # This file is used _only_ to override macros which exist in RHEL.
# It should be used very sparingly. # It should be used very sparingly.
# Override %__python3 here based on %%python3_pkgversion to avoid relying on the finicky
# python3X-rpm-macros packages.
# Backported from https://src.fedoraproject.org/rpms/python-rpm-macros/c/a8b26546eb699afe0dbfcef913a2aa7085fc5afb?branch=rawhide
#
# EPEL specific, RHEL defines this in the python3X-rpm-macros packages
# and the default is /usr/libexec/platform-python.
# Usually, we don't want EPEL packages to use platform-python.
# Packages that want to do that can explicitly override this.
#
# When %%python3_pkgveresion is set to 3 (i.e. the default), we override
# %%__python3 to /usr/bin/python3.6 to ensure that programs are always run with
# python3.6, even if /usr/bin/python3 is a symlink to a different interpreter.
#
# See https://lists.fedoraproject.org/archives/list/epel-devel@lists.fedoraproject.org/thread/RE3PG72B5AX7NTACPDSBGOWCMN7I3OQJ/
%__python3 %{lua:
local bin = "/usr/bin/python"
if rpm.expand("%python3_pkgversion") == "3" then
bin = bin .. "3.6"
else
bin = bin .. rpm.expand("%{_python3_pkgversion_with_dot}")
end
print(bin)
}

@ -1,2 +0,0 @@
%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires
%__pythondist_path ^/usr/lib(64)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$

@ -1,2 +0,0 @@
%__sysusers_provides %{_rpmconfigdir}/sysusers.prov
%__sysusers_path ^%{_sysusersdir}/.*\\.conf$

@ -1,79 +0,0 @@
#!/bin/bash
# This script turns sysuser.d files into scriptlets mandated by Fedora
# packaging guidelines. The general idea is to define users using the
# declarative syntax but to turn this into traditional scriptlets.
user() {
user="$1"
uid="$2"
desc="$3"
group="$4"
home="$5"
shell="$6"
[ "$desc" = '-' ] && desc=
{ [ "$home" = '-' ] || [ "$home" = '' ]; } && home=/
{ [ "$shell" = '-' ] || [ "$shell" = '' ]; } && shell=/sbin/nologin
if [ "$uid" = '-' ] || [ "$uid" = '' ]; then
cat <<EOF
getent passwd '$user' >/dev/null || \\
useradd -r -g '$group' -d '$home' -s '$shell' -c '$desc' '$user'
EOF
else
cat <<EOF
if ! getent passwd '$user' >/dev/null ; then
if ! getent passwd '$uid' >/dev/null ; then
useradd -r -u '$uid' -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
else
useradd -r -g '$group' -d '$home' -s /sbin/nologin -c '$desc' '$user'
fi
fi
EOF
fi
}
group() {
group="$1"
gid="$2"
if [ "$gid" = '-' ]; then
cat <<-EOF
getent group '$group' >/dev/null || groupadd -r '$group'
EOF
else
cat <<-EOF
getent group '$group' >/dev/null || groupadd -f -g '$gid' -r '$group'
EOF
fi
}
parse() {
while read -r line || [ -n "$line" ] ; do
{ [ "${line:0:1}" = '#' ] || [ "${line:0:1}" = ';' ]; } && continue
line="${line## *}"
[ -z "$line" ] && continue
eval "arr=( $line )"
case "${arr[0]}" in
('u')
group "${arr[1]}" "${arr[2]}"
user "${arr[1]}" "${arr[2]}" "${arr[3]}" "${arr[1]}" "${arr[4]}" "${arr[5]}"
# TODO: user:group support
;;
('g')
group "${arr[1]}" "${arr[2]}"
;;
('m')
group "${arr[2]}" "-"
user "${arr[1]}" "-" "" "${arr[2]}"
;;
esac
done
}
for fn in "$@"; do
[ -e "$fn" ] || continue
echo "# generated from $(basename "$fn")"
parse <"$fn"
done

@ -1,28 +0,0 @@
#!/bin/bash
parse() {
while read line; do
[ "${line:0:1}" = '#' -o "${line:0:1}" = ';' ] && continue
line="${line## *}"
[ -z "$line" ] && continue
set -- $line
case "$1" in
('u')
echo "user($2)"
echo "group($2)"
# TODO: user:group support
;;
('g')
echo "group($2)"
;;
('m')
echo "user($2)"
echo "group($3)"
;;
esac
done
}
while read fn; do
parse < "$fn"
done
Loading…
Cancel
Save