Commit Graph

11 Commits

Author SHA1 Message Date
Luca Boccassi
9da9df8af2 Switch to --package-metadata
Use a compiler specs file to avoid issues with escaping and quoting
when a package is built using autotools.
Generate the osCpe string at build time for now, as it's not set
as an env var by rpm yet.
2022-08-09 10:59:13 +01:00
Zbigniew Jędrzejewski-Szmek
d26d18e6f4 Disable notes when clang toolchain is used on arm
Per https://bugzilla.redhat.com/show_bug.cgi?id=2043178#c27.
2022-01-25 18:19:07 +01:00
Zbigniew Jędrzejewski-Szmek
2ee6aa07f8 Disable notes with linkers other than bfd
%_package_note_linker != "bfd" disables note insertion, so that it also works
as another opt-out mechanism. Maybe we can improve support in the future.

From https://bugzilla.redhat.com/show_bug.cgi?id=2043178#c26:

  It turns out that gold does something wrong with sections.
  When we add the new section, it shifts existing sections (and even gets one section less than before):
  │ -  Entry point address:               0x500
  │ +  Entry point address:               0x50
  │    Start of program headers:          64 (bytes into file)
  │ -  Start of section headers:          6328 (bytes into file)
  │ +  Start of section headers:          8344 (bytes into file)
  │    Flags:                             0x0
  │    Size of this header:               64 (bytes)
  │    Size of program headers:           56 (bytes)
  │ -  Number of program headers:         9
  │ +  Number of program headers:         8
  │    Size of section headers:           64 (bytes)
  │ -  Number of section headers:         36
  │ -  Section header string table index: 35
  │ +  Number of section headers:         38
  │ +  Section header string table index: 37

  There's a bug open to add INSERT AFTER [https://sourceware.org/bugzilla/show_bug.cgi?id=15373],
  but it's 8 years old.

  Opting out seems to be the best we can do for now.

I also noticed that gold support -dT, only lld doesn't, so the conditional is
adjusted accordingly.
2022-01-24 13:10:04 +01:00
Zbigniew Jędrzejewski-Szmek
e9d5c37bb3 Add %_package_note_linker and document everything (rhbz#2043178, rhbz#2043368) 2022-01-22 12:02:34 +01:00
Zbigniew Jędrzejewski-Szmek
87708e909b Allow unsetting %_package_note_readonly to drop the READONLY attribute
READONLY is supported in ld.bfd from binutils >= 2.38, though the
patch was backported in rawhide. It is also unsupported by ld.gold,
so let's make it easy to skip it, since things will also work without
it, just a tiny bit worse.
2022-01-22 11:20:25 +01:00
Zbigniew Jędrzejewski-Szmek
b7381d643d Use %{buildsubdir} in %_package_note_file if defined
Thanks to this the file is (in the common case) created in the unpacked
build directory, and not one level up. I.e.
/builddir/build/BUILD/lirc-0.10.0/.package_note-lirc-0.10.0-34.fc36.x86_64
instead of /builddir/build/BUILD/.package_note-lirc-0.10.0-34.fc36.x86_64.ld.
This is nicer esp. for 'fedpkg local' builds, where the dist-git directory is
used as the build dir.

When there are multiple %setup calls, the *last* extracted directory
becomes %{buildsubdir}. This might be confusing, but it shouldn't cause
problems for this use.

Suggested in https://bugzilla.redhat.com/show_bug.cgi?id=2043092#c21.
2022-01-21 17:01:16 +01:00
Zbigniew Jędrzejewski-Szmek
d32fe6caa2 Also voidify the macros if we're on a noarch build
IIUC, the normal %ifarch syntax cannot be used, because the definition
needs to be inline. The best I could find is %_target_cpu, which seems to be
set to "noarch" for noarch builds.
2022-01-21 17:01:16 +01:00
Zbigniew Jędrzejewski-Szmek
04c3c7d716 Use $RPM_PACKAGE_VERSION variable to refer to the package version
When subpackages are used, and have different Version fields, we end up with
the version of the last subpackage in %version. But RPM_PACKAGE_VERSION is
set early, and seems to have the right version.

Fixes rhbz#2043143.
2022-01-21 17:01:16 +01:00
Zbigniew Jędrzejewski-Szmek
1acac701a6 Make _generate_package_note_file always recreate the file
The idea was that we can avoid unnecessary work if the macro is called more than
once. But in hindsight this might be risky: let's instead minimize the number of
places where the macros is called, but always overwrite the file so that we
don't end up with a stale version from a previous build.
2022-01-21 17:01:16 +01:00
Zbigniew Jędrzejewski-Szmek
fb5900700e Conditionalize all macros on %_package_note_file being defined
This way %undefine _package_note_file is a good way to opt-out of the
feature. The other macros wouldn't work without %_package_note_file anyway.
2022-01-21 17:01:16 +01:00
Zbigniew Jędrzejewski-Szmek
070ec6f27f Rename srpm macros file 2022-01-14 19:17:33 +01:00