https://fedoraproject.org/wiki/Changes/Package_information_on_ELF_objects
== Summary ==
All binaries (executables and shared libraries) are annotated with an ELF
note that identifies the rpm distributing this file.
== Owner ==
* Name: [[User:Zbyszek|Zbigniew Jędrzejewski-Szmek]]
* Email: zbyszek(a)in.waw.pl
* Name: Lennart Poettering
* Email: mzsrqben(a)0pointer.net
== Detailed Description ==
See [https://github.com/systemd/systemd/issues/18433 systemd issue #18433]
for discussion and implementation proposals.
Programs crash. And when they do, they dump core, and we want to tell the
user which package, including the version, caused the failure. ELF note
`.note.package` will be added to specify package nevra. By embedding the
this information directly in the binary object, package nevra is
immediately available from a core dump.
=== Existing system: `.note.gnu.build-id` ===
We already have build-ids: every ELF object has a `.note.gnu.build-id`
note, and given a core file, we can read the build-id and look it up in the
rpm database (`dnf repoquery --whatprovides debuginfo(build-id) = …`) to
map it to a package name.
Build-ids are unique and compact and very generic and work as expected in
general. But they have some downsides:
* build-ids are not very informative for users. Before the build-id is
converted back to the appropriate package, it's completely opaque.
* build-ids require a working rpm database or an internet connection to map
to the package name.
Three important cases:
* minimal containers: the rpm database is not installed in the containers.
The information about build-ids needs to be stored externally, so package
name information is not available immediately, but only after offline
processing. The new note doesn't depend on the rpm db in any way.
* handling of a core from a container, where the container and host have
different distros
* self-built and external packages: unless a lot of care is taken to keep
access to the debuginfo packages, this information may be lost. The new
note is available even if the repository metadata gets lost. Users can
easily provide equivalent information in a format that makes sense in their
own environment. It should work even when rpms and debs and other formats
are mixed, e.g. during container image creation.
=== New system: `.note.package` ===
The new note is created and propagated similarly to `.note.gnu.build-id`.
The difference is that we inject the information about package nevra from
the build system.
The implementation is very simple: `%{build_ldflags}` are extended with a
command to insert a custom note as a separate section in an ELF object. See
[https://github.com/systemd/package-notes/blob/main/hello.spec hello.spec]
for an example. This is done in the default macros, so all packages that
use the prescribed link flags will be affected.
The note is a compat json string. This allows the format to be trivially
extensible (new fields can be added at will), easy to process (json is
extremely popular and parsers are widely available). Using a single field
is more space-efficient. With multiple fields the padding and alignment
requirements cause unnecessary overhead.
The system was designed with cross-distro collaboration and is flexible
enough to identify binaries from different packaging formats and build
systems (rpms, debs, custom binaries).
The overhead is about 200 bytes for each ELF object.
If we do this only for executables, then for the whole distro, 5000 × 200 =
1 MB.
If we do it for shared libraries, then the cost will be maybe 4 times
higher.
Precise measurements TBD once we know the final implementation and figure
out the right repoquery magic.
=== Examples ===
<pre>
$ objdump -s -j .note.package build/libhello.so
build/libhello.so: file format elf64-x86-64
Contents of section .note.package:
02ec 04000000 63000000 7e1afeca 46444f00 ....c...~...FDO.
02fc 7b227479 7065223a 2272706d 222c226e {"type":"rpm","n
030c 616d6522 3a226865 6c6c6f22 2c227665 ame":"hello","ve
031c 7273696f 6e223a22 302d312e 66633335 rsion":"0-1.fc35
032c 2e783836 5f363422 2c226f73 43706522 .x86_64","osCpe"
033c 3a226370 653a2f6f 3a666564 6f726170 :"cpe:/o:fedorap
034c 726f6a65 63743a66 65646f72 613a3333 roject:fedora:33
035c 227d0000 "}..
</pre>
<pre>
$ readelf --notes build/hello | grep "description data" | sed -e
"s/\s*description data: //g" -e "s/ //g" | xxd -p -r | jq
readelf: build/hello: Warning: Gap in build notes detected from 0x1091 to
0x10de
readelf: build/hello: Warning: Gap in build notes detected from 0x1091 to
0x10af
readelf: build/hello: Warning: Gap in build notes detected from 0x1091 to
0x119f
{
"type": "rpm",
"name": "hello",
"version": "0-1.fc35.x86_64",
"osCpe": "cpe:/o:fedoraproject:fedora:33"
}
</pre>
<pre>
$ coredumpctl info
PID: 44522 (fsverity)
...
Package: fsverity-utils/1.3-1
build-id: ac89bf7175b04d7eec7f6544a923f45be111f0be
Message: Process 44522 (fsverity) of user 1000 dumped core.
Found module
/home/bluca/git/fsverity-utils/libfsverity.so.0 with build-id:
fa40fdfb79aea84167c98ca8a89add9ac4f51069
Metadata for module
/home/bluca/git/fsverity-utils/libfsverity.so.0 owned by FDO found: {
"packageType" : "deb",
"package" : "fsverity-utils",
"packageVersion" : "1.3-1"
}
Found module linux-vdso.so.1 with build-id:
aba08e06103f725e26f1d7c178fb6b76a564a35d
Found module libpthread.so.0 with build-id:
e91114987a0147bd050addbd591eb8994b29f4b3
Found module libdl.so.2 with build-id:
d3583c742dd47aaa860c5ae0c0c5bdbcd2d54f61
Found module ld-linux-x86-64.so.2 with build-id:
f25dfd7b95be4ba386fd71080accae8c0732b711
Found module libcrypto.so.1.1 with build-id:
749142d5ee728a76e7cdc61fd79d2311a77405a2
Found module libc.so.6 with build-id:
18b9a9a8c523e5cfe5b5d946d605d09242f09798
Found module fsverity with build-id:
ac89bf7175b04d7eec7f6544a923f45be111f0be
Metadata for module fsverity owned by FDO found: {
"packageType" : "deb",
"package" : "fsverity-utils",
"packageVersion" : "1.3-1"
}
Stack trace of thread 44522:
#0 0x00007fe7c8af26f4 __GI___nanosleep (libc.so.6 +
0xc66f4)
#1 0x00007fe7c8af262a __sleep (libc.so.6 + 0xc662a)
#2 0x00005608481407dd main (fsverity + 0x27dd)
#3 0x00007fe7c8a5009b __libc_start_main (libc.so.6 +
0x2409b)
#4 0x000056084814094a _start (fsverity + 0x294a)
</pre>
== Benefit to Fedora ==
A simple and reliable way to gather information about package versions of
crashing programs is added. It enhances, instead of replacing, any existing
mechanisms. It gives us a nicer story for debugging programs in containers.
== Scope ==
* Proposal owners:
** create a specification (Initial version DONE: [
https://systemd.io/COREDUMP_PACKAGE_METADATA COREDUMP_PACKAGE_METADATA])
** write a script to generate the package note (Initial version DONE: [
https://github.com/systemd/package-notes/blob/main/generate-package-notes.py
generate-package-notes.py])
** provide a patch for `redhat-rpm-config` to insert appropriate
compilation options
** extend systemd's coredumpctl to extract and display this information
(DONE: [https://github.com/systemd/systemd/pull/19135 PR #19135])
** submit pull request to Packaging Guidelines
* Other developers:
** possibly add support in abrt?
* Release engineering: There should be no impact.
* Policies and guidelines:
The new flags should be mentioned in Packaging Guidelines.
* Trademark approval: N/A (not needed for this Change)
N/A
* Alignment with Objectives:
It might be relevant for Minimization. Even though it increases the image
size a tiny bit, it makes minimized images work a bit better.
== Upgrade/compatibility impact ==
No impact.
== How To Test ==
<pre>
$ bash -c 'kill -SEGV $$'
$ coredumpctl
TIME PID UID GID SIG COREFILE EXE
SIZE PACKAGE
Mon 2021-03-01 14:37:22 CET 855151 1000 1000 SIGSEGV present
/usr/bin/bash 51.7K bash-5.1.0-2.fc34.x86_64
</pre>
== User Experience ==
`coredumpctl` should display information about package versions.
== Dependencies ==
None.
== Contingency Plan ==
* Contingency mechanism: Remove the new compilation flags. Rebuild any
packages that were build with the new flags.
* Contingency deadline: Beta freeze.
* Blocks release? No.
== Documentation ==
* https://systemd.io/COREDUMP_PACKAGE_METADATA/
* https://github.com/systemd/package-notes
See also [[Changes/DebuginfodByDefault]].
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
The following packages are orphaned and will be retired when they
are orphaned for six weeks, unless someone adopts them. If you know for sure
that the package should be retired, please do so now with a proper reason:
https://fedoraproject.org/wiki/How_to_remove_a_package_at_end_of_life
Note: If you received this mail directly you (co)maintain one of the affected
packages or a package that depends on one. Please adopt the affected package or
retire your depending package to avoid broken dependencies, otherwise your
package will fail to install and/or build when the affected package gets retired.
Request package ownership via the *Take* button in he left column on
https://src.fedoraproject.org/rpms/<pkgname>
Full report available at:
https://churchyard.fedorapeople.org/orphans-2021-04-12.txt
grep it for your FAS username and follow the dependency chain.
For human readable dependency chains,
see https://packager-dashboard.fedoraproject.org/
For all orphaned packages,
see https://packager-dashboard.fedoraproject.org/orphan
Package (co)maintainers Status Change
================================================================================
Add64 orphan 0 weeks ago
CuraEngine-lulzbot orphan 6 weeks ago
ccls orphan 4 weeks ago
connman orphan 3 weeks ago
ctk neuro-sig, orphan 1 weeks ago
cura-lulzbot orphan, spot 6 weeks ago
dssi orphan 0 weeks ago
dssi-vst orphan 0 weeks ago
fbreader orphan 0 weeks ago
fedora-jam-backgrounds orphan 0 weeks ago
fedora-jam-kde-theme jvlomax, orphan 0 weeks ago
fluidsynth-dssi orphan 0 weeks ago
freqtweak orphan 0 weeks ago
gnome-desktop alexl, caolanm, fmuellner, gnome-sig, 0 weeks ago
orphan, rhughes
gnome-guitar orphan 0 weeks ago
grc orphan 4 weeks ago
gsignond orphan 4 weeks ago
gsignond-plugin-lastfm orphan 4 weeks ago
gsignond-plugin-mail orphan 4 weeks ago
gsignond-plugin-oauth orphan 4 weeks ago
gsignond-plugin-sasl orphan 4 weeks ago
gtk-nodoka-engine orphan 0 weeks ago
harmonyseq orphan 0 weeks ago
hexter-dssi orphan 0 weeks ago
jackctlmmc orphan 0 weeks ago
jakarta-messaging orphan 5 weeks ago
jboss-el-3.0-api orphan 5 weeks ago
jboss-jsp-2.3-api orphan 4 weeks ago
jboss-jstl-1.2-api orphan 4 weeks ago
jboss-servlet-3.1-api orphan 5 weeks ago
jmeters orphan, tartina 0 weeks ago
kpassgen orphan 1 weeks ago
lemonpos orphan 1 weeks ago
libaccounts-glib orphan 4 weeks ago
libarcus-lulzbot orphan 6 weeks ago
libinstpatch orphan 0 weeks ago
libunibreak orphan 0 weeks ago
lulzbot-marlin-firmware orphan, spot 6 weeks ago
lv2-c++-tools orphan, tartina 0 weeks ago
lv2-fabla orphan, tartina 0 weeks ago
lv2-ll-plugins orphan, tartina 0 weeks ago
lv2-mdaEPiano orphan, tartina 0 weeks ago
lv2-newtonator orphan, tartina 0 weeks ago
lv2-sorcer orphan, tartina 0 weeks ago
lv2-swh-plugins orphan, tartina 0 weeks ago
lv2-vocoder-plugins orphan, tartina 0 weeks ago
mailman orphan 1 weeks ago
maven-verifier mizdebsk, orphan 5 weeks ago
meterbridge orphan, tartina 0 weeks ago
nightview orphan 1 weeks ago
non-daw orphan 0 weeks ago
openigtlink neuro-sig, orphan 1 weeks ago
pgRouting orphan, pkubat 0 weeks ago
phpwapmail orphan 6 weeks ago
portmidi mjg, orphan, xavierb 0 weeks ago
powermock jerboaa, lef, neugens, orphan 5 weeks ago
python-cocotb orphan 2 weeks ago
python-pytest4 churchyard, mrunge, orphan, python- 5 weeks ago
sig, radez, thm
python-uranium-lulzbot orphan 6 weeks ago
python3-simplepam leonn, orion, orphan 4 weeks ago
pyxtrlock leonn, orphan 4 weeks ago
quick-usb-formatter orphan 1 weeks ago
racoon2 orphan 3 weeks ago
radium-compressor orphan 0 weeks ago
rdkit orphan 0 weeks ago
realTimeConfigQuickScan orphan 0 weeks ago
rnv orphan 3 weeks ago
rubygem-net-ssh-gateway orphan, tdawson 4 weeks ago
rubygem-recaptcha orphan 4 weeks ago
saxpath akurtakov, mizdebsk, orphan 5 weeks ago
signon-glib dvratil, kde-sig, orphan 4 weeks ago
wf-config orphan 0 weeks ago
whysynth-dssi orphan 0 weeks ago
wsl orphan 0 weeks ago
xsynth-dssi orphan 0 weeks ago
zhu3d orphan 1 weeks ago
The following packages require above mentioned packages:
Report too long, see the full version at
https://churchyard.fedorapeople.org/orphans-2021-04-12.txt
See dependency chains of your packages at
https://packager-dashboard.fedoraproject.org/
See all orphaned packages at https://packager-dashboard.fedoraproject.org/orphan
Affected (co)maintainers (either directly or via packages' dependencies):
akurtakov: saxpath
alexl: gnome-desktop
andymenderunix: libunibreak
atim: wf-config, dssi
belegdol: portmidi
bsjones: dssi
callkalpa: portmidi
caolanm: gnome-desktop
chimosky: portmidi
chkr: portmidi
churchyard: python-pytest4
cicku: portmidi
dtimms: portmidi
dvratil: libaccounts-glib, signon-glib
filiperosset: saxpath
fmuellner: gnome-desktop
gbcox: libaccounts-glib
gnome-sig: gnome-desktop
heliocastro: libaccounts-glib
imcinerney: portmidi
jerboaa: powermock
jgrulich: libaccounts-glib, signon-glib
jjames: portmidi
jkraehemann: dssi, libinstpatch
jreznik: libaccounts-glib, signon-glib
jskarvad: portmidi
jvlomax: fedora-jam-backgrounds, dssi, fedora-jam-kde-theme
kde-sig: libaccounts-glib, signon-glib
kkofler: libaccounts-glib
lbalhar: portmidi
lef: powermock
leonn: pyxtrlock, python3-simplepam
limb: portmidi, dssi
martinkg: connman, meterbridge
mbarnes: portmidi
mck182: libaccounts-glib, signon-glib
mizdebsk: maven-verifier, saxpath
mjg: portmidi
mkyral: libaccounts-glib
mrunge: python-pytest4
musuruan: portmidi
nando: dssi, libinstpatch
neugens: powermock
neuro-sig: openigtlink, ctk
nonamedotc: dssi, libinstpatch
nucleo: libaccounts-glib
oget: dssi, libinstpatch
orion: python3-simplepam
pbrobinson: portmidi, dssi
pkubat: pgRouting
praiskup: rnv
python-sig: python-pytest4
radez: python-pytest4
rdieter: libaccounts-glib, signon-glib
rhughes: gnome-desktop
rrankin: portmidi
sdz: portmidi, dssi
sergiomb: portmidi
shlomif: portmidi
slankes: libaccounts-glib
spot: libarcus-lulzbot, python-uranium-lulzbot, lulzbot-marlin-firmware,
CuraEngine-lulzbot, cura-lulzbot
suve: connman, portmidi
tartina: jmeters, lv2-mdaEPiano, lv2-sorcer, lv2-swh-plugins, lv2-ll-plugins,
lv2-vocoder-plugins, dssi, meterbridge, lv2-c++-tools, lv2-fabla, lv2-newtonator
tdawson: rubygem-net-ssh-gateway
tejas: libaccounts-glib
terrycloth: portmidi
than: libaccounts-glib
thm: python-pytest4, dssi
thomasfedb: portmidi
tuxbrewr: portmidi
vascom: libaccounts-glib, dssi
verdurin: meterbridge
wolnei: libaccounts-glib
xavierb: portmidi
zbyszek: portmidi
--
The script creating this output is run and developed by Fedora
Release Engineering. Please report issues at its pagure instance:
https://pagure.io/releng/
The sources of this script can be found at:
https://pagure.io/releng/blob/main/f/scripts/find_unblocked_orphans.py
https://fedoraproject.org/wiki/Change/CyrusSaslBerkeleyDBtoGdbm
== Summary ==
cyrus-sasl package was built with libdb requirement, now it is replaced by gdbm.
== Owner ==
* Name: [[User:Dbelyavs| Dmitry Belyavskiy]]
* Email: dbelyavs(a)redhat.com
== Detailed Description ==
This change switches the default backend Key-Value DB used by sasldb
plugin from BerkeleyDB to GDBM and provides a migration tool for
automatic conversion from old to new format.
== Benefit to Fedora ==
According to more restrictive libdb licence policy exists effort to
remove libdb's dependencies.
cyrus-sasl package can now be built without libdb requirement.
== Scope ==
* Proposal owners:
* Other developers: The owners of the packages depending on cyrus-sasl
sasldb plugin should provide the documentation about the migration
procedure.
* Release engineering: [https://pagure.io/releng/issue/10084]
* Policies and guidelines: not needed for this Change
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives:
== Upgrade/compatibility impact ==
The migration script should be used to upgrade the particular
databases used by specific applications via sasldb plugin
== How To Test ==
* Install the new version of the cyrus-sasl.
* Use the migration tool bdb2current provided by the package to
migrate your sasldb file
* update the configuration file to point on the new sasldb file
* restart the application if necessary
* Check that auth is still working
== User Experience ==
not provided
== Dependencies ==
A lot of application use cyrus-sasl sasldb plugins. Their maintainers
were notified via email and some of them have responded.
== Contingency Plan ==
* Contingency mechanism: Revert the shipped configuration
* Contingency deadline: Beta freeze
* Blocks release? Yes
== Documentation ==
Here is the notification sent to known developers of the depending packages:
New version of the cyrus-sasl is planned to use the gdbm database for
the sasldb plugins.
I've implemented the patch
(https://src.fedoraproject.org/rpms/cyrus-sasl/pull-request/3#request_diff)
changing the default DB and implementing the migration tool to make
the switching from BerkeleyDB to GDBM seamless.
I kindly ask you to check the information in the following spreadsheet:
https://docs.google.com/spreadsheets/d/1z5eTSm3rtlKtEKPCxhI_wE861Xzg8kbvINW…:
whether your package is affected by the proposed change
whether the migration tool is suitable for your purposes
and let me know or mark the results in the table
== Release Notes ==
a new version of the cyrus-sasl package is landing in rawhide.
This version changes the database used to store saslauthdb data. This
is part of the move to deprecate use of Berkley DB. The new package
will use GDBM instead.
We provided a tool to perform migrations for database should that be
needed by a package:
The syntax of the migration tool is
bdb2current <sasldb path> <new_path>
Please check whether your packages use the sasldb plugin and provide a
relevant migration guideline.
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
https://fedoraproject.org/wiki/Changes/DebuginfodByDefault
== Summary ==
Fedora users / developers who need to debug/trace distro binaries can
make use of the recently activated elfutils-debuginfod servers to
automatically fetch debugging data and source code, instead of having
to use `# sudo dnf` commands.
== Owner ==
* Name: [[User:fche| Frank Ch. Eigler]]
* Email: fche(a)redhat.com
== Detailed Description ==
Numerous fedora debugging-type tools have built-in capabilities to use
the [https://sourceware.org/elfutils/Debuginfod.html debuginfod]
protocol to fetch debuginfo/source code automatically. We would like
to activate a setting so that Fedora's debuginfod servers are
automatically used, rather than requiring hand-editing individual
users' dot files.
== Feedback ==
There has existed
[https://www.spinics.net/lists/fedora-devel/msg279002.html broad
interest] in a Fedora debuginfod server since the project was proposed
/ announced in 2020, and several distros already operate public
servers of this nature. Some of the distros configure their
installations by default to talk to those servers, some do not.
Turning on this by default has some limited privacy implications.
Some Debian users have
[https://lists.debian.org/debian-devel/2021/02/msg00262.html expressed
concerns] that this facility "calls home" during debugging, so it may
expose a limited amount of information about what a user is debugging.
The information is limited to the build-id and source code file names
of programs being debugged, and is only sent to the servers if their
machine lacks locally installed debuginfo. Whether this should be
opt-in or opt-out and how has been resolved there via an install-time
query to the sysadmin. In contrast, on OpenSUSE Tumbleweed, it is
[https://build.opensuse.org/request/show/879926 simply defaulted-on],
and we have heard of no controversy.
We anticipate discussing this topic on the mailing list, and noting it
in the release notes either way.
== Benefit to Fedora ==
This will improve developers' experience.
It may reduce download server burden, as only individual
ELF/DWARF/source files are downloaded rather than entire `-debuginfo`
and `-debugsource` RPMs.
It would help Fedora catch up to other distros who put up `debuginfod`
servers already. :-)
== Scope ==
* Proposal owners:
The work could consist one extra parameter in the `elfutils.spec`
`%configure`. Its effect is to arrange for the
`elfutils-debuginfod-client` RPM
to install an `/etc/profile.d` file that sets the `DEBUGINFOD_URLS`
environment variable automatically to
`https://debuginfod.fedoraproject.org/`. (At the time of this
writing, the _staging_ server is getting ready for testing:
`https://debuginfod.stg.fedoraproject.org/`.)
* Other developers: None - relevant code has been previously upstreamed!
* Release engineering: None - our team is operating the
`debuginfod[.stg].fedoraproject.org` VMs.
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives: N/A
== Upgrade/compatibility impact ==
None.
Note that these servers index all active Fedora releases (32-), all
architectures, so users of those versions can already set
`DEBUGINFOD_URLS` manually to take advantage.
== How To Test ==
* Install `elfutils-debuginfod-client`
* Open arbitrary fedora binary via gdb.
** Admire the immediate downloading of debuginfo and source code.
* Run `eu-stack -v -p $pid` for an arbitrary process.
** Admire the immediate downloading of debuginfo to give precise file:line data.
== User Experience ==
Primarily: users running debuggers, profilers, tracing tools on
internet-capable machines can work immediately, without switching to
privileged users and fragile manual `dnf` commands to install this
data.
== Dependencies ==
The `debuginfod` servers at `fedora-infra` need to be up.
== Contingency Plan ==
* Contingency mechanism: change the elfutils-debuginfod-client subrpm
to not set the default `DEBUGINFOD_URLS` environment variable for all
users. In the case of a server outage, the debugger tools revert to
debuginfo-less operation, prior to this feature.
* Contingency deadline: shortly before freeze
* Blocks release? No
== Documentation ==
There is upstream documentation in the debugging tools as well as
associated with the client code / cli tooling. What our Release Notes
would focus on however is the _automatic activation_ of this facility
via the environment variable.
== Release Notes ==
TBD.
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
Hi everyone,
It's that time! The Fedora Linux 34 Final Go/No-Go[1] meeting is
scheduled for Thursday 15 April at 1700 UTC in #fedora-meeting-1. At
this time, we will determine the status of F34 for the 20 April
preferred target date. For more information about the Go/No-Go
meeting, see the wiki[2].
[1] https://calendar.fedoraproject.org/meeting/9957/
[2] https://fedoraproject.org/wiki/Go_No_Go_Meeting
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
https://fedoraproject.org/wiki/Changes/Erlang_24
== Summary ==
Update Erlang/OTP to version 24.
== Owner ==
* Name: [[User:Peter|Peter Lemenkov]], [[SIGs/Erlang|Fedora Erlang
SIG]], [[User:bowlofeggs|Randy Barlow]], [[User:jcline|Jeremy Cline]]
* Email: lemenkov(a)gmail.com, erlang(a)lists.fedoraproject.org,
bowlofeggs(a)fedoraproject.org, jcline(a)fedoraproject.org
== Detailed Description ==
Upgrade Erlang to version 24 which brings a lot of changes. Just a few
highlights:
* [https://blog.erlang.org/the-road-to-the-jit/ New just-in-time compiler].
* Rewritten wx GUI module.
* HiPE module was removed.
Aside from this, we plan to improve quality of Erlang and related
packages. These are shortcomings we want to address:
* Every daemon written in Erlang has its own logging solution which
doesn't use neither syslog nor Journald. We should start switching
them to unified logger..
* We should allow D-Bus API via [https://github.com/lizenn/erlang-dbus
erlang-dbus] library or any other recent implementations..
* Further improve [[User:Peter/Erlang_Packaging_Guidelines|Erlang
Packaging Guidelines]] and promote it as the official guideline.
* Switch to rebar3 as a main build tool.
* SELinux rules for main Erlang applications (Ejabberd, CouchDB,
RabbitMQ) are outdated or missing.
== Benefit to Fedora ==
Fedora users, both developers and end-users, will have visible
benefits from using Fedora-provided packages. Namely:
* Improved scalability and robustness.
== Scope ==
* Proposal owners:
** [https://bugzilla.redhat.com/show_bug.cgi?id=1932656 Upgrade Erlang
to the latest version (24.0)].
** Every Erlang daemon's systemd unit must require epmd.socket.
** We need to fill new review request for
[https://github.com/lizenn/erlang-dbus erlang-dbus]
** Upgrade outdated packages:
*** {{package|riak|Riak}}
**** {{package|riak|Riak}} has has been retired. We have to re-add it back.
*** {{package|ejabberd|Ejabberd}}
*** {{package|rabbitmq-server|RabbitMQ}}.
*** {{package|couchdb|CouchDB}}
** {{package|erlang-rebar3|rebar3}}
*** Provide/adjust RPM macros for rebar3.
** Package GDB macros for easier coredump debugging (see also
[https://bugzilla.redhat.com/show_bug.cgi?id=663253 this ticket]).
* Other developers: N/A
* Release engineering: TBA
* Policies and guidelines:
** We should promote officially
[[User:Peter/Erlang_Packaging_Guidelines|Erlang Packaging
Guidelines]].
* Trademark approval: N/A (not needed for this Change)
== Upgrade/compatibility impact ==
* [http://erlang.org/doc/man/HiPE_app.html HiPE] was removed completely.
== How To Test ==
* Ensure that high-grade Erlang applications are still working:
{| border="1"
|-
| '''Name''' || '''Tested'''
|-
| {{package|couchdb}} || {{no}}
|-
| {{package|ejabberd}} || {{no}}
|-
| {{package|elixir}} || {{no}}
|-
| {{package|rabbitmq-server}} || {{no}}
|-
| {{package|riak}} || {{no}} (package was retired :( )
|-
| {{package|wings}} || {{no}}
|}
* Collect feedback from volunteers regarding their experience with
this Erlang/OTP version
== User Experience ==
Users will get more robust, scalable, and fast Erlang applications.
== Dependencies ==
The following packages must be rebuilt: N/A. This time there is no
API/ABi change in NIF or Driver API.
== Contingency Plan ==
* Contingency mechanism: None necessary. Instead of falling back to
the previous version we should fix existing packages in order to help
the Community. We should also monitor upstream development process for
potentially discovered issues and proactively apply patches (as we
already did with [[Features/Erlang_R14|Erlang R14]],
[[Features/Erlang_R15|Erlang R15]], [[Features/Erlang_R16|Erlang
R16]], [[Changes/BetterErlangSupport|Erlang 17]],
[[Changes/Erlang_18|Erlang 18]], [[Changes/Erlang_19|Erlang 19]],
[[Changes/Erlang_20|Erlang 20]], [[Changes/Erlang_21|Erlang 21]],
[[Changes/Erlang_22|Erlang 22]], and [[Changes/Erlang_23|Erlang 23]]).
It should be noted that this change consists from an independent or
loosely coupled smaller changes. If we fail to deliver some changes in
time, we should reschedule these exact changes to the future Fedora
release while keeping already implemented ones.
* Contingency deadline: N/A
* Blocks release? N/A
* Blocks product? N/A
== Documentation ==
* [https://www.erlang.org/news/146 Erlang/OTP 24.0-rc2 release notes]
== Release Notes ==
Erlang/OTP 24.0 is available in Fedora 35.
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis
https://fedoraproject.org/wiki/Changes/SmallerContainerBase
== Summary ==
This change proposes to remove 3 packages (sssd-client, util-linux,
shadow-utils) from the Container Base Image (including the minimal
image). The Fedora Base Image is still quite large compared to other
distributions and the tools offered by these packages are not
essential in base image.
== Owner ==
* Name: [[User:cverna| Clément Verna]]
* Email: <cverna-at-fedoraproject.org>
== Detailed Description ==
This is a proposal to make the Fedora Container Base image smaller by
remove the following 3 packages:
* sssd-client
* util-linux
* shadow-utils
Current size of the base image and minimal base image :
{| class="wikitable"
|-
! REPOSITORY !! TAG !! IMAGE ID !! CREATED !! SIZE
|-
| registry.fedoraproject.org/fedora || 34 || eede0db319cc || 2 days
ago || 187 MB
|-
| registry.fedoraproject.org/fedora-minimal || 34 || 4ff120184ee4 ||
2 days ago || 122 MB
|}
The installed size of each package is :
{| class="wikitable"
|-
! Package !! Installed Size
|-
| util-linux || 13018140
|-
| shadow-utils || 3876259
|-
| sssd-client || 317948
|}
Removing these packages would allow to gain around 17MB in both images.
Each of these packages provides useful tools but the main goal of the
base image is for building layered images. Each of these packages can
easily be added in a layered image if needed.
More info and discussion happened for each package in the Container SIG tracker
sssd-client : https://pagure.io/ContainerSIG/container-sig/issue/44
util-linux : https://pagure.io/ContainerSIG/container-sig/issue/45
shadow-utils : https://pagure.io/ContainerSIG/container-sig/issue/46
== Benefit to Fedora ==
Reducing the size of the base image makes it a more interesting choice
for users to build layered images using Fedora. The base image is also
heavily used by CI systems so reducing the size makes it faster to be
pulled.
Removing packages from the base image also reduces the number of CVEs
our users have to care about.
== Scope ==
* Proposal owners:
Explicitly remove the 3 packages from the base image kickstart :
https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base.ks
* Release engineering:
Approve and Merge the kickstart change.
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)
* Alignment with Objectives: N/A
== Upgrade/compatibility impact ==
Some layered images that relied on these packages being provided by
the base image will fail to build. These images will now have to make
sure to install the required package in their Container/Dockerfile.
In most cases that will results in adding the following :
RUN dnf -y install sssd-client shadow-utils util-linux && dnf clean all
== How To Test ==
Once implemented, one can test this change by pulling the rawhide
image and verify that none of the above packages are present in the
image.
== User Experience ==
See Upgrade/compatibility impact
== Dependencies ==
== Contingency Plan ==
Kickstart changes can simply be reverted and packages added back in
the base image.
--
Ben Cotton
He / Him / His
Senior Program Manager, Fedora & CentOS Stream
Red Hat
TZ=America/Indiana/Indianapolis