Skip to content

Commit 767e108

Browse files
blucakeszybz
authored andcommitted
Switch to --package-metadata linker option
1 parent 2e972aa commit 767e108

35 files changed

Lines changed: 231 additions & 1211 deletions

.github/super-linter-links/dh/dh_package_notes.pl

Lines changed: 0 additions & 1 deletion
This file was deleted.

.github/workflows/linter.yml

Lines changed: 0 additions & 44 deletions
This file was deleted.

.github/workflows/tests.yml

Lines changed: 0 additions & 29 deletions
This file was deleted.

README.md

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,16 @@ ELF Package Notes Reference Implementation
22

33
## Description
44

5-
This repository provides a script to generate an ELF note that can be
6-
linked into compiled binaries (programs and shared libraries) to provide
7-
metadata about the package for which the binary was compiled.
5+
This repository provides RPM and DEB packaging tools to generate an ELF note
6+
that will be linked into compiled binaries (programs and shared libraries) to
7+
provide metadata about the package for which the binary was compiled.
88

9-
See [Package Metadata for Core Files](https://systemd.io/COREDUMP_PACKAGE_METADATA/)
9+
See [Package Metadata for Core Files](https://systemd.io/ELF_PACKAGE_METADATA/)
1010
for the overview and details.
1111

12-
We provide implementations in Python and POSIX shell, with compatible CLI
13-
interfaces.
12+
The new `--package-metadata` option provided by bfd, gold, mold and lld is used.
1413

1514
## Requirements
16-
17-
### generate-package-notes.py
18-
19-
* python3 (>= 3.5)
20-
* python3-simplejson
21-
* binutils (>= 2.38) [--readonly true]
22-
23-
### generate-package-notes.sh
24-
25-
* POSIX shell
26-
* binutils (>= 2.38) [--readonly true]
15+
* binutils (>= 2.39)
16+
* mold (>= 1.3.0)
17+
* lld (>= 15.0.0)

debian/changelog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
package-notes (0.9) unstable; urgency=medium
2+
3+
* Switch to --package-metadata linker flag via specs file
4+
5+
-- Luca Boccassi <bluca@debian.org> Sun, 27 Nov 2022 16:43:58 +0000
6+
17
package-notes (0.8) unstable; urgency=medium
28

39
* use LONG instead of BYTEs for binary fields

debian/control

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@ Section: admin
33
Priority: optional
44
Rules-Requires-Root: no
55
Maintainer: Luca Boccassi <bluca@debian.org>
6-
Build-Depends: debhelper-compat (= 13), dh-exec,
7-
Standards-Version: 4.6.0
8-
Homepage: https://systemd.io/COREDUMP_PACKAGE_METADATA/
6+
Build-Depends: debhelper-compat (= 13),
7+
Standards-Version: 4.6.1
8+
Homepage: https://systemd.io/ELF_PACKAGE_METADATA/
99
Vcs-Git: https://github.com/systemd/package-notes.git
1010
Vcs-Browser: https://github.com/systemd/package-notes
1111

1212
Package: dh-package-notes
1313
Architecture: all
1414
Multi-Arch: foreign
1515
Enhances: debhelper
16-
Depends: ${misc:Depends}, ${perl:Depends}, debhelper,
17-
Provides: dh-sequence-package-notes
16+
Depends: ${misc:Depends}, debhelper,
1817
Description: Debian Helper for adding package metadata to ELF binaries
19-
Generate a linker script to add package metadata to the ELF binaries being
20-
built. See: https://systemd.io/COREDUMP_PACKAGE_METADATA/
18+
Provides a linker specs file to add package metadata to the ELF binaries being
19+
built. See: https://systemd.io/ELF_PACKAGE_METADATA/

debian/debian-package-notes.specs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*link:
2+
+ --package-metadata={\"type\":\"deb\",\"os\":\"%:getenv(DEB_VENDOR \",\"name\":\"%:getenv(DEB_SOURCE_PACKAGE_NAME \",\"version\":\"%:getenv(DEB_SOURCE_PACKAGE_VERSION \",\"architecture\":\"%:getenv(DEB_HOST_ARCH \",\"debugInfoUrl\":\"%:getenv(DEBUGINFOD_URLS \"})))))

debian/dh-package-notes.install

100755100644
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,2 @@
1-
#!/usr/bin/dh-exec
2-
dh/dh_package_notes usr/bin
3-
generate-package-notes.sh => usr/bin/generate-package-notes
4-
dh/package_notes.pm usr/share/perl5/Debian/Debhelper/Sequence
5-
dh/package-notes.mk usr/share/debhelper/dh_package_notes
1+
debian/package-notes.mk usr/share/debhelper/dh_package_notes/
2+
debian/debian-package-notes.specs usr/share/debhelper/dh_package_notes/

debian/dh-package-notes.manpages

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
11
debian/dh_package_notes.1
2-
man/generate-package-notes.1

debian/dh_package_notes.1

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
2+
.\"
3+
.\" Standard preamble:
4+
.\" ========================================================================
5+
.de Sp \" Vertical space (when we can't use .PP)
6+
.if t .sp .5v
7+
.if n .sp
8+
..
9+
.de Vb \" Begin verbatim text
10+
.ft CW
11+
.nf
12+
.ne \\$1
13+
..
14+
.de Ve \" End verbatim text
15+
.ft R
16+
.fi
17+
..
18+
.\" Set up some character translations and predefined strings. \*(-- will
19+
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20+
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
21+
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22+
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23+
.\" nothing in troff, for use with C<>.
24+
.tr \(*W-
25+
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26+
.ie n \{\
27+
. ds -- \(*W-
28+
. ds PI pi
29+
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30+
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31+
. ds L" ""
32+
. ds R" ""
33+
. ds C` ""
34+
. ds C' ""
35+
'br\}
36+
.el\{\
37+
. ds -- \|\(em\|
38+
. ds PI \(*p
39+
. ds L" ``
40+
. ds R" ''
41+
. ds C`
42+
. ds C'
43+
'br\}
44+
.\"
45+
.\" Escape single quotes in literal strings from groff's Unicode transform.
46+
.ie \n(.g .ds Aq \(aq
47+
.el .ds Aq '
48+
.\"
49+
.\" If the F register is >0, we'll generate index entries on stderr for
50+
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51+
.\" entries marked with X<> in POD. Of course, you'll have to process the
52+
.\" output yourself in some meaningful fashion.
53+
.\"
54+
.\" Avoid warning from groff about undefined register 'F'.
55+
.de IX
56+
..
57+
.nr rF 0
58+
.if \n(.g .if rF .nr rF 1
59+
.if (\n(rF:(\n(.g==0)) \{\
60+
. if \nF \{\
61+
. de IX
62+
. tm Index:\\$1\t\\n%\t"\\$2"
63+
..
64+
. if !\nF==2 \{\
65+
. nr % 0
66+
. nr F 2
67+
. \}
68+
. \}
69+
.\}
70+
.rr rF
71+
.\"
72+
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73+
.\" Fear. Run. Save yourself. No user-serviceable parts.
74+
. \" fudge factors for nroff and troff
75+
.if n \{\
76+
. ds #H 0
77+
. ds #V .8m
78+
. ds #F .3m
79+
. ds #[ \f1
80+
. ds #] \fP
81+
.\}
82+
.if t \{\
83+
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84+
. ds #V .6m
85+
. ds #F 0
86+
. ds #[ \&
87+
. ds #] \&
88+
.\}
89+
. \" simple accents for nroff and troff
90+
.if n \{\
91+
. ds ' \&
92+
. ds ` \&
93+
. ds ^ \&
94+
. ds , \&
95+
. ds ~ ~
96+
. ds /
97+
.\}
98+
.if t \{\
99+
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100+
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101+
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102+
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103+
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104+
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105+
.\}
106+
. \" troff and (daisy-wheel) nroff accents
107+
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108+
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109+
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110+
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111+
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112+
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113+
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114+
.ds ae a\h'-(\w'a'u*4/10)'e
115+
.ds Ae A\h'-(\w'A'u*4/10)'E
116+
. \" corrections for vroff
117+
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118+
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119+
. \" for low resolution devices (crt and lpr)
120+
.if \n(.H>23 .if \n(.V>19 \
121+
\{\
122+
. ds : e
123+
. ds 8 ss
124+
. ds o a
125+
. ds d- d\h'-1'\(ga
126+
. ds D- D\h'-1'\(hy
127+
. ds th \o'bp'
128+
. ds Th \o'LP'
129+
. ds ae ae
130+
. ds Ae AE
131+
.\}
132+
.rm #[ #] #H #V #F C
133+
.\" ========================================================================
134+
.\"
135+
.IX Title "DH_PACKAGE_NOTES 1"
136+
.TH DH_PACKAGE_NOTES 1 "2022-11-27"
137+
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
138+
.\" way too many mistakes in technical documents.
139+
.if n .ad l
140+
.nh
141+
.SH "NAME"
142+
dh_package_notes \- Add package metadata to ELF header
143+
.SH "SYNOPSIS"
144+
.IX Header "SYNOPSIS"
145+
\&\fBdh_package_notes\fR
146+
.SH "DESCRIPTION"
147+
.IX Header "DESCRIPTION"
148+
\&\fBdh_package_notes\fR provides a linker specs file to include package metadata in
149+
\&\s-1ELF\s0 binaries built by packages.
150+
.PP
151+
The package metadata specification for \s-1ELF\s0 binaries can be found at
152+
<https://systemd.io/ELF_PACKAGE_METADATA/>.
153+
.PP
154+
\&\fBdh_package_notes\fR provides a linker specs file at
155+
\&\fB/usr/share/debhelper/dh_package_notes/debian\-package\-notes.specs\fR which can be
156+
used by including \fB/usr/share/debhelper/dh_package_notes/debian\-package\-notes.mk\fR
157+
at the dop of \fBdebian/rules\fR. This will export the right environment variables
158+
that will result in a package note \s-1ELF\s0 section being added to all packaged \s-1ELF\s0
159+
files, with the package type set to \fBdeb\fR, the package name and version set to
160+
the source package name and version respectively, the \s-1OS\s0 set to \fBDebian\fR and
161+
debuginfod \s-1URL\s0 set to \fBhttps://debuginfod.debian.net\fR. On Ubuntu, the \s-1OS\s0
162+
will be set to \fBUbuntu\fR and debuginfod \s-1URL\s0 will be set to
163+
\&\fBhttps://debuginfod.ubuntu.com\fR.
164+
.PP
165+
Note that it is not sufficient to build-depend on this package, the \fBinclude\fR
166+
must be used at the top of \fBdebian/rules\fR for this to be enabled.
167+
.SH "SEE ALSO"
168+
.IX Header "SEE ALSO"
169+
\&\fBdebhelper\fR\|(7)
170+
.SH "AUTHOR"
171+
.IX Header "AUTHOR"
172+
Luca Boccassi <bluca@debian.org>

0 commit comments

Comments
 (0)