Merge remote-tracking branch 'up/master' into master-riscv64

Signed-off-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
This commit is contained in:
David Abdurachmanov 2018-07-23 12:50:46 +02:00
commit db4cd90cae
Signed by: davidlt
GPG Key ID: 7108702C938B13C1
8 changed files with 127 additions and 60 deletions

View File

@ -121,6 +121,10 @@ while IFS= read -r -d $'\0' f; do
# /whatsoever/env foo → /whatsoever/foo # /whatsoever/env foo → /whatsoever/foo
shebang=$(echo "$shebang" | sed -r -e 's@^(.+/)env (.+)$@\1\2@') shebang=$(echo "$shebang" | sed -r -e 's@^(.+/)env (.+)$@\1\2@')
# If the shebang now starts with /bin, change it to /usr/bin
# https://bugzilla.redhat.com/show_bug.cgi?id=1581757
shebang=$(echo "$shebang" | sed -r -e 's@^/bin/@/usr/bin/@')
# Replace ambiguous python with python2 # Replace ambiguous python with python2
py_shebang=$(echo "$shebang" | sed -r -e 's@/usr/bin/python(\s|$)@/usr/bin/python2\1@') py_shebang=$(echo "$shebang" | sed -r -e 's@/usr/bin/python(\s|$)@/usr/bin/python2\1@')

View File

@ -70,7 +70,7 @@ For other considerations involving shared objects, see:
It is possible to set RPM macros to change some aspects of the It is possible to set RPM macros to change some aspects of the
compiler flags. Changing these flags should be used as a last compiler flags. Changing these flags should be used as a last
recourse if other workarunds are not available. recourse if other workarounds are not available.
### Lazy binding ### Lazy binding
@ -276,10 +276,16 @@ tuning in the `gcc` package. These settings are:
with other ARMv7-A implementations). `-mabi=aapcs-linux` switches to with other ARMv7-A implementations). `-mabi=aapcs-linux` switches to
the AAPCS ABI for GNU/Linux. the AAPCS ABI for GNU/Linux.
* **i686**: `-march=i686` is used to select a minmum support CPU level * **i686**: `-march=i686` is used to select a minmum support CPU level
of i686 (corresponding to the Pentium Pro). `-mtune=generic` activates of i686 (corresponding to the Pentium Pro). SSE2 support is
tuning for a current blend of CPUs (under the assumption that most enabled with `-msse2` (so only CPUs with SSE2 support can run the
users of i686 packages obtain them through an x86_64 installation compiled code; SSE2 was introduced first with the Pentium 4).
on current hardware). `-mtune=generic` activates tuning for a current blend of CPUs
(under the assumption that most users of i686 packages obtain them
through an x86_64 installation on current hardware).
`-mfpmath=sse` instructs GCC to use the SSE2 unit for floating
point math to avoid excess precision issues. `-mstackrealign`
avoids relying on the stack alignment guaranteed by the current
version of the i386 ABI.
* **ppc64le**: `-mcpu=power8 -mtune=power8` selects a minimum supported * **ppc64le**: `-mcpu=power8 -mtune=power8` selects a minimum supported
CPU level of POWER8 (the first CPU with ppc64le support) and tunes CPU level of POWER8 (the first CPU with ppc64le support) and tunes
for POWER8. for POWER8.

View File

@ -1,9 +1,24 @@
#! /bin/sh #! /bin/bash
IFS=$'\n' IFS=$'\n'
for module in $(grep -E '/lib/modules/.+\.ko$'); do for module in $(grep -E '/lib/modules/.+\.ko$'); do
nm $module \ if [[ -n $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then
| sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):ksym(\2) = \1:p' nm $module \
done \ | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \
| sort -u | awk --non-decimal-data '{printf("ksym(%s) = 0x%08x\n", $2, $1)}' \
| LC_ALL=C sort -u
else
ELFRODATA=$(readelf -R .rodata $module | awk '/0x/{printf $2$3$4$5}')
if [[ -n $(readelf -h $module | grep "little endian") ]]; then
RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g')
else
RODATA=$ELFRODATA
fi
for sym in $(nm $module | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do
echo $sym $RODATA
done \
| awk --non-decimal-data '{printf("ksym(%s) = 0x%08s\n", $2, substr($3,($1*2)+1,8))}' \
| LC_ALL=C sort -u
fi
done

View File

@ -2,19 +2,47 @@
IFS=$'\n' IFS=$'\n'
# Extract all of the symbols provided by this module.
all_provides() { all_provides() {
nm "$@" \ if [[ -n $(nm "$@" | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p') ]]; then
| sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):\1\t\2:p' \ nm "$@" \
| sort -k2 -u | sed -r -ne 's:^0*([0-9a-f]+) A __crc_(.+):0x\1 \2:p' \
| awk --non-decimal-data '{printf("0x%08x\t%s\n", $1, $2)}' \
| LC_ALL=C sort -k2,2 -u
else
ELFRODATA=$(readelf -R .rodata "$@" | awk '/0x/{printf $2$3$4$5}')
if [[ -n $(readelf -h "$@" | grep "little endian") ]]; then
RODATA=$(echo $ELFRODATA | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/g')
else
RODATA=$ELFRODATA
fi
for sym in $(nm "$@" | sed -r -ne 's:^0*([0-9a-f]+) R __crc_(.+):0x\1 \2:p'); do
echo $sym $RODATA
done \
| awk --non-decimal-data '{printf("0x%08s\t%s\n", substr($3,($1*2)+1,8), $2)}' \
| LC_ALL=C sort -k2,2 -u
fi
} }
# Extract all of the requirements of this module.
all_requires() { all_requires() {
for module in "$@"; do for module in "$@"; do
set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q) set -- $(/sbin/modinfo -F vermagic "$module" | sed -e 's: .*::' -e q)
/sbin/modprobe --dump-modversions "$module" \ /sbin/modprobe --dump-modversions "$module" \
| sed -r -e 's:^0x0*::' -e 's:$:\t'"$1"':' | awk --non-decimal-data '
BEGIN { FS = "\t" ; OFS = "\t" }
{printf("0x%08x\t%s\n", $1, $2)}' \
| sed -r -e 's:$:\t'"$1"':'
done \ done \
| sort -k2 -u | LC_ALL=C sort -k2,2 -u
}
# Filter out requirements fulfilled by the module itself.
mod_requires() {
LC_ALL=C join -t $'\t' -j 2 -v 1 \
<(all_requires "$@") \
<(all_provides "$@") \
| LC_ALL=C sort -k1,1 -u
} }
if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then if ! [ -e /sbin/modinfo -a -e /sbin/modprobe ]; then
@ -24,25 +52,23 @@ fi
modules=($(grep -E '/lib/modules/.+\.ko$')) modules=($(grep -E '/lib/modules/.+\.ko$'))
if [ ${#modules[@]} -gt 0 ]; then if [ ${#modules[@]} -gt 0 ]; then
symset_table=$(mktemp -t ${0##*/}.XXXXX) kernel=$(/sbin/modinfo -F vermagic "${modules[0]}" | sed -e 's: .*::' -e q)
/usr/lib/rpm/redhat/symset-table | sort > $symset_table
join -t $'\t' -j 1 -a 2 $symset_table <( # get all that kernel provides
# Filter out requirements that we fulfill ourself. symvers=$(mktemp -t ${0##*/}.XXXXX)
join -t $'\t' -j 2 -v 1 \
<(all_requires "${modules[@]}") \ cat /usr/src/kernels/$kernel/Module.symvers | awk '
<(all_provides "${modules[@]}") \
| awk '
BEGIN { FS = "\t" ; OFS = "\t" } BEGIN { FS = "\t" ; OFS = "\t" }
{ print $3 "/" $2 "/" $1 } { print $2 "\t" $1 }
' \ ' \
| sort -u) \ | sed -r -e 's:$:\t'"$kernel"':' \
| sort -u \ | LC_ALL=C sort -k1,1 -u > $symvers
| awk '
{ FS = "\t" ; OFS = "\t" } # Symbols matching with the kernel get a "kernel" dependency
NF == 3 { print "kernel(" $2 ") = " $3 LC_ALL=C join -t $'\t' -j 1 $symvers <(mod_requires "${modules[@]}") | LC_ALL=C sort -u \
next } | awk '{ FS = "\t" ; OFS = "\t" } { print "kernel(" $1 ") = " $2 }'
{ split($1, arr, "/")
print "ksym(" arr[3] ") = " arr[2] } # Symbols from elsewhere get a "ksym" dependency
' LC_ALL=C join -t $'\t' -j 1 -v 2 $symvers <(mod_requires "${modules[@]}") | LC_ALL=C sort -u \
| awk '{ FS = "\t" ; OFS = "\t" } { print "ksym(" $1 ") = " $2 }'
fi fi

20
macros
View File

@ -44,7 +44,7 @@
# 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.
%build_ldflags -Wl,-z,relro %{_ld_symbols_flags} %{_hardened_ldflags} %build_ldflags -Wl,-z,relro %{_ld_as_needed_flags} %{_ld_symbols_flags} %{_hardened_ldflags}
# Expands to shell code to seot 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
@ -141,7 +141,7 @@
%__brp_strip /usr/lib/rpm/brp-strip %{__strip} %__brp_strip /usr/lib/rpm/brp-strip %{__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/brp-python-bytecompile %{__python} %{?_python_bytecompile_errors_terminate_build} %__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile "%{__python}" "%{?_python_bytecompile_errors_terminate_build}" "%{?_python_bytecompile_extra}"
%__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
@ -183,6 +183,8 @@
# #
## Should python bytecompilation errors terminate a build? ## Should python bytecompilation errors terminate a build?
%_python_bytecompile_errors_terminate_build 1 %_python_bytecompile_errors_terminate_build 1
## Should python bytecompilation compile outisde python specific directories?
%_python_bytecompile_extra 1
# Use SHA-256 for FILEDIGESTS instead of default MD5 # Use SHA-256 for FILEDIGESTS instead of default MD5
%_source_filedigest_algorithm 8 %_source_filedigest_algorithm 8
@ -212,12 +214,20 @@
# 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.
# Use "%define _strict_symbol_defs_build 1" to enable. # Use "%define _ld_strict_symbol_defs 1" to enable.
#%_strict_symbol_defs_build 1 #%_ld_strict_symbol_defs 1
%_ld_symbols_flags %{?_strict_symbol_defs_build:-Wl,-z,defs} %_ld_symbols_flags %{?_ld_strict_symbol_defs:-Wl,-z,defs}
# https://fedoraproject.org/wiki/Changes/RemoveExcessiveLinking
# use "%define _ld_as_needed 1" to enable.
#%_ld_as_needed 1
%_ld_as_needed_flags %{?_ld_as_needed:-Wl,--as-needed}
%__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} %__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}
# Automatically trim changelog entries after 2 years
%_changelog_trimtime %{lua:print(os.time() - 2 * 365 * 86400)}
#============================================================================== #==============================================================================
# ---- Generic auto req/prov filtering macros # ---- Generic auto req/prov filtering macros
# #

View File

@ -1,2 +1,2 @@
# arches that ldc builds on # arches that ldc builds on
%ldc_arches %{ix86} x86_64 %{arm} %{power64} %ldc_arches %{ix86} x86_64 %{arm}

View File

@ -6,11 +6,10 @@
Summary: Red Hat specific rpm configuration files Summary: Red Hat specific rpm configuration files
Name: redhat-rpm-config Name: redhat-rpm-config
Version: 111 Version: 117
Release: 1.4.riscv64%{?dist} Release: 1.0.riscv64%{?dist}
# No version specified. # No version specified.
License: GPL+ License: GPL+
Group: Development/System
URL: https://src.fedoraproject.org/rpms/redhat-rpm-config URL: https://src.fedoraproject.org/rpms/redhat-rpm-config
# Core rpm settings # Core rpm settings
@ -117,7 +116,7 @@ Provides: system-rpm-config = %{version}-%{release}
Red Hat specific rpm configuration files. Red Hat specific rpm configuration files.
%package -n kernel-rpm-macros %package -n kernel-rpm-macros
Summary: Macros and scripts for building kernel module packages. Summary: Macros and scripts for building kernel module packages
Requires: redhat-rpm-config >= 13 Requires: redhat-rpm-config >= 13
%description -n kernel-rpm-macros %description -n kernel-rpm-macros
@ -184,26 +183,33 @@ install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov
%{_rpmconfigdir}/macros.d/macros.kmp %{_rpmconfigdir}/macros.d/macros.kmp
%changelog %changelog
* Mon Jun 04 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 111-1.4.riscv64 * Mon Jul 23 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 117-1.0.riscv64
- Enable debug packages for RISC-V (riscv64)
* Wed May 23 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 111-1.3.riscv64
- Disable perl_default_subpackage_tests (test suite subpackage for perl packages) - Disable perl_default_subpackage_tests (test suite subpackage for perl packages)
* Sun May 06 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 111-1.2.riscv64
- Enable annobin for riscv64 (finally built, but untested)
* Sat May 05 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 111-1.1.riscv64
- Remove Requires: (annobin if gcc)
* Sat May 05 2018 David Abdurachmanov <david.abdurachmanov@gmail.com> - 111-1.0.riscv64
- Disable %check for riscv64 - Disable %check for riscv64
- Disable debug packages for riscv64 (still don't have GDB, which is needed
for debug packages)
- Disable annotated builds for riscv64 (untested)
- Add -fasynchronous-unwind-tables -fstack-clash-protection to riscv64 (other - Add -fasynchronous-unwind-tables -fstack-clash-protection to riscv64 (other
arches seem to have them now) arches seem to have them now)
* Mon Jul 16 2018 Miro Hrončok <mhroncok@redhat.com> - 117-1
- Mangle /bin shebnags to /usr/bin ones (#1581757)
* Tue Jul 10 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 116-1
- Add option to add -Wl,--as-needed into LDFLAGS
* Mon Jul 09 2018 Kalev Lember <klember@redhat.com> - 115-1
- Disable non-functional ppc64 support for ldc packages
* Tue Jun 26 2018 Panu Matilainen <pmatilai@redhat.com> - 114-1
- Fix kernel ABI related strings (Peter Oros, #26)
- Automatically trim changelog to two years (Zbigniew Jędrzejewski-Szmek, #22)
- Cosmetics cleanups (Zbigniew Jędrzejewski-Szmek, #22)
* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 113-1
- Build flags: Require SSE2 on i686 (#1592212)
* Mon May 28 2018 Miro Hrončok <mhroncok@redhat.com> - 112-1
- Add a possibility to opt-out form automagic Python bytecompilation
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation
* Wed May 02 2018 Peter Jones <pjones@redhat.com> - 111-1 * Wed May 02 2018 Peter Jones <pjones@redhat.com> - 111-1
- brp-mangle-shebangs: add %%{__brp_mangle_shebangs_exclude_file} and - brp-mangle-shebangs: add %%{__brp_mangle_shebangs_exclude_file} and
%%{__brp_mangle_shebangs_exclude_from_file} to allow you to specify files %%{__brp_mangle_shebangs_exclude_from_file} to allow you to specify files

2
rpmrc
View File

@ -3,7 +3,7 @@ include: /usr/lib/rpm/rpmrc
optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection optflags: i386 %{__global_compiler_flags} -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection optflags: i486 %{__global_compiler_flags} -m32 -march=i486 -fasynchronous-unwind-tables -fstack-clash-protection
optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection optflags: i586 %{__global_compiler_flags} -m32 -march=i586 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection optflags: i686 %{__global_compiler_flags} -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection
optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection optflags: athlon %{__global_compiler_flags} -m32 -march=athlon -fasynchronous-unwind-tables -fstack-clash-protection
optflags: ia64 %{__global_compiler_flags} optflags: ia64 %{__global_compiler_flags}
optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection optflags: x86_64 %{__global_compiler_flags} -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection