Commit Graph

158 Commits

Author SHA1 Message Date
Tom Stellard
d698d04313
Add -flto to ldflags for clang toolchain
Also, add a gating CI tests to ensure that future macro changes work
with clang.
2020-08-20 19:03:54 +02:00
8a5ee87c50 Fix CC/CXX exports and allow overrides like CFLAGS and CXXFLAGS
Some packages require being able to redefine the compiler variables
set to add additional base arguments that must be used everywhere.
This change makes it possible for that to work correctly.
2020-08-20 08:45:21 -04:00
Jeff Law
4637e1bd55 - Use -flto=auto for GCC to speed up builds 2020-07-30 10:45:53 -06:00
Tom Stellard
06f1d527d7 Only use supported lto flags for clang toolchain 2020-07-28 02:16:26 +00:00
Jeff Law
5baaf4a99c Enable LTO by default 2020-07-21 21:38:41 -06:00
Lumir Balhar
5f32aac09e New opt-in possibility to fix byte-compilation reproducibility
A new script brp-fix-pyc-reproducibility creates an opt-in way of how to fix
problems with the reproducibility of byte-compiled Python files. The script
uses marshalparser [0] which currently doesn't provide solutions for all issues
but can fix at least problems with reference flags. For more info see
this Bugzilla [1].

If you want to use this new feature, you need to define
`%py_reproducible_pyc_path` to specify a path you want to fix `.pyc`
files in (recursively) and build-require /usr/bin/marshalparser.

if you forget to build-require the parser. The error message is:
```
+ /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0
Bytecompiling .py files below /builddir/build/BUILDROOT/tldr-0.5-2.fc33.x86_64/usr/lib/python3.9 using /usr/bin/python3.9
+ /usr/lib/rpm/redhat/brp-fix-pyc-reproducibility /builddir/build/BUILDROOT/tldr-0.5-2.fc33.x86_64
ERROR: If %py_reproducible_pyc_path is defined, you have to also BuildRequire: /usr/bin/marshalparser !
error: Bad exit status from /var/tmp/rpm-tmp.UUJr4v (%install)
```

A build fails if the parser is not able to parse any of the `.pyc` files.

And finally, if a build is properly configured it produces fixed `.pyc` files.

Currently, `.pyc` files in the tldr package contain a lot of unused reference flags:
```
$ dnf install -y tldr
$ marshalparser --unused /usr/lib/python3.9/site-packages/__pycache__/tldr.cpython-39.pyc
… long output …
190 - Flag_ref(byte=9610, type='TYPE_SHORT_ASCII_INTERNED', content=b'init', usages=0)
191 - Flag_ref(byte=9633, type='TYPE_SHORT_ASCII_INTERNED', content=b'source', usages=0)
192 - Flag_ref(byte=9651, type='TYPE_SHORT_ASCII_INTERNED', content=b'argv', usages=0)
193 - Flag_ref(byte=9657, type='TYPE_SHORT_ASCII_INTERNED', content=b'print_help', usages=0)
194 - Flag_ref(byte=9669, type='TYPE_SHORT_ASCII_INTERNED', content=b'stderr', usages=0)
195 - Flag_ref(byte=9682, type='TYPE_SHORT_ASCII_INTERNED', content=b'parse_args', usages=0)
196 - Flag_ref(byte=9737, type='TYPE_SHORT_ASCII_INTERNED', content=b'encode', usages=0)
197 - Flag_ref(byte=9782, type='TYPE_SHORT_ASCII_INTERNED', content=b'parser', usages=0)
198 - Flag_ref(byte=9790, type='TYPE_SHORT_ASCII_INTERNED', content=b'options', usages=0)
199 - Flag_ref(byte=9799, type='TYPE_SHORT_ASCII_INTERNED', content=b'rest', usages=0)
200 - Flag_ref(byte=9821, type='TYPE_SHORT_ASCII_INTERNED', content=b'result', usages=0)
202 - Flag_ref(byte=10022, type='TYPE_SHORT_ASCII_INTERNED', content=b'__main__', usages=0)
203 - Flag_ref(byte=10102, type='TYPE_SHORT_ASCII_INTERNED', content=b'argparse', usages=0)
204 - Flag_ref(byte=10433, type='TYPE_SHORT_ASCII_INTERNED', content=b'__name__', usages=0)
205 - Flag_ref(byte=10463, type='TYPE_SHORT_ASCII_INTERNED', content=b'<module>', usages=0)
```

This new feature fixes them:

```
$ marshalparser --unused /usr/lib/python3.9/site-packages/__pycache__/tldr.cpython-39.pyc
<empty output>
```

[0] https://github.com/fedora-python/marshalparser
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1686078
2020-07-21 11:42:54 +00:00
Miro Hrončok
e453b585b4 Drop double newline 2020-07-21 13:42:29 +02:00
Lumir Balhar
ecf9fd3bdb No more automagic Python bytecompilation (phase 3) 2020-06-15 16:20:05 +02:00
Igor Raits
2c5594c9af
Fix broken %configure
Signed-off-by: Igor Raits <ignatenkobrain@fedoraproject.org>
2020-06-04 03:14:15 +02:00
Igor Raits
5d8c70518a
Cleanup unused CCC_OVERRIDE_OPTIONS
Signed-off-by: Igor Raits <ignatenkobrain@fedoraproject.org>
2020-06-03 21:41:23 +02:00
Igor Raits
7562b38ec5
Add support for selecting a clang as a toolchain
Signed-off-by: Igor Raits <ignatenkobrain@fedoraproject.org>
2020-06-03 21:30:21 +02:00
Jeff Law
891c721814 Latest version of sed fixes for broken/compromised configure macros 2020-05-30 13:21:08 -06:00
Vít Ondruch
924b9f3be4 Drop %requires_eq.
This macro calls `rpm` on background, which is not good idea. Luckily,
it seems to be used just by samba package, so it should not cause any
substantial issues.

More details at \[[1]\] where the guideline to ban `rpm` call during
build is discussed.

[1]: https://pagure.io/packaging-committee/pull-request/954
2020-04-22 07:40:27 +00:00
Jeff Law
20749d9857
Strip LTO sections/symbols from installed .o/.a files 2020-02-14 13:39:34 +01:00
Jeff Law
3e759e70ac Allow conditionally adding -fcommon to CFLAGS by defining %_legacy_common_support
Co-Authored-By: Miro Hrončok <miro@hroncok.cz>
2020-01-23 14:25:11 +01:00
Florian Weimer
fff3459086 Reenable annobin after GCC 10 integration (#1792892)
This reverts commit c18924507d
("Temporarily disable annobin for GCC 10 (#1792892)").
2020-01-20 13:52:38 +01:00
Florian Weimer
c18924507d Temporarily disable annobin for GCC 10 (#1792892) 2020-01-20 11:42:04 +01:00
Pavel Raiskup
e345575f97 %set_build_flags: define LT_SYS_LIBRARY_PATH
This config is to let libtool recognize that our 64bit variant of
%_libdir is actually on the standard/default library path, so libtool
doesn't think it has to be hard-wired as RPATH.  This is proper solution
for libtool RPATH issues described in:

  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_removing_rpath

The libtool script/macros (new enough, v2.4.6+) honor this variable when
it isn't possible to detect the system-wide default library path.  It is
e.g. able to parse /etc/ld.so.* configuration, but there's no info about
/usr/lib64 on Fedora.

So to not force everybody to do:

   %configure LT_SYS_LIBRARY_PATH=...

... rather set this system-wide.  This is low-risk change since
older libtool scripts don't use this variable, and really no other
tools should.
2019-12-03 15:04:51 +01:00
Miro Hrončok
53617406d9 Move brp-python-bytecompile from rpm, so we can easily adapt it 2019-07-20 08:07:57 +02:00
Daniel Mach
38d0d92d5c Switch binary payload compression to Zstandard level 19
Fedora Change: https://fedoraproject.org/w/index.php?title=Changes/Switch_RPMs_to_zstd_compression
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1720729
Fesco ticket: https://pagure.io/fesco/issue/2144
Rel-eng ticket: https://pagure.io/releng/issue/8395
2019-07-01 16:41:12 +02:00
Vít Ondruch
86aae600e6 Enable RPM to set SOURCE_DATE_EPOCH environment variable.
If %source_date_epoch_from_changelog is true, RPM can set the SOURCE_DATE_EPOCH
environment variable to the timestamp of the topmost changelog entry. The
SOURCE_DATE_EPOCH can be in turn used by various projects to override otherwise
dynamically generated timestamps.

E.g. this might help to have stable timestamps in generated
documentation etc.
2019-06-27 08:41:44 +02:00
Jitka Plesnikova
c68c6bd353 Remove perl macro refugees 2019-06-12 12:54:26 +02:00
Panu Matilainen
bab65715b2 Provide temporary shelter for rpm 4.15 perl macro refugees
Rpm 4.15 removes various language-specific macros. Python side is
already covered by the versioned python macros but this is not the
case with Perl, macros. Add them here temporarily to avoid breaking
the world, but these really belong to perl-macros or such.
2019-06-10 14:12:21 +03:00
Panu Matilainen
20a0e63249 Drop redundant _smp_mflag re-definition, use the one from rpm instead
Once upon a time these did differ (for various bad reasons) but the
version in rpm has been identical to ours for many years, lets shed
some old baggage.
2019-01-15 12:02:22 +02:00
Florian Weimer
e80fa1344a Build flags: Add support for extension builders (#1543394) 2018-12-20 11:34:27 +01:00
Miro Hrončok
a212174975 Make automagic Python bytecompilation optional
https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation_phase_2
2018-11-15 12:13:14 +01:00
Igor Gnatenko
357550f7ba
Enable --as-needed by default
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-08-15 07:00:14 +02:00
Igor Gnatenko
ce50624ff0
fix type from previous commit
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-10 16:45:19 +02:00
Igor Gnatenko
85e473f982
Add option to add -Wl,--as-needed into LDFLAGS
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-10 16:41:33 +02:00
Igor Gnatenko
68e4ff270c
rename _strict_symbol_defs_build to _ld_strict_symbol_defs
It says more where to look and what it is supposed to do.

Acked-by: Florian Festi <ffesti@redhat.com>
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-07-10 16:41:33 +02:00
Panu Matilainen
aa24434396 Merge #22 Automatically trim changelog entries after 2 years 2018-06-26 10:40:16 +00:00
Miro Hrončok
c7d6417a3b Add a possibility to opt-out form automagic Python bytecompilation
That is, outside of Python specific directories.

More at https://fedoraproject.org/wiki/Changes/No_more_automagic_Python_bytecompilation
2018-05-28 14:26:20 +02:00
Peter Jones
f7e8f73ead brp-mangle-shebangs: make it possible to use generated exclusion lists
This patch adds two additional rpm macros, __brp_mangle_shebangs_exclude_file
and __brp_mangle_shebangs_exclude_from_file, to specify files from which
to read the extended regexps used for excluding shebangs and target
files.

Additionally, this adds documentation in the macros file and
--help/--usage/-?/-h to brp-mangle-shebangs, so that it's possible to
actually discover what the intended behavior is without reading the
script itself.

Signed-off-by: Peter Jones <pjones@redhat.com>
2018-05-02 14:38:46 -04:00
Zbigniew Jędrzejewski-Szmek
8c5d5de24a Trim changelog entries older than two years
Inspired by http://gitweb.mageia.org/software/rpm/rpm-setup/tree/macros.in#n22
but changed to two years (3+ releases of Fedora).
2018-03-11 15:15:30 +01:00
Florian Weimer
cd7779aeac First step of moving -z now to the gcc command line (#1548397) 2018-02-24 17:38:12 +01:00
Miro Hrončok
fb05a239d2
Allow to opt-out from shebang mangling for specific paths/shebangs
Introduces __brp_mangle_shebangs_exclude_from and __brp_mangle_shebangs_exclude

 * the first allows to explude specific paths from the mangling
 * the second allows to exlude specific shebangs

Both are used with `grep -E`. Similar escaping rules as in [1] apply.

[1] https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
2018-02-15 08:47:54 +01:00
Florian Weimer
fa08f0e5a1 Add RPM macros for compiler/linker flags 2018-02-04 18:00:40 +01:00
Miro Hrončok
257a3a95c7 Add brp-mangle-shebangs 2018-01-30 13:31:25 +01:00
Igor Gnatenko
12ace9bdb9 Create DSO symlinks automatically
If there are unpackaged symlinks, build will fail with unpackaged files.
People can %undefine __brp_ldconfig if they need to and they should make
sure that they call ldconfig themselves.

Right now, script doesn't guide packagers what to do, but it's not
prerequisite.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2018-01-29 16:41:52 +01:00
Florian Weimer
8d6c6d0761 Build flags: Disable -z defs again (#1535422) 2018-01-29 15:18:11 +01:00
Florian Weimer
078af19261 Link with -z defs by default (#1535422) 2018-01-22 16:01:54 +01:00
Florian Weimer
faa1ad44f7 Remove --param=ssp-buffer-size=4 from build flags
-fstack-protector-strong does not use frame size heuristics for
deciding which functions to instrument, so changing the parameter has
no effect.
2018-01-22 14:30:12 +01:00
Panu Matilainen
3bf139f646 Document how to disable hardened and annotated build (#1211296) 2018-01-19 12:21:06 +02:00
Panu Matilainen
a747e7fb51 Fix the inevitable embarrassing typo in 77, doh 2018-01-17 12:57:53 +02:00
Panu Matilainen
c4646d791d Macroize build root policies for consistent disable/override ability
Add a separate macro for each brp we have, using standard naming
convention and conditionalize the usage in %__os_install_post.
Voilà, we have a standard way to disable (and also override) any brp
scripts from specs that need it and a common scheme for new brps
to follow.

Note that this is not supposed to change the existing behavior and
default build root policy invocations at all, any change in those
would be a thinko/typo/copy-paste error in this commit.
2018-01-17 12:29:44 +02:00
Florian Weimer
6c35c254c2 Add _GLIBCXX_ASSERTIONS to CFLAGS/CXXFLAGS (#1515858) 2018-01-17 10:14:18 +01:00
Nick Clifton
b5ea4b290b Enable binary annotations in compiler flags 2017-11-22 12:41:44 +01:00
Igor Gnatenko
00e8557ba2 Move _debuginfo_subpackages and _debugsource_packages from rpm (RHBZ #1476735)
References: https://bugzilla.redhat.com/show_bug.cgi?id=1476735
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2017-07-31 14:45:08 +02:00
Igor Gnatenko
f6596a4ca5 Define _include_gdx_index (RHBZ #1476722)
References: https://bugzilla.redhat.com/show_bug.cgi?id=1476722
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2017-07-31 14:43:55 +02:00
Adam Williamson
6dc72405b3 Revert #1393492 changes, they break far too many builds
Per fweimer: "Sorry, we need to revert the -Werror=implicit-*
bits.  There is no chance we can get this working in any
reasonable time frame, there is simply too much breakage."
2016-12-06 14:45:53 -08:00