Bug 251489 - misc/e2fsprogs-libuuid: libuuid merged in e2fsprogs is outdated relative to util-linux, lacks f.i. uuid_generate_time_safe
Summary: misc/e2fsprogs-libuuid: libuuid merged in e2fsprogs is outdated relative to u...
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Some People
Assignee: Matthias Andree
URL: https://reviews.freebsd.org/D23312
Keywords:
Depends on: 221293
Blocks:
  Show dependency treegraph
 
Reported: 2020-11-30 17:38 UTC by zazckx
Modified: 2021-07-09 21:10 UTC (History)
3 users (show)

See Also:
bugzilla: maintainer-feedback? (mandree)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description zazckx 2020-11-30 17:38:38 UTC
The libuuid from e2fsprogs lacks lots of new functions.

from comparison of
new:
https://github.com/karelzak/util-linux/blob/master/libuuid/src/libuuid.sym
current:
https://github.com/tytso/e2fsprogs/blob/master/lib/uuid/uuid.h.in

we could know that the libuuid inside e2fsprogs have not been update for a long time. missing function list:

since util-linux 2.20
uuid_generate_time_safe

since util-linux.2.31
uuid_generate_md5
uuid_generate_sha1
uuid_get_template

since util-linux.2.36
uuid_parse_range

these functions might be critical for some packages(I have no idea how to find them out).

I was encountering this problem when installing Budgie Desktop, which depends on 'uuid_generate_time_safe'.
https://github.com/solus-project/budgie-desktop/blob/master/vapi/uuid.vapi#L10

related:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221293
https://reviews.freebsd.org/D23312
Comment 1 Matthias Andree freebsd_committer 2020-11-30 20:34:13 UTC
OK, this (Budgie) is the first strong point someone makes why the update would be useful in practice and not just as an exercise.  I will dismiss the 

uuid_generate_md5
uuid_generate_sha1

functions as reasons or excuses, the other missing functions are valid reasons to look into updating.

I think we need to brush up https://reviews.freebsd.org/D23312 first, after so many months it may need some love, and it may also need an -exp run.
Comment 2 Yuri Victorovich freebsd_committer 2020-11-30 20:52:08 UTC
util-linux is now a port: devel/util-linux
It provides libuuid.so
Comment 3 Matthias Andree freebsd_committer 2020-11-30 21:00:39 UTC
OK, that's good, but we still have conflicts galore, picking those I see on my system (the last two are sort of expected).

Apparently only your dnf and libdnf (the Fedora Linux high-level package manager software) ports use it so far.

  - util-linux-2.36 [FreeBSD-latest] conflicts with getopt-1.1.6 [installed] on /usr/local/bin/getopt
  - util-linux-2.36 [FreeBSD-latest] conflicts with hardlink-0.3.0 [installed] on /usr/local/bin/hardlink
  - util-linux-2.36 [FreeBSD-latest] conflicts with e2fsprogs-libblkid-1.45.6_1 [installed] on /usr/local/include/blkid/blkid.h
  - util-linux-2.36 [FreeBSD-latest] conflicts with e2fsprogs-1.45.6_4 [installed] on /usr/local/man/man8/blkid.8.gz

So while util-linux would scratch the immediate itch, on my system installing it would purge 11 packages that lose e2fsprogs-libuuid, and a dry run of Tools/scripts/bump_revision.pl -l -n e2fsprogs-libuuid identifies 87 ports depending directly on e2fsprogs-libuuid.

Any early proposals to reconcile the differences?  

Else we still need to brush up https://reviews.freebsd.org/D23312 and I'll try to look into getting e2fsprogs ported to util-linux in December.
Comment 4 Matthias Andree freebsd_committer 2020-11-30 21:04:37 UTC
I don't currently oversee if this list is exhaustive, or if util-linux competes with other packages, too.  How do we find out what other ports might conflict with util-linux efficiently, except the listed cal package?

For the known conflicts: 

Ports requiring e2fsprogs-libuuid:
     1	audio/gsequencer
     2	audio/lash
     3	audio/libgig
     4	audio/linuxsampler
     5	benchmarks/flowgrind
     6	cad/horizon-eda
     7	chinese/fcitx
     8	databases/recutils
     9	deskutils/bijiben
    10	deskutils/gnote
    11	deskutils/nautilus-actions
    12	deskutils/simpleagenda
    13	devel/RStudio
    14	devel/appstream-glib
    15	devel/babeltrace
    16	devel/gearmand
    17	devel/gearmand-devel
    18	devel/ignition-common
    19	devel/libcrossguid
    20	devel/libdap
    21	devel/libewf
    22	devel/libsml
    23	devel/msitools
    24	devel/p5-UUID
    25	devel/pecl-uuid
    26	devel/pmdk
    27	devel/util-linux
    28	devel/xeus
    29	devel/xeus-cling
    30	games/moonlight-embedded
    31	lang/chez-scheme
    32	mail/cyrus-imapd32
    33	math/cadabra2
    34	misc/biblesync
    35	misc/e2fsprogs-libblkid
    36	misc/ignition-fuel-tools
    37	misc/xiphos
    38	multimedia/kodi
    39	multimedia/kodi-devel
    40	multimedia/ustreamer
    41	net-im/profanity
    42	net-im/telepathy-gabble
    43	net-mgmt/ccnet-server
    44	net-mgmt/netdata
    45	net-mgmt/seafile-client
    46	net-mgmt/seafile-gui
    47	net-mgmt/seafile-server
    48	net-p2p/libbt
    49	net/asterisk13
    50	net/asterisk16
    51	net/asterisk18
    52	net/freeswitch
    53	net/glusterfs
    54	net/gupnp
    55	net/mosquitto
    56	net/pacemaker1
    57	net/pacemaker2
    58	net/pjsip
    59	science/cdo
    60	science/qbox
    61	security/openvas8-libraries
    62	security/openvas9-libraries
    63	security/razorback-api
    64	security/snort3
    65	security/tpm2-tools
    66	sysutils/cluster-glue
    67	sysutils/e2fsprogs
    68	sysutils/fusefs-httpdirfs
    69	sysutils/fusefs-ntfs
    70	sysutils/gdisk
    71	sysutils/ltfs
    72	sysutils/passwordsafe
    73	sysutils/pesign
    74	sysutils/rsyslog8
    75	sysutils/syslog-ng
    76	sysutils/syslog-ng324
    77	sysutils/syslog-ng325
    78	sysutils/syslog-ng326
    79	sysutils/syslog-ng327
    80	sysutils/syslog-ng328
    81	sysutils/syslog-ng329
    82	sysutils/tracker
    83	textproc/zorba
    84	www/blastbeat
    85	www/davix
    86	www/libepc
    87	x11/gnome-terminal

e2fsprogs-libblkid is the easy part, only e2fsprogs uses it.

getopt is used by these ports:

     1	devel/compiz-bcop
     2	devel/gitflow
     3	math/eukleides
     4	net/ceph12
     5	net/ceph14
     6	net/pacemaker1
     7	net/pacemaker2
     8	sysutils/password-store
     9	sysutils/tartarus
    10	textproc/rarian
    11	textproc/xmlto
    12	textproc/yodl
    13	x11-fonts/fontpreview
Comment 5 Yuri Victorovich freebsd_committer 2020-11-30 21:11:16 UTC
(In reply to Matthias Andree from comment #4)

lubuuid.so can be split out into a separate port. This would untangle lubuuid.so from the conflicts problem.
Comment 6 Yuri Victorovich freebsd_committer 2020-11-30 21:12:36 UTC
OItherwise, I think linuuid.so that devel/util-linux provides is exactly what Linux systems use.
Comment 7 Conrad Meyer freebsd_committer 2020-12-31 12:45:48 UTC
(In reply to Matthias Andree from comment #3)
util-linux port also conflicts with sysutils/flock, which is:
WWW            : https://www.kernel.org/pub/linux/utils/util-linux/
Comment        : Manage locks from shell scripts

Probably flock port can be dropped in favor of util-linux once the other conflicts are resolved?

Or we could change util-linux port to not distribute flock, getopt, and other conflicting binaries.  And potentially run-depend on other ports that are util-linux components.

As-is util-linux is not that useful if it cannot be installed.  Some GNOME components depend on our existing getopt, which does not appear to be the util-linux version (but may be compatible).