-
-
Notifications
You must be signed in to change notification settings - Fork 35
/
rpmbuildinfo
executable file
·111 lines (98 loc) · 3.61 KB
/
rpmbuildinfo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/sh
# Copyright (c) 2016 Bernhard M. Wiedemann <bernhard@zq1.de>
# Copyright (c) 2016 Dennis Gilmore <dennis@ausil.us>
# Copyright (c) 2016 Simon "HW42" Geiser <hw42@ipsumj.de>
# Copyright (c) 2016 Wojciech Porczyk <woju@invisiblethingslab.com>
#
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for any purpose
# with or without fee is hereby granted, provided that the above copyright
# notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
# NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
# DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
# OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder shall not
# be used in advertising or otherwise to promote the sale, use or other dealings
# in this Software without prior written authorization of the copyright holder.
#
set -e
getos()
{
# shellcheck disable=SC1091
test -r /etc/os-release && . /etc/os-release
if test -n "$BUILD_ORIGIN"
then
ID="$BUILD_ORIGIN"
fi
if test -z "$ID"; then
ID=$(cat /etc/system-release)
fi
printf %s "$ID"
}
if test $# -lt 1
then
echo usage: "$0" SRPM >&2
exit 2
fi
if [ "${1%.src.rpm}" = "$1" ]; then
SRPMDIR=$(rpm --eval '%{_srcrpmdir}')
SRPM="$SRPMDIR/$(rpm -qp --queryformat '%{SOURCERPM}' "$1")"
RPMS="$*"
else
SRPM="$1"
RPMS=$(find "$(rpm --eval '%{_rpmdir}')" -name '*.rpm')
fi
if ! [ -e "$SRPM" ]; then
echo "$SRPM does not exist" >&2
exit 1
fi
# Build-Date: not from rpm because that will be $SOURCE_DATE_EPOCH
# Binary: /usr/src/packages/RPMS/*/*.rpm or equivalent
cat <<EOF
Format: 0.2-rpm
Build-Architecture: $(uname -m)
Source: $(rpm -qp --queryformat '%{name}' "$SRPM")
Version: $(rpm -qp --queryformat '%{version}-%{release}' "$SRPM")
Architecture: $(rpm -qp --queryformat '%{arch}' "$SRPM")
Binary: $(printf '%s' "$RPMS" | xargs rpm -qp --qf "%{name} ")
Build-Origin: $(getos)
Build-Date: $(date -R)
Build-Path: $(rpm --eval '%{_builddir}')
EOF
printf 'Installed-Build-Depends:\n'
rpm -qa --queryformat '%{epoch}:%{name}-%{version}-%{release}.%{arch}\n' \
| LC_ALL=C sort -t: -k2 \
| sed -e 's/^(none)://; /\.(none)$/d; s/^/ /'
printf 'Environment:\n'
# whitelist stolen from Debian's dpkg:
# https://anonscm.debian.org/git/dpkg/dpkg.git/tree/scripts/Dpkg/Build/Info.pm#n50
ENV_WHITELIST=
# Toolchain.
ENV_WHITELIST="$ENV_WHITELIST CC CPP CXX OBJC OBJCXX PC FC M2C AS LD AR RANLIB MAKE AWK LEX YACC"
# Toolchain flags.
ENV_WHITELIST="$ENV_WHITELIST CFLAGS CPPFLAGS CXXFLAGS OBJCFLAGS OBJCXXFLAGS GCJFLAGS FFLAGS LDFLAGS ARFLAGS MAKEFLAGS"
# Dynamic linker, see ld(1).
ENV_WHITELIST="$ENV_WHITELIST LD_LIBRARY_PATH"
# Locale, see locale(1).
ENV_WHITELIST="$ENV_WHITELIST LANG LC_ALL LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION"
ENV_WHITELIST="$ENV_WHITELIST SOURCE_DATE_EPOCH"
for var in $ENV_WHITELIST
do
eval value="\$$var"
# shellcheck disable=SC2154
test -n "$value" && printf ' %s="%s"\n' "$var" "$value"
done
printf 'Checksums-Sha256:\n'
for rpm in $SRPM $RPMS
do
checksum=$(sha256sum -b "$rpm" | cut -c 1-64)
size=$(stat -c '%s' "$rpm")
printf ' %s %s %s\n' "$checksum" "$size" "$(basename "$rpm")"
done