rpm-build/scripts/process-lto.in
Arseny Maslennikov 6bfa4a28aa /usr/lib/rpm/functions: split away to rpmb-functions
In an environment created by `hsh --initroot-only`:
  $ for i in /usr/lib/rpm/*; do rpm -qf --qf='%{name}: '"$i"'\n' "$i"; done | grep '^rpm:'
  rpm: /usr/lib/rpm/0ldconfig.filetrigger
  rpm: /usr/lib/rpm/GROUPS
  rpm: /usr/lib/rpm/find-package
  rpm: /usr/lib/rpm/functions
  rpm: /usr/lib/rpm/macros.d
  rpm: /usr/lib/rpm/pdeath_execute
  rpm: /usr/lib/rpm/platform
  rpm: /usr/lib/rpm/posttrans-filetriggers
  rpm: /usr/lib/rpm/postupdate
  rpm: /usr/lib/rpm/rpmd
  rpm: /usr/lib/rpm/rpmdb_loadcvt
  rpm: /usr/lib/rpm/rpme
  rpm: /usr/lib/rpm/rpmi
  rpm: /usr/lib/rpm/rpmk
  rpm: /usr/lib/rpm/rpmpopt-4.13.0.1
  rpm: /usr/lib/rpm/rpmq
  rpm: /usr/lib/rpm/rpmu
  rpm: /usr/lib/rpm/rpmv

The `scripts/functions` file is provided from the rpm project in real
installations. Let's ensure scripts in this package use the functions
file from this package.
2024-03-03 23:38:10 +03:00

42 lines
1.2 KiB
Bash
Executable File

#!/bin/sh -efu
#
# Process single file for LTO business.
# (Will be run multiple instances in parallel.)
#
# Based on brp-strip-lto (Fedora).
# Copyright (c) 2021 Vitaly Chikunov <vt@altlinux.org>.
# License: GPLv2+.
#
# Implementation notes:
# - eu-strip cannot be used due to absence of `-N`.
. @RPMCONFIGDIR@/rpmb-functions
ValidateBuildRoot
cd "$RPM_BUILD_ROOT"
mkdir -p .tmp
# If there is only slim lto, strip will produce "plugin needed to handle lto
# object" warning, because of stripping __gnu_lto_v1 symbol while remaining
# __gnu_lto_slim.
strip -p -R '.gnu.lto_*' -R '.gnu.debuglto_*' -N '__gnu_lto_v1' -- "$@" ||
Fatal 'strip failed'
# Verify that we still have exportable symbols.
for f; do
# Output in one line per symbol format.
nm -g -A -P "$f" > .tmp/lto-nm.$$ 2>/dev/null
if grep -F -q -w ': __gnu_lto_slim' .tmp/lto-nm.$$; then
echo >> .tmp/lto-suggest
if grep -F -q -v -w ': __gnu_lto_slim' .tmp/lto-nm.$$; then
Fatal "$f: contains __gnu_lto_slim."
else
Fatal "$f: contains __gnu_lto_slim only."
fi
elif [ ! -s .tmp/lto-nm.$$ ]; then
# This is only informational call of file.
Warning "$f: contains no exportable symbols: $(file4 -b "$f")"
fi
rm .tmp/lto-nm.$$
done