Compare commits
No commits in common. "f33" and "master" have entirely different histories.
@ -1,18 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
# If using normal root, avoid changing anything.
|
|
||||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Defined as %py_reproducible_pyc_path macro and passed here as
|
|
||||||
# the first command-line argument
|
|
||||||
path_to_fix=$1
|
|
||||||
|
|
||||||
# First, check that the parser is available:
|
|
||||||
if [ ! -x /usr/bin/marshalparser ]; then
|
|
||||||
echo "ERROR: If %py_reproducible_pyc_path is defined, you have to also BuildRequire: /usr/bin/marshalparser !"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
find "$path_to_fix" -type f -name "*.pyc" | xargs /usr/bin/marshalparser --fix --overwrite
|
|
@ -1,15 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
errors_terminate=$2
|
errors_terminate=$2
|
||||||
|
|
||||||
# Usage of %_python_bytecompile_extra is not allowed anymore
|
|
||||||
# See: https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_3
|
|
||||||
# Therefore $1 ($default_python) is not needed and is invoked with "" by default.
|
|
||||||
# $default_python stays in the arguments for backward compatibility and $extra for the following check:
|
|
||||||
extra=$3
|
extra=$3
|
||||||
if [ 0$extra -eq 1 ]; then
|
|
||||||
echo -e "%_python_bytecompile_extra is discontinued, use %py_byte_compile instead.\nSee: https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_3" >/dev/stderr
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If using normal root, avoid changing anything.
|
# If using normal root, avoid changing anything.
|
||||||
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
||||||
@ -24,15 +15,14 @@ if [ -z "$depth" -o "$depth" -le "1" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# This function now implements Python byte-compilation in three different ways:
|
# This function now implements Python byte-compilation in two different ways:
|
||||||
# Python >= 3.4 and < 3.9 uses a new module compileall2 - https://github.com/fedora-python/compileall2
|
# Python >= 3.4 uses a new module compileall2 - https://github.com/fedora-python/compileall2
|
||||||
# Python < 3.4 (inc. Python 2) uses compileall module from stdlib with some hacks
|
# Python < 3.4 (inc. Python 2) uses compileall module from stdlib with some hacks
|
||||||
# When we drop support for Python 2, we'd be able to use all compileall2 features like:
|
# When we drop support for Python 2, we'd be able to use all compileall2 features like:
|
||||||
# - -s and -p options to manipulate with a path baked into pyc files instead of $real_libdir
|
# - -s and -p options to manipulate with a path baked into pyc files instead of $real_libdir
|
||||||
# - -o 0 -o 1 to produce multiple files in one run - each with a different optimization level - instead of $options
|
# - -o 0 -o 1 to produce multiple files in one run - each with a different optimization level - instead of $options
|
||||||
# - removed useless $depth - both compileall and compileall2 are limited by sys.getrecursionlimit()
|
# - removed useless $depth - both compileall and compileall2 are limited by sys.getrecursionlimit()
|
||||||
# These changes will make this script much simpler
|
# These changes will make this script much simpler
|
||||||
# In Python >= 3.9, compileall2 was merged back to standard library (compileall) so we can use it directly again.
|
|
||||||
function python_bytecompile()
|
function python_bytecompile()
|
||||||
{
|
{
|
||||||
local options=$1
|
local options=$1
|
||||||
@ -44,25 +34,10 @@ function python_bytecompile()
|
|||||||
|
|
||||||
python_version=$($python_binary -c "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
python_version=$($python_binary -c "import sys; sys.stdout.write('{0.major}{0.minor}'.format(sys.version_info))")
|
||||||
|
|
||||||
#
|
|
||||||
# Python 3.9 and higher
|
|
||||||
#
|
|
||||||
if [ "$python_version" -ge 39 ]; then
|
|
||||||
|
|
||||||
[ ! -z $exclude ] && exclude="-x '$exclude'"
|
|
||||||
# -q disables verbose output
|
|
||||||
# -f forces the process to overwrite existing compiled files
|
|
||||||
# -x excludes paths defined by regex
|
|
||||||
# -e excludes symbolic links pointing outside the build root
|
|
||||||
# -x and -e together implements the same functionality as the Filter class below
|
|
||||||
# -s strips $RPM_BUILD_ROOT from the path
|
|
||||||
# -p prepends the leading slash to the path to make it absolute
|
|
||||||
$python_binary -B $options -m compileall -q -f $exclude -s $RPM_BUILD_ROOT -p / -e $RPM_BUILD_ROOT $python_libdir
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Python 3.4 and higher
|
# Python 3.4 and higher
|
||||||
#
|
#
|
||||||
elif [ "$python_version" -ge 34 ]; then
|
if [ "$python_version" -ge 34 ]; then
|
||||||
|
|
||||||
[ ! -z $exclude ] && exclude="-x '$exclude'"
|
[ ! -z $exclude ] && exclude="-x '$exclude'"
|
||||||
# /usr/lib/rpm/redhat/ contains compileall2 Python module
|
# /usr/lib/rpm/redhat/ contains compileall2 Python module
|
||||||
@ -114,14 +89,10 @@ fi
|
|||||||
# For example, below /usr/lib/python2.6/, we're targeting /usr/bin/python2.6
|
# For example, below /usr/lib/python2.6/, we're targeting /usr/bin/python2.6
|
||||||
# and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1
|
# and below /usr/lib/python3.1/, we're targeting /usr/bin/python3.1
|
||||||
|
|
||||||
# Disable Python hash seed randomization
|
|
||||||
# This should help with byte-compilation reproducibility: https://bugzilla.redhat.com/show_bug.cgi?id=1686078
|
|
||||||
export PYTHONHASHSEED=0
|
|
||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/(usr|app)/lib(64)?/python[0-9]\.[0-9]+$"`;
|
for python_libdir in `find "$RPM_BUILD_ROOT" -type d|grep -E "/usr/lib(64)?/python[0-9]\.[0-9]+$"`;
|
||||||
do
|
do
|
||||||
python_binary=$(basename $python_libdir)
|
python_binary=/usr/bin/$(basename $python_libdir)
|
||||||
real_libdir=${python_libdir/$RPM_BUILD_ROOT/}
|
real_libdir=${python_libdir/$RPM_BUILD_ROOT/}
|
||||||
echo "Bytecompiling .py files below $python_libdir using $python_binary"
|
echo "Bytecompiling .py files below $python_libdir using $python_binary"
|
||||||
|
|
||||||
@ -139,3 +110,35 @@ do
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# Handle other locations in the filesystem using the default python implementation
|
||||||
|
# if extra is set to 0, don't do this
|
||||||
|
if [ 0$extra -eq 0 ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we don't have a default python interpreter, we cannot proceed
|
||||||
|
default_python=${1:-/usr/bin/python}
|
||||||
|
if [ ! -x "$default_python" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Figure out if there are files to be bytecompiled with the default_python at all
|
||||||
|
# this prevents unnecessary default_python invocation
|
||||||
|
find "$RPM_BUILD_ROOT" -type f -name "*.py" | grep -Ev "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" || exit 0
|
||||||
|
|
||||||
|
# Generate normal (.pyc) byte-compiled files.
|
||||||
|
python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then
|
||||||
|
# One or more of the files had a syntax error
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Generate optimized (.pyo) byte-compiled files.
|
||||||
|
python_bytecompile "-O" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/"
|
||||||
|
if [ $? -ne 0 -a 0$errors_terminate -ne 0 ]; then
|
||||||
|
# One or more of the files had a syntax error
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
135
common.lua
135
common.lua
@ -1,46 +1,7 @@
|
|||||||
-- Convenience Lua functions that can be used within rpm macros
|
-- Convenience Lua functions that can be used within rpm macros
|
||||||
|
|
||||||
-- Reads an rpm variable. Unlike a basic rpm.expand("{?foo}"), returns nil if
|
-- Set a spec variable
|
||||||
-- the variable is unset, which is convenient in lua tests and enables
|
-- Echo the result if verbose
|
||||||
-- differentiating unset variables from variables set to ""
|
|
||||||
local function read(rpmvar)
|
|
||||||
if not rpmvar or
|
|
||||||
(rpm.expand("%{" .. rpmvar .. "}") == "%{" .. rpmvar .. "}") then
|
|
||||||
return nil
|
|
||||||
else
|
|
||||||
return rpm.expand("%{?" .. rpmvar .. "}")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Returns true if the macro that called this function had flag set
|
|
||||||
-- – for example, hasflag("z") would give the following results:
|
|
||||||
-- %foo -z bar → true
|
|
||||||
-- %foo -z → true
|
|
||||||
-- %foo → false
|
|
||||||
local function hasflag(flag)
|
|
||||||
return (rpm.expand("%{-" .. flag .. "}") ~= "")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Returns the argument passed to flag in the macro that called this function
|
|
||||||
-- – for example, readflag("z") would give the following results:
|
|
||||||
-- %foo -z bar → bar
|
|
||||||
-- %foo → nil
|
|
||||||
-- %foo -z "" → empty string
|
|
||||||
-- %foo -z '' → empty string
|
|
||||||
local function readflag(flag)
|
|
||||||
if not hasflag(flag) then
|
|
||||||
return nil
|
|
||||||
else
|
|
||||||
local a = rpm.expand("%{-" .. flag .. "*}")
|
|
||||||
-- Handle "" and '' as empty strings
|
|
||||||
if (a == '""') or (a == "''") then
|
|
||||||
a = ''
|
|
||||||
end
|
|
||||||
return a
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Sets a spec variable; echoes the result if verbose
|
|
||||||
local function explicitset(rpmvar, value, verbose)
|
local function explicitset(rpmvar, value, verbose)
|
||||||
local value = value
|
local value = value
|
||||||
if (value == nil) or (value == "") then
|
if (value == nil) or (value == "") then
|
||||||
@ -48,29 +9,31 @@ local function explicitset(rpmvar, value, verbose)
|
|||||||
end
|
end
|
||||||
rpm.define(rpmvar .. " " .. value)
|
rpm.define(rpmvar .. " " .. value)
|
||||||
if verbose then
|
if verbose then
|
||||||
rpm.expand("%{warn:Setting %%{" .. rpmvar .. "} = " .. value .. "}")
|
rpm.expand("%{echo:Setting %%{" .. rpmvar .. "} = " .. value .. "}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Unsets a spec variable if it is defined; echoes the result if verbose
|
-- Unset a spec variable if it is defined
|
||||||
|
-- Echo the result if verbose
|
||||||
local function explicitunset(rpmvar, verbose)
|
local function explicitunset(rpmvar, verbose)
|
||||||
if (rpm.expand("%{" .. rpmvar .. "}") ~= "%{" .. rpmvar .. "}") then
|
if (rpm.expand("%{" .. rpmvar .. "}") ~= "%{" .. rpmvar .. "}") then
|
||||||
rpm.define(rpmvar .. " %{nil}")
|
rpm.define(rpmvar .. " %{nil}")
|
||||||
if verbose then
|
if verbose then
|
||||||
rpm.expand("%{warn:Unsetting %%{" .. rpmvar .. "}}")
|
rpm.expand("%{echo:Unsetting %%{" .. rpmvar .. "}}")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Sets a spec variable, if not already set; echoes the result if verbose
|
-- Set a spec variable, if not already set
|
||||||
|
-- Echo the result if verbose
|
||||||
local function safeset(rpmvar, value, verbose)
|
local function safeset(rpmvar, value, verbose)
|
||||||
if (rpm.expand("%{" .. rpmvar .. "}") == "%{" .. rpmvar .. "}") then
|
if (rpm.expand("%{" .. rpmvar .. "}") == "%{" .. rpmvar .. "}") then
|
||||||
explicitset(rpmvar,value,verbose)
|
explicitset(rpmvar,value,verbose)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Aliases a list of rpm variables to the same variables suffixed with 0 (and
|
-- Alias a list of rpm variables to the same variables suffixed with 0 (and vice versa)
|
||||||
-- vice versa); echoes the result if verbose
|
-- Echo the result if verbose
|
||||||
local function zalias(rpmvars, verbose)
|
local function zalias(rpmvars, verbose)
|
||||||
for _, sfx in ipairs({{"","0"},{"0",""}}) do
|
for _, sfx in ipairs({{"","0"},{"0",""}}) do
|
||||||
for _, rpmvar in ipairs(rpmvars) do
|
for _, rpmvar in ipairs(rpmvars) do
|
||||||
@ -150,7 +113,13 @@ local function getbestsuffix(rpmvar, value)
|
|||||||
return best
|
return best
|
||||||
end
|
end
|
||||||
|
|
||||||
-- %writevars core
|
-- https://github.com/rpm-software-management/rpm/issues/581
|
||||||
|
-- Writes the content of a list of rpm variables to a macro spec file.
|
||||||
|
-- The target file must contain the corresponding anchors.
|
||||||
|
-- For example writevars("myfile", {"foo","bar"}) will replace:
|
||||||
|
-- @@FOO@@ with the rpm evaluation of %{foo} and
|
||||||
|
-- @@BAR@@ with the rpm evaluation of %{bar}
|
||||||
|
-- in myfile
|
||||||
local function writevars(macrofile, rpmvars)
|
local function writevars(macrofile, rpmvars)
|
||||||
for _, rpmvar in ipairs(rpmvars) do
|
for _, rpmvar in ipairs(rpmvars) do
|
||||||
print("sed -i 's\029" .. string.upper("@@" .. rpmvar .. "@@") ..
|
print("sed -i 's\029" .. string.upper("@@" .. rpmvar .. "@@") ..
|
||||||
@ -181,9 +150,8 @@ local function wordwrap(text)
|
|||||||
for word in string.gmatch(line, "%s*[^%s]*\n?") do
|
for word in string.gmatch(line, "%s*[^%s]*\n?") do
|
||||||
local wl, bad = utf8.len(word)
|
local wl, bad = utf8.len(word)
|
||||||
if not wl then
|
if not wl then
|
||||||
print("%{warn:Invalid UTF-8 sequence detected in:}" ..
|
print("%{warn: Invalid UTF-8 sequence detected in:\n" ..
|
||||||
"%{warn:" .. word .. "}" ..
|
word .. "\nIt may produce unexpected results.\n}")
|
||||||
"%{warn:It may produce unexpected results.}")
|
|
||||||
wl = bad
|
wl = bad
|
||||||
end
|
end
|
||||||
if (pos == 0) then
|
if (pos == 0) then
|
||||||
@ -214,71 +182,7 @@ local function wordwrap(text)
|
|||||||
return output
|
return output
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Because rpmbuild will fail if a subpackage is declared before the source
|
|
||||||
-- package itself, provide a source package declaration shell as fallback.
|
|
||||||
local function srcpkg(verbose)
|
|
||||||
if verbose then
|
|
||||||
rpm.expand([[
|
|
||||||
%{echo:Creating a header for the SRPM from %%{source_name}, %%{source_summary} and}
|
|
||||||
%{echo:%%{source_description}. If that is not the intended result, please declare the}
|
|
||||||
%{echo:SRPM header and set %%{source_name} in your spec file before calling a macro}
|
|
||||||
%{echo:that creates other package headers.}
|
|
||||||
]])
|
|
||||||
end
|
|
||||||
print(rpm.expand([[
|
|
||||||
Name: %{source_name}
|
|
||||||
Summary: %{source_summary}
|
|
||||||
%description
|
|
||||||
%wordwrap -v source_description
|
|
||||||
]]))
|
|
||||||
explicitset("currentname", "%{source_name}", verbose)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- %new_package core
|
|
||||||
local function new_package(source_name, pkg_name, name_suffix, first, verbose)
|
|
||||||
-- Safety net when the wrapper is used in conjunction with traditional syntax
|
|
||||||
if (not first) and (not source_name) then
|
|
||||||
rpm.expand([[
|
|
||||||
%{warn:Something already set a package name. However, %%{source_name} is not set.}
|
|
||||||
%{warn:Please set %%{source_name} to the SRPM name to ensure reliable processing.}
|
|
||||||
]])
|
|
||||||
if name_suffix then
|
|
||||||
print(rpm.expand("%package " .. name_suffix))
|
|
||||||
else
|
|
||||||
print(rpm.expand("%package -n " .. pkg_name))
|
|
||||||
end
|
|
||||||
return
|
|
||||||
end
|
|
||||||
-- New processing
|
|
||||||
if not (pkg_name or name_suffix or source_name) then
|
|
||||||
rpm.expand([[
|
|
||||||
%{error:You need to set %%{source_name} or provide explicit package naming!}
|
|
||||||
]])
|
|
||||||
end
|
|
||||||
if name_suffix then
|
|
||||||
print(rpm.expand("%package " .. name_suffix))
|
|
||||||
explicitset("currentname", "%{source_name}-" .. name_suffix, verbose)
|
|
||||||
else
|
|
||||||
if not source_name then
|
|
||||||
source_name = pkg_name
|
|
||||||
end
|
|
||||||
if (pkg_name == source_name) then
|
|
||||||
safeset("source_name", source_name, verbose)
|
|
||||||
print(rpm.expand("Name: %{source_name}"))
|
|
||||||
else
|
|
||||||
if source_name and first then
|
|
||||||
srcpkg(verbose)
|
|
||||||
end
|
|
||||||
print(rpm.expand("%package -n " .. pkg_name))
|
|
||||||
end
|
|
||||||
explicitset("currentname", pkg_name, verbose)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
read = read,
|
|
||||||
hasflag = hasflag,
|
|
||||||
readflag = readflag,
|
|
||||||
explicitset = explicitset,
|
explicitset = explicitset,
|
||||||
explicitunset = explicitunset,
|
explicitunset = explicitunset,
|
||||||
safeset = safeset,
|
safeset = safeset,
|
||||||
@ -290,5 +194,4 @@ return {
|
|||||||
getbestsuffix = getbestsuffix,
|
getbestsuffix = getbestsuffix,
|
||||||
writevars = writevars,
|
writevars = writevars,
|
||||||
wordwrap = wordwrap,
|
wordwrap = wordwrap,
|
||||||
new_package = new_package,
|
|
||||||
}
|
}
|
||||||
|
2
dist.sh
2
dist.sh
@ -25,7 +25,7 @@ function check_rhl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function check_rhel {
|
function check_rhel {
|
||||||
egrep -q "(Enterprise|Advanced|CentOS)" $RELEASEFILE && echo $DISTNUM
|
egrep -q "(Enterprise|Advanced)" $RELEASEFILE && echo $DISTNUM
|
||||||
}
|
}
|
||||||
|
|
||||||
function check_fedora {
|
function check_fedora {
|
||||||
|
13
forge.lua
13
forge.lua
@ -31,9 +31,6 @@ local function checkforgeurl(url, id, silent)
|
|||||||
pagure_ns_fork = {
|
pagure_ns_fork = {
|
||||||
pattern = 'https://[^/]+/fork/[^/]+/[^/]+/[^/#?]+',
|
pattern = 'https://[^/]+/fork/[^/]+/[^/]+/[^/#?]+',
|
||||||
description = 'https://pagure.io/fork/owner/namespace/repo'},
|
description = 'https://pagure.io/fork/owner/namespace/repo'},
|
||||||
["gitea.com"] = {
|
|
||||||
pattern = 'https://[^/]+/[^/]+/[^/#?]+',
|
|
||||||
description = 'https://gitea.com/owner/repo'},
|
|
||||||
github = {
|
github = {
|
||||||
pattern = 'https://[^/]+/[^/]+/[^/#?]+',
|
pattern = 'https://[^/]+/[^/]+/[^/#?]+',
|
||||||
description = 'https://(…[-.])github[-.]…/owner/repo'},
|
description = 'https://(…[-.])github[-.]…/owner/repo'},
|
||||||
@ -132,11 +129,6 @@ local function meta(suffix, verbose, informative, silent)
|
|||||||
repo = '%{lua:print(string.match(rpm.expand("%{forgeurl' .. suffix .. '}"), "https://[^/]+/fork/[^/]+/[^/]+/([^/?#]+)")}',
|
repo = '%{lua:print(string.match(rpm.expand("%{forgeurl' .. suffix .. '}"), "https://[^/]+/fork/[^/]+/[^/]+/([^/?#]+)")}',
|
||||||
archivename = "%{owner" .. suffix .. "}-%{namespace" .. suffix .. "}-%{repo" .. suffix .. "}-%{ref" .. suffix .. "}",
|
archivename = "%{owner" .. suffix .. "}-%{namespace" .. suffix .. "}-%{repo" .. suffix .. "}-%{ref" .. suffix .. "}",
|
||||||
archiveurl = "%{forgeurl" .. suffix .. "}/archive/%{ref" .. suffix .. "}/%{archivename" .. suffix .. "}.%{archiveext" .. suffix .. "}" },
|
archiveurl = "%{forgeurl" .. suffix .. "}/archive/%{ref" .. suffix .. "}/%{archivename" .. suffix .. "}.%{archiveext" .. suffix .. "}" },
|
||||||
["gitea.com"] = {
|
|
||||||
archiveext = "tar.gz",
|
|
||||||
archivename = "%{fileref" .. suffix .. "}",
|
|
||||||
archiveurl = "%{forgeurl" .. suffix .. "}/archive/%{ref" .. suffix .. "}.%{archiveext" .. suffix .. "}",
|
|
||||||
topdir = "%{repo}" },
|
|
||||||
github = {
|
github = {
|
||||||
archiveext = "tar.gz",
|
archiveext = "tar.gz",
|
||||||
archivename = "%{repo" .. suffix .. "}-%{fileref" .. suffix .. "}",
|
archivename = "%{repo" .. suffix .. "}-%{fileref" .. suffix .. "}",
|
||||||
@ -199,11 +191,6 @@ local function meta(suffix, verbose, informative, silent)
|
|||||||
fileref = string.gsub(rpm.expand(fileref), "/", "-")
|
fileref = string.gsub(rpm.expand(fileref), "/", "-")
|
||||||
end
|
end
|
||||||
fedora.safeset("fileref" .. suffix, fileref, verbose)
|
fedora.safeset("fileref" .. suffix, fileref, verbose)
|
||||||
elseif (forge == "gitea.com") then
|
|
||||||
-- Workaround the way gitea mangles /s in ref names
|
|
||||||
local fileref = ref
|
|
||||||
fileref = string.gsub(rpm.expand(fileref), "/", "-")
|
|
||||||
fedora.safeset("fileref" .. suffix, fileref, verbose)
|
|
||||||
elseif (forge == "code.googlesource.com") then
|
elseif (forge == "code.googlesource.com") then
|
||||||
if (ref == "%{?version" .. suffix .. "}") then
|
if (ref == "%{?version" .. suffix .. "}") then
|
||||||
ref = "v" .. ref
|
ref = "v" .. ref
|
||||||
|
23
kmod.attr
23
kmod.attr
@ -1,21 +1,2 @@
|
|||||||
%__kmod_path ^/lib/modules/.*/(modules.builtin|.*ko)
|
%__kmod_provides %{_rpmconfigdir}/kmod.prov
|
||||||
%__kmod_provides() %{lua:
|
%__kmod_path ^/lib/modules/.*$
|
||||||
function basename(fn)
|
|
||||||
return string.gsub(fn, "(.*/)(.*)", "%2")
|
|
||||||
end
|
|
||||||
function printdep(mod)
|
|
||||||
print("kmod("..mod..")")
|
|
||||||
end
|
|
||||||
local fn = rpm.expand("%{1}")
|
|
||||||
local bn = basename(fn)
|
|
||||||
if bn == "modules.builtin" then
|
|
||||||
for l in io.lines(fn) do
|
|
||||||
printdep(basename(l))
|
|
||||||
end
|
|
||||||
else
|
|
||||||
local mod = string.match(bn, "%g+.ko")
|
|
||||||
if mod then
|
|
||||||
printdep(mod)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
}
|
|
||||||
|
28
kmod.prov
Normal file
28
kmod.prov
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh +x
|
||||||
|
# Kernel build can have many thousands of modules.
|
||||||
|
# kmod.prov is run for every one of them.
|
||||||
|
# Try to make this script run as fast as we can.
|
||||||
|
# For example, use shell string ops instead of external programs
|
||||||
|
# where possible.
|
||||||
|
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
read -r fname || exit
|
||||||
|
|
||||||
|
# Only process files from .../lib/modules/... subtree
|
||||||
|
[ "${fname#*/lib/modules/*}" != "$fname" ] || exit 0
|
||||||
|
|
||||||
|
kmod=${fname##*/} # like basename, but faster
|
||||||
|
|
||||||
|
if [ "$kmod" = "modules.builtin" ]; then
|
||||||
|
for j in $(cat -- "$fname"); do
|
||||||
|
echo "kmod(${j##*/})"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
kmod=${kmod%.gz}
|
||||||
|
kmod=${kmod%.xz}
|
||||||
|
if [ "${kmod%.ko}" != "$kmod" ]; then
|
||||||
|
echo "kmod($kmod)"
|
||||||
|
fi
|
142
macros
142
macros
@ -26,46 +26,6 @@
|
|||||||
%_debugsource_packages 1
|
%_debugsource_packages 1
|
||||||
%_debuginfo_subpackages 1
|
%_debuginfo_subpackages 1
|
||||||
|
|
||||||
# GCC toolchain
|
|
||||||
%__cc_gcc gcc
|
|
||||||
%__cxx_gcc g++
|
|
||||||
%__cpp_gcc gcc -E
|
|
||||||
|
|
||||||
# Clang toolchain
|
|
||||||
%__cc_clang clang
|
|
||||||
%__cxx_clang clang++
|
|
||||||
%__cpp_clang clang-cpp
|
|
||||||
|
|
||||||
# Default to the GCC toolchain
|
|
||||||
#
|
|
||||||
# It is enough to override `toolchain` macro and all relevant macro for C/C++
|
|
||||||
# compilers will be switched. Either in the spec or in the command-line.
|
|
||||||
#
|
|
||||||
# %global toolchain clang
|
|
||||||
#
|
|
||||||
# or:
|
|
||||||
#
|
|
||||||
# rpmbuild -D "toolchain clang" …
|
|
||||||
#
|
|
||||||
# Inside a spec file it is also possible to determine which toolchain is in use
|
|
||||||
# by testing the same macro. For example:
|
|
||||||
#
|
|
||||||
# %if "%{toolchain}" == "gcc"
|
|
||||||
# BuildRequires: gcc
|
|
||||||
# %endif
|
|
||||||
#
|
|
||||||
# or:
|
|
||||||
#
|
|
||||||
# %if "%{toolchain}" == "clang"
|
|
||||||
# BuildRequires: clang compiler-rt
|
|
||||||
# %endif
|
|
||||||
#
|
|
||||||
%toolchain gcc
|
|
||||||
|
|
||||||
%__cc %{expand:%%{__cc_%{toolchain}}}
|
|
||||||
%__cxx %{expand:%%{__cxx_%{toolchain}}}
|
|
||||||
%__cpp %{expand:%%{__cpp_%{toolchain}}}
|
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# ---- compiler flags.
|
# ---- compiler flags.
|
||||||
|
|
||||||
@ -86,12 +46,9 @@
|
|||||||
# the flags, while intended for ld, are still passed through the gcc
|
# the flags, while intended for ld, are still passed through the gcc
|
||||||
# compiler driver. At the beginning of %%build, the environment
|
# compiler driver. At the beginning of %%build, the environment
|
||||||
# variable RPM_LD_FLAGS to this value.
|
# variable RPM_LD_FLAGS to this value.
|
||||||
# When clang is used as a linker driver, it does not auto-detect the LTO
|
%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
|
||||||
# bytecode and neither does bfd, so we need to explicitly pass the -flto
|
|
||||||
# flag when linking.
|
|
||||||
%build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags} %[ "%{toolchain}" == "clang" ? "%{?_lto_cflags}" : "" ]
|
|
||||||
|
|
||||||
# Expands to shell code to set the compiler/linker environment
|
# Expands to shell code to seot the compiler/linker environment
|
||||||
# variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS if they have
|
# variables CFLAGS, CXXFLAGS, FFLAGS, FCFLAGS, LDFLAGS if they have
|
||||||
# not been set already. RPM_OPT_FLAGS and RPM_LD_FLAGS have already
|
# not been set already. RPM_OPT_FLAGS and RPM_LD_FLAGS have already
|
||||||
# been set implicitly at the start of the %%build section.
|
# been set implicitly at the start of the %%build section.
|
||||||
@ -102,18 +59,14 @@
|
|||||||
FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
|
FFLAGS="${FFLAGS:-%{build_fflags}}" ; export FFLAGS ; \
|
||||||
FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
|
FCFLAGS="${FCFLAGS:-%{build_fflags}}" ; export FCFLAGS ; \
|
||||||
LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS ; \
|
LDFLAGS="${LDFLAGS:-%{build_ldflags}}" ; export LDFLAGS ; \
|
||||||
LT_SYS_LIBRARY_PATH="${LT_SYS_LIBRARY_PATH:-%_libdir:}" ; export LT_SYS_LIBRARY_PATH ; \
|
LT_SYS_LIBRARY_PATH="${LT_SYS_LIBRARY_PATH:-%_libdir:}" ; export LT_SYS_LIBRARY_PATH
|
||||||
CC="${CC:-%{__cc}}" ; export CC ; \
|
|
||||||
CXX="${CXX:-%{__cxx}}" ; export CXX
|
|
||||||
|
|
||||||
# Internal-only. Do not use. Expand a variable and strip the flags
|
# Internal-only. Do not use. Expand a variable and strip the flags
|
||||||
# not suitable to extension builders.
|
# not suitable to extension builders.
|
||||||
%__extension_strip_flags() %{lua:
|
%__extension_strip_flags() %{lua:
|
||||||
local name = rpm.expand("%{1}")
|
local name = rpm.expand("%{1}")
|
||||||
local value = " " .. rpm.expand("%{build_" .. name .. "}")
|
local value = " " .. rpm.expand("%{build_" .. name .. "}")
|
||||||
local specs_pattern = "%s+-specs=[^%s]+"
|
local result = string.gsub(value, "%s+-specs=[^%s]+", " ")
|
||||||
local lto_flags_pattern = rpm.expand("%{?_lto_cflags}"):gsub("[%-%.]", "%%%1")
|
|
||||||
local result = value:gsub(specs_pattern, " "):gsub(lto_flags_pattern, "")
|
|
||||||
print(result)
|
print(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,49 +94,8 @@ print(result)
|
|||||||
# Eventually we'll want to turn this on by default, but this gives packagers a
|
# Eventually we'll want to turn this on by default, but this gives packagers a
|
||||||
# way to turn it back off.
|
# way to turn it back off.
|
||||||
# %_configure_disable_silent_rules 1
|
# %_configure_disable_silent_rules 1
|
||||||
|
|
||||||
# This fixes various easy resolved configure tests that are compromised by LTO.
|
|
||||||
#
|
|
||||||
# We use this within the standard %configure macro, but also make it available
|
|
||||||
# for packages which don't use %configure
|
|
||||||
#
|
|
||||||
# The first three are common ways to test for the existence of a function, so
|
|
||||||
# we ensure the reference to the function is preserved
|
|
||||||
#
|
|
||||||
# The fourth are constants used to then try to generate NaNs and other key
|
|
||||||
# floating point numbers. We then use those special FP numbers to try and
|
|
||||||
# raise a SIGFPE. By declaring x & y volatile we prevent the optimizers
|
|
||||||
# from removing the computation
|
|
||||||
#
|
|
||||||
# The fifth (and worst) addresses problems with autoconf/libtool's approach
|
|
||||||
# to extracting symbols from .o files and generating C code. In an LTO world
|
|
||||||
# types matter much more closely and you can't have an object in one context
|
|
||||||
# that is a function definition and a simple scalar variable in another.
|
|
||||||
# Thankfully HP-UX has always had that restriction and is supported by
|
|
||||||
# autoconf/libtool. The insane sed script replaces the "generic" code with
|
|
||||||
# the HP-UX version.
|
|
||||||
#
|
|
||||||
# If we do not make changes, we put the original file back. This avoids
|
|
||||||
# unnecessary rebuilds of things that may have dependencies on the configure
|
|
||||||
# files.
|
|
||||||
#
|
|
||||||
%_fix_broken_configure_for_lto \
|
|
||||||
for file in $(find . -type f -name configure -print); do \
|
|
||||||
%{__sed} -r --in-place=.backup 's/^char \\(\\*f\\) \\(\\) = /__attribute__ ((used)) char (*f) () = /g' $file; \
|
|
||||||
diff -u $file.backup $file && mv $file.backup $file \
|
|
||||||
%{__sed} -r --in-place=.backup 's/^char \\(\\*f\\) \\(\\);/__attribute__ ((used)) char (*f) ();/g' $file; \
|
|
||||||
diff -u $file.backup $file && mv $file.backup $file \
|
|
||||||
%{__sed} -r --in-place=.backup 's/^char \\$2 \\(\\);/__attribute__ ((used)) char \\$2 ();/g' $file; \
|
|
||||||
diff -u $file.backup $file && mv $file.backup $file \
|
|
||||||
%{__sed} --in-place=.backup '1{$!N;$!N};$!N;s/int x = 1;\\nint y = 0;\\nint z;\\nint nan;/volatile int x = 1; volatile int y = 0; volatile int z, nan;/;P;D' $file; \
|
|
||||||
diff -u $file.backup $file && mv $file.backup $file \
|
|
||||||
%{__sed} --in-place=.backup 's#^lt_cv_sys_global_symbol_to_cdecl=.*#lt_cv_sys_global_symbol_to_cdecl="sed -n -e '"'"'s/^T .* \\\\(.*\\\\)$/extern int \\\\1();/p'"'"' -e '"'"'s/^$symcode* .* \\\\(.*\\\\)$/extern char \\\\1;/p'"'"'"#' $file; \
|
|
||||||
diff -u $file.backup $file && mv $file.backup $file \
|
|
||||||
done
|
|
||||||
|
|
||||||
%configure \
|
%configure \
|
||||||
%{set_build_flags}; \
|
%{set_build_flags}; \
|
||||||
[ "%{_lto_cflags}"x != x ] && %{_fix_broken_configure_for_lto}; \
|
|
||||||
[ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \
|
[ "%_configure_gnuconfig_hack" = 1 ] && for i in $(find $(dirname %{_configure}) -name config.guess -o -name config.sub) ; do \
|
||||||
[ -f /usr/lib/rpm/redhat/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/redhat/$(basename $i) $i ; \
|
[ -f /usr/lib/rpm/redhat/$(basename $i) ] && %{__rm} -f $i && %{__cp} -fv /usr/lib/rpm/redhat/$(basename $i) $i ; \
|
||||||
done ; \
|
done ; \
|
||||||
@ -237,8 +149,7 @@ print(result)
|
|||||||
%__brp_strip_lto /usr/lib/rpm/redhat/brp-strip-lto %{__strip}
|
%__brp_strip_lto /usr/lib/rpm/redhat/brp-strip-lto %{__strip}
|
||||||
%__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump}
|
%__brp_strip_comment_note /usr/lib/rpm/brp-strip-comment-note %{__strip} %{__objdump}
|
||||||
%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
|
%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
|
||||||
%__brp_python_bytecompile /usr/lib/rpm/redhat/brp-python-bytecompile "" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
|
%__brp_python_bytecompile /usr/lib/rpm/redhat/brp-python-bytecompile "%{__python}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
|
||||||
%__brp_fix_pyc_reproducibility /usr/lib/rpm/redhat/brp-fix-pyc-reproducibility
|
|
||||||
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
||||||
# __brp_mangle_shebangs_exclude - shebangs to exclude
|
# __brp_mangle_shebangs_exclude - shebangs to exclude
|
||||||
# __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude
|
# __brp_mangle_shebangs_exclude_file - file from which to get shebangs to exclude
|
||||||
@ -256,7 +167,6 @@ print(result)
|
|||||||
%{?__brp_strip_lto} \
|
%{?__brp_strip_lto} \
|
||||||
%{?__brp_strip_static_archive} \
|
%{?__brp_strip_static_archive} \
|
||||||
%{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
|
%{?py_auto_byte_compile:%{?__brp_python_bytecompile}} \
|
||||||
%{?py_reproducible_pyc_path:%{?__brp_fix_pyc_reproducibility} "%{py_reproducible_pyc_path}"} \
|
|
||||||
%{?__brp_python_hardlink} \
|
%{?__brp_python_hardlink} \
|
||||||
%{?__brp_mangle_shebangs} \
|
%{?__brp_mangle_shebangs} \
|
||||||
%{nil}
|
%{nil}
|
||||||
@ -292,27 +202,24 @@ print(result)
|
|||||||
# Use Zstandard compression for binary payloads
|
# Use Zstandard compression for binary payloads
|
||||||
%_binary_payload w19.zstdio
|
%_binary_payload w19.zstdio
|
||||||
|
|
||||||
%_hardening_gcc_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
|
%_hardening_cflags -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1
|
||||||
%_hardening_clang_cflags --config /usr/lib/rpm/redhat/redhat-hardened-clang.cfg
|
|
||||||
%_hardening_cflags %{expand:%%{_hardening_%{toolchain}_cflags}} -fstack-protector-strong
|
|
||||||
# we don't escape symbols '~', '"', etc. so be careful when changing this
|
# we don't escape symbols '~', '"', etc. so be careful when changing this
|
||||||
%_hardening_ldflags -Wl,-z,now %[ "%{toolchain}" == "gcc" ? "-specs=/usr/lib/rpm/redhat/redhat-hardened-ld" : "" ]
|
%_hardening_ldflags -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
|
||||||
|
|
||||||
# Harden packages by default for Fedora 23+:
|
# Harden packages by default for Fedora 23:
|
||||||
# https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11)
|
# https://fedorahosted.org/fesco/ticket/1384 (accepted on 2014-02-11)
|
||||||
# Use "%undefine _hardened_build" to disable.
|
# Use "%undefine _hardened_build" to disable.
|
||||||
%_hardened_build 1
|
%_hardened_build 1
|
||||||
%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
|
%_hardened_cflags %{?_hardened_build:%{_hardening_cflags}}
|
||||||
%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}}
|
%_hardened_ldflags %{?_hardened_build:%{_hardening_ldflags}}
|
||||||
|
|
||||||
# Add extra information to binary objects created by the compiler:
|
%_annobin_cflags -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
|
||||||
|
|
||||||
|
# Add extra information to binary objects created by gcc for Fedora 28:
|
||||||
# https://pagure.io/fesco/issue/1780 (accepted on 2017-10-30)
|
# https://pagure.io/fesco/issue/1780 (accepted on 2017-10-30)
|
||||||
# Use "%undefine _annotated_build" to disable.
|
# Use "%undefine _annotated_build" to disable.
|
||||||
%_annotated_build 1
|
%_annotated_build 1
|
||||||
%_annobin_gcc_plugin -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1
|
%_annotated_cflags %{?_annotated_build:%{_annobin_cflags}}
|
||||||
# The annobin plugin is not built for clang yet
|
|
||||||
%_annobin_clang_plugin %dnl-fplugin=/usr/lib64/clang/`clang -dumpversion`/lib/annobin.so
|
|
||||||
%_annotation_cflags %{?_annotated_build:%{expand:%%{_annobin_%{toolchain}_plugin}}}
|
|
||||||
|
|
||||||
# Fail linking if there are undefined symbols. Required for proper
|
# Fail linking if there are undefined symbols. Required for proper
|
||||||
# ELF symbol versioning support. Disabled by default.
|
# ELF symbol versioning support. Disabled by default.
|
||||||
@ -325,27 +232,7 @@ print(result)
|
|||||||
%_ld_as_needed 1
|
%_ld_as_needed 1
|
||||||
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
|
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
|
||||||
|
|
||||||
# LTO is the default in Fedora.
|
%__global_compiler_flags -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches %{_hardened_cflags} %{_annotated_cflags}%{?_legacy_common_support: -fcommon}
|
||||||
# "%define _lto_cflags %{nil}" to opt out
|
|
||||||
#
|
|
||||||
# We currently have -ffat-lto-objects turned on out of an abundance of
|
|
||||||
# caution. To remove it we need to do a check of the installed .o/.a files
|
|
||||||
# to verify they have real sections/symbols after LTO stripping. That
|
|
||||||
# way we can detect installing an unusable .o/.a file. This is on the TODO
|
|
||||||
# list for F34.
|
|
||||||
%_gcc_lto_cflags -flto=auto -ffat-lto-objects
|
|
||||||
%_clang_lto_cflags -flto
|
|
||||||
%_lto_cflags %{expand:%%{_%{toolchain}_lto_cflags}}
|
|
||||||
|
|
||||||
%_general_options -O2 %{?_lto_cflags} -fexceptions -g -grecord-gcc-switches -pipe
|
|
||||||
%_warning_options -Wall -Werror=format-security
|
|
||||||
%_preprocessor_defines -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS
|
|
||||||
|
|
||||||
# Common variables are no longer generated by default by gcc and clang
|
|
||||||
# If they are needed then add "%define _legacy_common_support 1" to the spec file.
|
|
||||||
%_legacy_options %{?_legacy_common_support: -fcommon}
|
|
||||||
|
|
||||||
%__global_compiler_flags %{_general_options} %{_warning_options} %{_preprocessor_defines} %{_hardened_cflags} %{_annotation_cflags} %{_legacy_options}
|
|
||||||
|
|
||||||
# Automatically trim changelog entries after 2 years
|
# Automatically trim changelog entries after 2 years
|
||||||
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
|
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
|
||||||
@ -382,3 +269,6 @@ print(result)
|
|||||||
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
|
%global __find_provides /bin/sh -c "%{?__filter_prov_cmd} %{__deploop P} %{?__filter_from_prov}" \
|
||||||
%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \
|
%global __find_requires /bin/sh -c "%{?__filter_req_cmd} %{__deploop R} %{?__filter_from_req}" \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Temporary shelter for rpm 4.15 refugees
|
||||||
|
%requires_eq() %(LC_ALL="C" echo '%*' | xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
|
||||||
|
@ -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,16 +1,16 @@
|
|||||||
# Fedora macros, safe to use after the SRPM build stage
|
# Some miscellaneous Fedora-related macros
|
||||||
|
|
||||||
# Lists files matching inclusion globs, excluding files matching exclusion
|
# List files matching inclusion globs, excluding files matching exclusion blogs
|
||||||
# globs
|
# Optional parameters:
|
||||||
# – globs are space-separated lists of shell globs. Such lists require
|
# – -i "<globs>" inclusion globs
|
||||||
# %{quote:} use when passed as rpm arguments or flags.
|
# – -x "<globs>" exclusion globs
|
||||||
# Control variables, flags and arguments:
|
# Globs are space-separated lists of shell globs. Such lists require %{quote:}
|
||||||
# %{listfiles_include} inclusion globs
|
# use for safe rpm argument passing.
|
||||||
# %{listfiles_exclude} exclusion globs
|
# Alternatively, set the following rpm variables before calling the macro:
|
||||||
# -i <globs> inclusion globs
|
# – “listfiles_include” inclusion globs
|
||||||
# -x <globs> exclusion globs
|
# — “listfiles_exclude” exclusion globs
|
||||||
# … arguments passed to the macro without flags will be
|
# Arguments passed to the macro without flags will be interpreted as inclusion
|
||||||
# interpreted as inclusion globs
|
# globs.
|
||||||
%listfiles(i:x:) %{expand:
|
%listfiles(i:x:) %{expand:
|
||||||
%if %{lua: print(string.len(rpm.expand("%{?-i*}%{?listfiles_include}%*")))}
|
%if %{lua: print(string.len(rpm.expand("%{?-i*}%{?listfiles_include}%*")))}
|
||||||
listfiles_include=$(realpath -e --relative-base=. %{?-i*} %{?listfiles_include} %* | sort -u)
|
listfiles_include=$(realpath -e --relative-base=. %{?-i*} %{?listfiles_include} %* | sort -u)
|
||||||
@ -26,14 +26,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
# https://github.com/rpm-software-management/rpm/issues/581
|
# https://github.com/rpm-software-management/rpm/issues/581
|
||||||
# Writes the contents of a list of rpm variables to a macro file
|
# Write the contents of a list of rpm variables to a macro file.
|
||||||
# Control variables, flags and arguments:
|
# The target file must contain the corresponding anchors.
|
||||||
# -f <filename> the macro file to process:
|
# For example %writevars -f myfile foo bar will replace:
|
||||||
# – it must contain corresponding anchors
|
# @@FOO@@ with the rpm evaluation of %{foo} and
|
||||||
# – for example %writevars -f myfile foo bar will replace:
|
# @@BAR@@ with the rpm evaluation of %{bar}
|
||||||
# @@FOO@@ with the rpm evaluation of %{foo} and
|
# in myfile
|
||||||
# @@BAR@@ with the rpm evaluation of %{bar}
|
|
||||||
# in myfile
|
|
||||||
%writevars(f:) %{lua:
|
%writevars(f:) %{lua:
|
||||||
local fedora = require "fedora.common"
|
local fedora = require "fedora.common"
|
||||||
local macrofile = rpm.expand("%{-f*}")
|
local macrofile = rpm.expand("%{-f*}")
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Fedora macros, safe to use at SRPM build stage
|
# Some miscellaneous Fedora-related macros
|
||||||
|
|
||||||
# A directory for rpm macros
|
# A directory for rpm macros
|
||||||
%rpmmacrodir /usr/lib/rpm/macros.d
|
%rpmmacrodir /usr/lib/rpm/macros.d
|
||||||
@ -10,34 +10,13 @@
|
|||||||
# A directory for SWID tag files describing the installation
|
# A directory for SWID tag files describing the installation
|
||||||
%_swidtagdir %{_prefix}/lib/swidtag/fedoraproject.org
|
%_swidtagdir %{_prefix}/lib/swidtag/fedoraproject.org
|
||||||
|
|
||||||
# Applies the fedora.wordwrap filter to the content of an rpm variable, and
|
# A helper to apply the fedora.wordwrap filter to the content of an rpm
|
||||||
# prints the result.
|
# variable, and print the result. Optional parameter:
|
||||||
# – putting multiple lines of UTF-8 text inside a variable is usually
|
# – -v <variable_name> (default value: _description)
|
||||||
# accomplished with %{expand:some_text}
|
# Putting multiple lines of UTF-8 text inside a variable is usually
|
||||||
# Control variables, flags and arguments:
|
# accomplished with a %%{expand: some_text}.
|
||||||
# -v <variable_name> (default value: _description)
|
|
||||||
%wordwrap(v:) %{lua:
|
%wordwrap(v:) %{lua:
|
||||||
local fedora = require "fedora.common"
|
local fedora = require "fedora.common"
|
||||||
local variable = "%{?" .. rpm.expand("%{-v*}%{!-v:_description}") .. "}"
|
local variable = "%{" .. rpm.expand("%{-v*}%{!-v:_description}") .. "}"
|
||||||
print(fedora.wordwrap(variable))
|
print(fedora.wordwrap(variable))
|
||||||
}
|
}
|
||||||
|
|
||||||
# A single Name: and %package substitute
|
|
||||||
# Control variables, flags and arguments:
|
|
||||||
# %{source_name} the SRPM name
|
|
||||||
# %{source_summary} the SRPM summary
|
|
||||||
# %{source_description} the SRPM description
|
|
||||||
# -n <name> declare a package named <name>
|
|
||||||
# (%package-like behavior)
|
|
||||||
# -v be verbose
|
|
||||||
# %1 declare a package named %{source_name}-%{%1}
|
|
||||||
# (%package-like behavior)
|
|
||||||
%new_package(n:v) %{lua:
|
|
||||||
local fedora = require "fedora.common"
|
|
||||||
local pkg_name = fedora.readflag("n")
|
|
||||||
local verbose = fedora.hasflag("v")
|
|
||||||
local name_suffix = fedora.read("1")
|
|
||||||
local source_name = fedora.read("source_name")
|
|
||||||
local first = not ( fedora.read("name") or fedora.read("currentname") )
|
|
||||||
fedora.new_package(source_name, pkg_name, name_suffix, first, verbose)
|
|
||||||
}
|
|
||||||
|
99
macros.forge
99
macros.forge
@ -1,28 +1,50 @@
|
|||||||
# Computes forge-related variables for use in the rest of the spec file
|
# Map forge information to rpm metadata. This macro will compute default spec
|
||||||
# Control variables, flags and arguments:
|
# variable values.
|
||||||
# %{forgeurl<number>} the project url on the target forge
|
#
|
||||||
# %{tag<number>} the packaged tag, OR
|
# The following spec variables SHOULD be set before calling the macro:
|
||||||
# %{commit<number>} the packaged commit, OR
|
#
|
||||||
# %{version<number>} the packaged version
|
# forgeurl the project url on the forge, strongly recommended;
|
||||||
# – %{version}/%{version0} are set via:
|
# Version if applicable, set it with Version: <version>
|
||||||
# Version:
|
# tag if applicable
|
||||||
# – because git is lacking a built-in version
|
# commit if applicable
|
||||||
# reference, %{version<number>} will be translated
|
# date if applicable (to override the mtime of the Source archive)
|
||||||
# into %{tag<number>} using unreliable heuristics;
|
#
|
||||||
# set %{tag<number>} directly if those fail
|
# Use -z for multiple calls to the macro
|
||||||
# %{date<number>} the packaged timestamp
|
#
|
||||||
# … %forgemeta will compute a huge number of variables:
|
# The macro will attempt to compute and set the following variables if they are
|
||||||
# — the packager can override it by setting some of
|
# not already set by the packager:
|
||||||
# those before the %forgemeta call
|
#
|
||||||
# – use the -i flag to list those variables
|
# forgesource an URL that can be used as SourceX: value
|
||||||
# -z <number> only process the zth block of definitions
|
# forgesetupargs the correct arguments to pass to %setup for this source
|
||||||
# "" for the no-suffix block
|
# used by %forgesetup and %forgeautosetup
|
||||||
# -i list the resulting variable values
|
# archivename the source archive filename, without extentions
|
||||||
# -s silently ignore problems in %{forgeurl<number>}
|
# archiveext the source archive filename extensions, without leading dot
|
||||||
# -v be verbose
|
# archiveurl the url that can be used to download the source archive,
|
||||||
# -a process all sources in one go, instead of using
|
# without renaming
|
||||||
# separate -z calls
|
# topdir the source archive top directory (can be empty)
|
||||||
%forgemeta(z:isva) %{lua:
|
# extractdir the source directory created inside %{_builddir} after using
|
||||||
|
# %%forgesetup, %forgeautosetup or %{forgesetupargs}
|
||||||
|
# repo the repository name
|
||||||
|
# owner the repository owner (if used by another computed variable)
|
||||||
|
# shortcommit the commit hash clamping used by the forge, if any
|
||||||
|
# scm the scm type, when packaging code snapshots: commits or tags
|
||||||
|
# distprefix the prefix that needs adding to dist to trace non-release packaging
|
||||||
|
#
|
||||||
|
# Most of the computed variables are both overridable and optional.
|
||||||
|
#
|
||||||
|
# Optional parameters:
|
||||||
|
# -a process all sources in one go, instead of using separate -z calls
|
||||||
|
# -z <number> suffix all the read and written variable names with <number>
|
||||||
|
# for example read forgeurl<number>, version<number>…
|
||||||
|
# and generate forgesetupargs<number>, archiveurl<number>…
|
||||||
|
# The macro assumes that null or nil suffix is used for the primary
|
||||||
|
# package source.
|
||||||
|
# -s Silently ignore problems in forgeurl, use it if it can be parsed,
|
||||||
|
# ignore it otherwise.
|
||||||
|
# -v Be verbose and print every spec variable the macro sets.
|
||||||
|
# -i Print some info about the state of spec variables the macro may use or
|
||||||
|
# set at the end of the processing.
|
||||||
|
%forgemeta(az:sviu:) %{lua:
|
||||||
local fedora = require "fedora.common"
|
local fedora = require "fedora.common"
|
||||||
local forge = require "fedora.srpm.forge"
|
local forge = require "fedora.srpm.forge"
|
||||||
local verbose = rpm.expand("%{-v}") ~= ""
|
local verbose = rpm.expand("%{-v}") ~= ""
|
||||||
@ -38,17 +60,12 @@ else
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
# Unpacks sources computed by %forgemeta
|
# Convenience macro to relay computed arguments to %setup
|
||||||
# Control variables, flags and arguments:
|
# Optional parameters:
|
||||||
# %{forgesource<number>} the source archive that will be processed
|
# -a process all sources in one go, instead of using separate -z calls
|
||||||
# %{forgesetupargs<number>} %setup arguments
|
# -z <number> read %{?forgesetupargs<number>}
|
||||||
|
# -v be verbose
|
||||||
# -z <number> only process the zth block of definitions
|
%forgesetup(az:v) %{lua:
|
||||||
# "" for the no-suffix block
|
|
||||||
# -v be verbose
|
|
||||||
# -a process all sources in one go, instead of using
|
|
||||||
# separate -z calls
|
|
||||||
%forgesetup(z:va) %{lua:
|
|
||||||
local fedora = require "fedora.common"
|
local fedora = require "fedora.common"
|
||||||
if (rpm.expand("%{-z}") == "") and (rpm.expand("%{-a}") ~= "") then
|
if (rpm.expand("%{-z}") == "") and (rpm.expand("%{-a}") ~= "") then
|
||||||
for _,s in pairs(fedora.getsuffixes("forgesetupargs")) do
|
for _,s in pairs(fedora.getsuffixes("forgesetupargs")) do
|
||||||
@ -59,12 +76,10 @@ else
|
|||||||
end
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
# Calls %autosetup using %forgemeta results
|
# Convenience macro to relay computed arguments to %autosetup
|
||||||
# – this will probably be removed since it is unsafe in presence of multiple
|
# Parameters relayed to %autosetup: -v -N -S -p
|
||||||
# sources
|
# Optional parameters:
|
||||||
# Control variables, flags and arguments:
|
# -z <number> read %{?forgesetupargs<number>}
|
||||||
# -z <number> process the zth block of definitions
|
|
||||||
# -v -N -S -p relayed to %autosetup
|
|
||||||
%forgeautosetup(z:vNS:p:q) %{lua:
|
%forgeautosetup(z:vNS:p:q) %{lua:
|
||||||
print(rpm.expand("%autosetup %{-v} %{-N} %{?-S} %{?-p} %{?forgesetupargs" .. rpm.expand("%{-z*}") .. "}\\n"))
|
print(rpm.expand("%autosetup %{-v} %{-N} %{?-S} %{?-p} %{?forgesetupargs" .. rpm.expand("%{-z*}") .. "}\\n"))
|
||||||
}
|
}
|
||||||
|
@ -1 +0,0 @@
|
|||||||
-fPIE
|
|
@ -6,8 +6,8 @@
|
|||||||
|
|
||||||
Summary: Red Hat specific rpm configuration files
|
Summary: Red Hat specific rpm configuration files
|
||||||
Name: redhat-rpm-config
|
Name: redhat-rpm-config
|
||||||
Version: 176
|
Version: 153
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
# No version specified.
|
# No version specified.
|
||||||
License: GPL+
|
License: GPL+
|
||||||
URL: https://src.fedoraproject.org/rpms/redhat-rpm-config
|
URL: https://src.fedoraproject.org/rpms/redhat-rpm-config
|
||||||
@ -19,10 +19,9 @@ Source1: rpmrc
|
|||||||
# gcc specs files for hardened builds
|
# gcc specs files for hardened builds
|
||||||
Source50: redhat-hardened-cc1
|
Source50: redhat-hardened-cc1
|
||||||
Source51: redhat-hardened-ld
|
Source51: redhat-hardened-ld
|
||||||
Source52: redhat-hardened-clang.cfg
|
|
||||||
|
|
||||||
# gcc specs files for annobin builds
|
# gcc specs files for annobin builds
|
||||||
Source60: redhat-annobin-cc1
|
Source52: redhat-annobin-cc1
|
||||||
|
|
||||||
# The macros defined by these files are for things that need to be defined
|
# The macros defined by these files are for things that need to be defined
|
||||||
# at srpm creation time when it is not feasible to require the base packages
|
# at srpm creation time when it is not feasible to require the base packages
|
||||||
@ -36,13 +35,12 @@ Source104: macros.ldc-srpm
|
|||||||
Source105: macros.valgrind-srpm
|
Source105: macros.valgrind-srpm
|
||||||
|
|
||||||
# Other misc macros
|
# Other misc macros
|
||||||
Source150: macros.build-constraints
|
Source150: macros.dwz
|
||||||
Source151: macros.dwz
|
Source151: macros.kmp
|
||||||
Source152: macros.fedora-misc
|
Source152: macros.vpath
|
||||||
Source153: macros.forge
|
Source153: macros.forge
|
||||||
Source154: macros.kmp
|
Source154: macros.ldconfig
|
||||||
Source155: macros.ldconfig
|
Source155: macros.fedora-misc
|
||||||
Source156: macros.vpath
|
|
||||||
|
|
||||||
# Build policy scripts
|
# Build policy scripts
|
||||||
# this comes from https://github.com/rpm-software-management/rpm/pull/344
|
# this comes from https://github.com/rpm-software-management/rpm/pull/344
|
||||||
@ -54,10 +52,6 @@ Source201: brp-mangle-shebangs
|
|||||||
# however, now we can do Fedora changes within
|
# however, now we can do Fedora changes within
|
||||||
Source202: brp-python-bytecompile
|
Source202: brp-python-bytecompile
|
||||||
|
|
||||||
# for fixing pyc files reproducibility with marshalparser
|
|
||||||
# https://github.com/fedora-python/marshalparser
|
|
||||||
Source203: brp-fix-pyc-reproducibility
|
|
||||||
|
|
||||||
# Dependency generator scripts (deprecated)
|
# Dependency generator scripts (deprecated)
|
||||||
Source300: find-provides
|
Source300: find-provides
|
||||||
Source301: find-provides.ksyms
|
Source301: find-provides.ksyms
|
||||||
@ -79,6 +73,7 @@ Source501: config.sub
|
|||||||
|
|
||||||
# Dependency generators & their rules
|
# Dependency generators & their rules
|
||||||
Source600: kmod.attr
|
Source600: kmod.attr
|
||||||
|
Source601: kmod.prov
|
||||||
Source602: libsymlink.attr
|
Source602: libsymlink.attr
|
||||||
|
|
||||||
# BRPs
|
# BRPs
|
||||||
@ -102,22 +97,19 @@ Requires: fpc-srpm-macros
|
|||||||
Requires: ghc-srpm-macros
|
Requires: ghc-srpm-macros
|
||||||
Requires: gnat-srpm-macros
|
Requires: gnat-srpm-macros
|
||||||
Requires: go-srpm-macros
|
Requires: go-srpm-macros
|
||||||
Requires: kernel-srpm-macros
|
|
||||||
Requires: lua-srpm-macros
|
|
||||||
Requires: nim-srpm-macros
|
Requires: nim-srpm-macros
|
||||||
Requires: ocaml-srpm-macros
|
Requires: ocaml-srpm-macros
|
||||||
Requires: openblas-srpm-macros
|
Requires: openblas-srpm-macros
|
||||||
Requires: perl-srpm-macros
|
Requires: perl-srpm-macros
|
||||||
# ↓ Provides compileall2 Python module
|
# ↓ Provides compileall2 Python module
|
||||||
Requires: python-srpm-macros >= 3-46
|
Requires: python-srpm-macros >= 3-46
|
||||||
Requires: qt5-srpm-macros
|
|
||||||
Requires: rust-srpm-macros
|
Requires: rust-srpm-macros
|
||||||
Requires: rpmautospec-rpm-macros
|
Requires: qt5-srpm-macros
|
||||||
|
|
||||||
Requires: rpm >= 4.11.0
|
Requires: rpm >= 4.11.0
|
||||||
Requires: dwz >= 0.4
|
Requires: dwz >= 0.4
|
||||||
Requires: zip
|
Requires: zip
|
||||||
Requires: (annobin if (gcc or clang))
|
Requires: (annobin if gcc)
|
||||||
|
|
||||||
# for brp-mangle-shebangs
|
# for brp-mangle-shebangs
|
||||||
Requires: %{_bindir}/find
|
Requires: %{_bindir}/find
|
||||||
@ -170,6 +162,7 @@ install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.*
|
|||||||
|
|
||||||
mkdir -p %{buildroot}%{_fileattrsdir}
|
mkdir -p %{buildroot}%{_fileattrsdir}
|
||||||
install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr
|
install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr
|
||||||
|
install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov
|
||||||
|
|
||||||
mkdir -p %{buildroot}%{_rpmluadir}/fedora/{rpm,srpm}
|
mkdir -p %{buildroot}%{_rpmluadir}/fedora/{rpm,srpm}
|
||||||
install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora common.lua
|
install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora common.lua
|
||||||
@ -189,13 +182,13 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora/srpm forge.lua
|
|||||||
%{rrcdir}/find-requires
|
%{rrcdir}/find-requires
|
||||||
%{rrcdir}/brp-ldconfig
|
%{rrcdir}/brp-ldconfig
|
||||||
%{_fileattrsdir}/*.attr
|
%{_fileattrsdir}/*.attr
|
||||||
|
%{_rpmconfigdir}/kmod.prov
|
||||||
%{_rpmconfigdir}/macros.d/macros.*-srpm
|
%{_rpmconfigdir}/macros.d/macros.*-srpm
|
||||||
%{_rpmconfigdir}/macros.d/macros.build-constraints
|
|
||||||
%{_rpmconfigdir}/macros.d/macros.dwz
|
%{_rpmconfigdir}/macros.d/macros.dwz
|
||||||
%{_rpmconfigdir}/macros.d/macros.fedora-misc
|
|
||||||
%{_rpmconfigdir}/macros.d/macros.forge
|
%{_rpmconfigdir}/macros.d/macros.forge
|
||||||
%{_rpmconfigdir}/macros.d/macros.ldconfig
|
%{_rpmconfigdir}/macros.d/macros.ldconfig
|
||||||
%{_rpmconfigdir}/macros.d/macros.vpath
|
%{_rpmconfigdir}/macros.d/macros.vpath
|
||||||
|
%{_rpmconfigdir}/macros.d/macros.fedora-misc
|
||||||
%dir %{_rpmluadir}/fedora
|
%dir %{_rpmluadir}/fedora
|
||||||
%dir %{_rpmluadir}/fedora/srpm
|
%dir %{_rpmluadir}/fedora/srpm
|
||||||
%dir %{_rpmluadir}/fedora/rpm
|
%dir %{_rpmluadir}/fedora/rpm
|
||||||
@ -216,91 +209,6 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora/srpm forge.lua
|
|||||||
%{_rpmconfigdir}/macros.d/macros.kmp
|
%{_rpmconfigdir}/macros.d/macros.kmp
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Sun Aug 15 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 176-3
|
|
||||||
- Fix macros.build-constraints' %%limit_build
|
|
||||||
- number of CPUs will never be set to less than 1
|
|
||||||
- this now outputs build flag overrides to be used with %%make_build etc.
|
|
||||||
- add documentation
|
|
||||||
|
|
||||||
* Sat Jul 24 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 176-2
|
|
||||||
- Add macros.build-constraints
|
|
||||||
- Keep the misc macros in alphabetical order
|
|
||||||
|
|
||||||
* Thu Apr 29 2021 Stephen Coady <scoady@redhat.com> - 176-1
|
|
||||||
- Add Requires: rpmautospec-rpm-macros
|
|
||||||
|
|
||||||
* Wed Mar 10 2021 Kalev Lember <klember@redhat.com> - 175-1
|
|
||||||
- BRP Python Bytecompile: Avoid hardcoding /usr/bin prefix for python
|
|
||||||
|
|
||||||
* Sun Nov 29 2020 Miro Hrončok <mhroncok@redhat.com> - 174-1
|
|
||||||
- BRP Python Bytecompile: Also detect Python files in /app/lib/pythonX.Y
|
|
||||||
|
|
||||||
* Fri Oct 30 2020 Florian Weimer <fweimer@redhat.com> - 173-1
|
|
||||||
- x86_64: Re-add -fcf-protection to build flags (#1891308)
|
|
||||||
|
|
||||||
* Fri Sep 11 2020 Miro Hrončok <mhroncok@redhat.com> - 172-1
|
|
||||||
- Filter out LTO flags from %%extension flags macros
|
|
||||||
- Fixes: rhbz#1877652
|
|
||||||
|
|
||||||
* Wed Sep 2 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 171-1
|
|
||||||
- Add Requires: lua-srpm-macros
|
|
||||||
|
|
||||||
* Fri Aug 21 2020 Tom Stellard <tstellar@redhat.com> - 170-1
|
|
||||||
- Enable -fstack-clash-protection for clang on x86, s390x, and ppc64le
|
|
||||||
|
|
||||||
* Thu Aug 20 2020 Tom Stellard <tstellar@redhat.com> - 169-1
|
|
||||||
- Add -flto to ldflags for clang toolchain
|
|
||||||
|
|
||||||
* Thu Aug 20 2020 Neal Gompa <ngompa13@gmail.com> - 168-1
|
|
||||||
- Fix CC/CXX exports so arguments are included in exported variable
|
|
||||||
- Allow overrides of CC/CXX like CFLAGS and CXXFLAGS from shell variables
|
|
||||||
|
|
||||||
* Mon Aug 03 2020 Troy Dawson <tdawson@redhat.com> - 167-1
|
|
||||||
- Add Requires: kernel-srpm-macros
|
|
||||||
|
|
||||||
* Thu Jul 30 2020 Jeff Law <law@redhat.com> - 166-1
|
|
||||||
- Use -flto=auto for GCC to speed up builds
|
|
||||||
|
|
||||||
* Tue Jul 28 2020 Tom Stellard <tstellar@redhat.com> - 165-1
|
|
||||||
- Only use supported lto flags for clang toolchain
|
|
||||||
|
|
||||||
* Thu Jul 23 2020 Lumír Balhar <lbalhar@redhat.com> - 164-1
|
|
||||||
- Disable Python hash seed randomization in brp-python-bytecompile
|
|
||||||
|
|
||||||
* Tue Jul 21 2020 Jeff Law <law@redhat.com> - 163-1
|
|
||||||
- Enable LTO by default
|
|
||||||
|
|
||||||
* Thu Jul 16 2020 Lumír Balhar <lbalhar@redhat.com> - 162-1
|
|
||||||
- New script brp-fix-pyc-reproducibility
|
|
||||||
|
|
||||||
* Tue Jun 16 2020 Lumír Balhar <lbalhar@redhat.com> - 161-2
|
|
||||||
- Use stdlib compileall for Python >= 3.9
|
|
||||||
|
|
||||||
* Mon Jun 15 2020 Lumír Balhar <lbalhar@redhat.com> - 161-1
|
|
||||||
- No more automagic Python bytecompilation (phase 3)
|
|
||||||
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_3
|
|
||||||
|
|
||||||
* Thu Jun 04 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 160-1
|
|
||||||
- Fix broken %%configure
|
|
||||||
|
|
||||||
* Wed Jun 03 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 159-1
|
|
||||||
- Fixes for new_package macro
|
|
||||||
|
|
||||||
* Wed Jun 03 2020 Igor Raits <ignatenkobrain@fedoraproject.org> - 158-1
|
|
||||||
- Add option to choose C/C++ toolchain
|
|
||||||
|
|
||||||
* Sat May 30 2020 Jeff Law <law@redhat.com> - 157-1
|
|
||||||
- When LTO is enabled, fix broken configure files.
|
|
||||||
|
|
||||||
* Sat May 30 2020 Nicolas Mailhot <nim@fedoraproject.org> - 156-1
|
|
||||||
- Add new_package macro and associated lua framework.
|
|
||||||
|
|
||||||
* Sat May 23 2020 Nicolas Mailhot <nim@fedoraproject.org> - 155-1
|
|
||||||
- forge: add gitea support
|
|
||||||
|
|
||||||
* Thu Apr 09 2020 Panu Matilainen <pmatilai@redhat.com> - 154-1
|
|
||||||
- Optimize kernel module provides by using a parametric generator
|
|
||||||
|
|
||||||
* Thu Feb 20 2020 Jason L Tibbitts III <tibbs@math.uh.edu> - 153-1
|
* Thu Feb 20 2020 Jason L Tibbitts III <tibbs@math.uh.edu> - 153-1
|
||||||
- Add dependency on fonts-srpm-macros, as those have now been approved by FPC.
|
- Add dependency on fonts-srpm-macros, as those have now been approved by FPC.
|
||||||
|
|
||||||
|
4
rpmrc
4
rpmrc
@ -74,9 +74,9 @@ optflags: hades %{__global_compiler_flags}
|
|||||||
optflags: s390 %{__global_compiler_flags} -m31 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables
|
optflags: s390 %{__global_compiler_flags} -m31 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables
|
||||||
optflags: s390x %{__global_compiler_flags} -m64 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection
|
optflags: s390x %{__global_compiler_flags} -m64 -march=zEC12 -mtune=z13 -fasynchronous-unwind-tables -fstack-clash-protection
|
||||||
|
|
||||||
optflags: aarch64 %{__global_compiler_flags} -mbranch-protection=standard -fasynchronous-unwind-tables %[ "%{toolchain}" == "gcc" ? "-fstack-clash-protection" : "" ]
|
optflags: aarch64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||||
|
|
||||||
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables %[ "%{toolchain}" == "gcc" ? "-fstack-clash-protection" : "" ]
|
optflags: riscv64 %{__global_compiler_flags} -fasynchronous-unwind-tables -fstack-clash-protection
|
||||||
|
|
||||||
# set build arch to fedora buildarches on hardware capable of running it
|
# set build arch to fedora buildarches on hardware capable of running it
|
||||||
# saves having to do rpmbuild --target=
|
# saves having to do rpmbuild --target=
|
||||||
|
Loading…
Reference in New Issue
Block a user