gst-plugins-bad fails to build on armhf-linux

  • Open
  • quality assurance status badge
Details
3 participants
  • Danny Milosavljevic
  • Maxim Cournoyer
  • Mark H Weaver
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 19 Sep 2020 03:45
gst-plugins-bad cannot be built on linux-armhf, breaking qemu
(name . bug-guix)(address . bug-guix@gnu.org)
878sd6zgii.fsf@gmail.com
This occurs on master (commit 679d5e6b3dcac4ee1f419c04b3719fead0bd9ee5).

qemu-minimal is not impacted, but the fully-fledged qemu package
cannot be built, due to a dependency on gst-plugins-bad, which fails to
build like:

./pre-inst-env guix build qemu --rounds=5 --system=armhf-linux

Toggle snippet (55 lines)
[104/738] Generating GstInsertBin-1.0.gir with a custom command.
FAILED: gst-libs/gst/insertbin/GstInsertBin-1.0.gir
/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/bin/g-ir-scanner -pthread -I/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/include/gobject-introspection-1.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include --no-libtool --namespace=GstInsertBin --nsversion=1.0 --warn-all --output gst-libs/gst/insertbin/GstInsertBin-1.0.gir '--add-init-section=extern void gst_init(gint*,gchar**);g_setenv("GST_REGISTRY_1.0", "/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gir_empty_registry.reg", TRUE);g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);gst_init(NULL,NULL);' --quiet -DGST_USE_UNSTABLE_API --c-include=gst/insertbin/gstinsertbin.h -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/gst-libs/gst/insertbin -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/insertbin -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs --filelist=/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/insertbin/5a402bf@@gstinsertbin-1.0@sha/GstInsertBin_1.0_gir_filelist --include=Gst-1.0 --symbol-prefix=gst --identifier-prefix=Gst --pkg-export=gstreamer-insertbin-1.0 --cflags-begin -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-prototypes -Wdeclaration-after-statement -Wold-style-definition -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include -I/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/include/gstreamer-1.0 --cflags-end --add-include-path=/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/share/gir-1.0 --library gstinsertbin-1.0 -L/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/insertbin -L/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib -L/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/lib --extra-library=gstreamer-1.0 --extra-library=gobject-2.0 --extra-library=glib-2.0 --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/subprojects/ --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/subprojects/
ERROR: can't resolve libraries to shared libraries: gstinsertbin-1.0
[105/738] Generating symbol file 'gst-libs/gst/webrtc/ebe7247@@gstwebrtc-1.0@sha/libgstwebrtc-1.0.so.0.1602.0.symbols'.
[106/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/camerabingeneral.c.o'.
[107/738] Linking target gst/audiomixmatrix/libgstaudiomixmatrix.so.
[108/738] Compiling C object 'gst/audiovisualizers/cbf4535@@gstaudiovisualizers@sha/gstsynaescope.c.o'.
[109/738] Linking target gst/audiobuffersplit/libgstaudiobuffersplit.so.
[110/738] Compiling C object 'gst/autoconvert/e5cffa3@@gstautoconvert@sha/gstautoconvert.c.o'.
[111/738] Compiling C object 'gst/audiovisualizers/cbf4535@@gstaudiovisualizers@sha/gstwavescope.c.o'.
[112/738] Linking target gst-libs/gst/codecparsers/libgstcodecparsers-1.0.so.0.1602.0.
-- Adding Fcitx Addon clipboard
[113/738] Compiling C object 'gst/aiff/3dba985@@gstaiff@sha/aiffparse.c.o'.
[114/738] Compiling C object 'gst/bayer/9043930@@gstbayer@sha/meson-generated_.._gstbayerorc.c.o'.
[115/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/gstplugin.c.o'.
[116/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/gstdigitalzoom.c.o'.
[117/738] Generating symbol file 'gst-libs/gst/adaptivedemux/f8886ef@@gstadaptivedemux-1.0@sha/libgstadaptivedemux-1.0.so.0.1602.0.symbols'.
[118/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/gstviewfinderbin.c.o'.
[119/738] Compiling C object 'gst/bayer/9043930@@gstbayer@sha/gstbayer2rgb.c.o'.
[120/738] Compiling C object 'gst/bayer/9043930@@gstbayer@sha/gstrgb2bayer.c.o'.
[121/738] Compiling C object 'gst/asfmux/3f2ef0f@@gstasfmux@sha/gstasfmux.c.o'.
[122/738] Generating symbol file 'gst-libs/gst/mpegts/aa7f611@@gstmpegts-1.0@sha/libgstmpegts-1.0.so.0.1602.0.symbols'.
-- Adding Fcitx Addon vk
[123/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/gstwrappercamerabinsrc.c.o'.
-- Adding Fcitx Addon dbus
[124/738] Compiling C object 'gst/camerabin2/4042765@@gstcamerabin@sha/gstcamerabin2.c.o'.
-- Adding Fcitx Addon lua
[125/738] Generating GstWebRTC-1.0.gir with a custom command.
FAILED: gst-libs/gst/webrtc/GstWebRTC-1.0.gir
/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/bin/g-ir-scanner -pthread -I/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/include/gobject-introspection-1.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include --no-libtool --namespace=GstWebRTC --nsversion=1.0 --warn-all --output gst-libs/gst/webrtc/GstWebRTC-1.0.gir '--add-init-section=extern void gst_init(gint*,gchar**);g_setenv("GST_REGISTRY_1.0", "/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gir_empty_registry.reg", TRUE);g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);gst_init(NULL,NULL);' --quiet -DGST_USE_UNSTABLE_API --c-include=gst/webrtc/webrtc.h -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/gst-libs/gst/webrtc -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/webrtc -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs --filelist=/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/webrtc/ebe7247@@gstwebrtc-1.0@sha/GstWebRTC_1.0_gir_filelist --include=Gst-1.0 --include=GstSdp-1.0 --symbol-prefix=gst --identifier-prefix=Gst --pkg-export=gstreamer-webrtc-1.0 --cflags-begin -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-prototypes -Wdeclaration-after-statement -Wold-style-definition -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include -I/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/include/gstreamer-1.0 -I/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/include/gstreamer-1.0 -I/gnu/store/47i3zixb4mm92r79ry9a2kqkvkqx4cyh-util-linux-2.35.1-lib/include/libmount -I/gnu/store/47i3zixb4mm92r79ry9a2kqkvkqx4cyh-util-linux-2.35.1-lib/include/blkid --cflags-end --add-include-path=/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/share/gir-1.0 --add-include-path=/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/share/gir-1.0 --library gstwebrtc-1.0 -L/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/webrtc -L/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib -L/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/lib --extra-library=gstbase-1.0 --extra-library=gstreamer-1.0 --extra-library=gobject-2.0 --extra-library=glib-2.0 -L/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/lib --extra-library=gstsdp-1.0 --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/subprojects/ --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/subprojects/
ERROR: can't resolve libraries to shared libraries: gstwebrtc-1.0
-- Adding Fcitx Addon unicode
-- Adding Fcitx Addon freedesktop-notify
-- Adding Fcitx Addon notificationitem
[126/738] Generating GstMpegts-1.0.gir with a custom command.
FAILED: gst-libs/gst/mpegts/GstMpegts-1.0.gir
/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/bin/g-ir-scanner -pthread -I/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/include/gobject-introspection-1.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include --no-libtool --namespace=GstMpegts --nsversion=1.0 --warn-all --output gst-libs/gst/mpegts/GstMpegts-1.0.gir '--add-init-section=extern void gst_init(gint*,gchar**);g_setenv("GST_REGISTRY_1.0", "/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gir_empty_registry.reg", TRUE);g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);gst_init(NULL,NULL);' --quiet -DGST_USE_UNSTABLE_API --c-include=gst/mpegts/mpegts.h -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/gst-libs/gst/mpegts -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/mpegts -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs --filelist=/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/mpegts/aa7f611@@gstmpegts-1.0@sha/GstMpegts_1.0_gir_filelist --include=Gst-1.0 --symbol-prefix=gst_mpegts --symbol-prefix=gst --identifier-prefix=GstMpegts --pkg-export=gstreamer-mpegts-1.0 --cflags-begin -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-prototypes -Wdeclaration-after-statement -Wold-style-definition -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include -I/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/include/gstreamer-1.0 --cflags-end --add-include-path=/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/share/gir-1.0 --library gstmpegts-1.0 -L/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/mpegts -L/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib -L/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/lib --extra-library=gstreamer-1.0 --extra-library=gobject-2.0 --extra-library=glib-2.0 --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/subprojects/ --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/subprojects/
ERROR: can't resolve libraries to shared libraries: gstmpegts-1.0
[127/738] Generating GstPlayer-1.0.gir with a custom command.
FAILED: gst-libs/gst/player/GstPlayer-1.0.gir
/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/bin/g-ir-scanner -pthread -I/gnu/store/v3k3md5673pncrdmyywrgwiapjl6baz8-gobject-introspection-1.62.0/include/gobject-introspection-1.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include --no-libtool --namespace=GstPlayer --nsversion=1.0 --warn-all --output gst-libs/gst/player/GstPlayer-1.0.gir '--add-init-section=extern void gst_init(gint*,gchar**);g_setenv("GST_REGISTRY_1.0", "/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gir_empty_registry.reg", TRUE);g_setenv("GST_PLUGIN_PATH_1_0", "", TRUE);g_setenv("GST_PLUGIN_SYSTEM_PATH_1_0", "", TRUE);gst_init(NULL,NULL);' --quiet -DGST_USE_UNSTABLE_API --c-include=gst/player/player.h -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/gst-libs/gst/player -I/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/player -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs --filelist=/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/player/da2c0c4@@gstplayer-1.0@sha/GstPlayer_1.0_gir_filelist --include=Gst-1.0 --include=GstPbutils-1.0 --include=GstBase-1.0 --include=GstVideo-1.0 --include=GstAudio-1.0 --include=GstTag-1.0 --symbol-prefix=gst --identifier-prefix=Gst --pkg-export=gstreamer-player-1.0 --cflags-begin -fvisibility=hidden -fno-strict-aliasing -DG_DISABLE_CAST_CHECKS -Wmissing-prototypes -Wdeclaration-after-statement -Wold-style-definition -Wmissing-declarations -Wredundant-decls -Wwrite-strings -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wvla -Wpointer-arith -I./. -I../gst-plugins-bad-1.16.2/. -I./gst-libs -I../gst-plugins-bad-1.16.2/gst-libs -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/include/glib-2.0 -I/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib/glib-2.0/include -I/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/include/gstreamer-1.0 -I/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/include/gstreamer-1.0 --cflags-end --add-include-path=/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/share/gir-1.0 --add-include-path=/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/share/gir-1.0 --library gstplayer-1.0 -L/tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/gst-libs/gst/player -L/gnu/store/1qp1w8pjwk4ba26mj6gnyxdz9cyd0jvv-glib-2.62.6/lib -L/gnu/store/5b1i5ilddxn96ricgrzzyprg2h5xy4f4-gstreamer-1.16.2/lib --extra-library=gstbase-1.0 --extra-library=gstreamer-1.0 --extra-library=gobject-2.0 --extra-library=glib-2.0 -L/gnu/store/6fd5y75yklr46wxfrs917p5sa7qm27h5-gst-plugins-base-1.16.2/lib --extra-library=gstvideo-1.0 --extra-library=gstaudio-1.0 --extra-library=gsttag-1.0 --extra-library=gstpbutils-1.0 --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/gst-plugins-bad-1.16.2/subprojects/ --sources-top-dirs /tmp/guix-build-gst-plugins-bad-1.16.2.drv-0/build/subprojects/
ERROR: can't resolve libraries to shared libraries: gstplayer-1.0
ninja: build stopped: subcommand failed.
command "ninja" "-j" "24" failed with status 1
builder for `/gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv' failed with exit code 1
@ build-failed /gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv - 1 builder for `/gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv' failed with exit code 1
derivation '/gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv' offloaded to '127.0.0.1' failed: build of `/gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv' failed
-- Adding Fcitx Addon pinyin
build of /gnu/store/6yy2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv failed
View build log at '/var/log/guix/drvs/6y/y2qhp8hfm6ajdvk5fscrzgzg701dqn-gst-plugins-bad-1.16.2.drv.bz2'.
cannot build derivation `/gnu/store/4hpglj6vk0zggchh9hv287d1fh0s5mbq-spice-0.14.3.drv': 1 dependencies couldn't be built
cannot build derivation `/gnu/store/x3dibi2h2b1a29752f0x0j2lap9qxy2d-qemu-5.0.0.drv': 1 dependencies couldn't be built
guix build: error: build of `/gnu/store/x3dibi2h2b1a29752f0x0j2lap9qxy2d-qemu-5.0.0.drv' failed
M
M
Mark H Weaver wrote on 19 Sep 2020 05:40
87wo0q77t3.fsf@netris.org
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (6 lines)
> This occurs on master (commit 679d5e6b3dcac4ee1f419c04b3719fead0bd9ee5).
>
> qemu-minimal is not impacted, but the fully-fledged qemu package
> cannot be built, due to a dependency on gst-plugins-bad, which fails to
> build like:

It would be good to eliminate that dependency. Ever since 'spice-gtk'
was added, it has included *every* gstreamer plugin package in its
'propagated-inputs'. I'm not sure, but it may have been motivated by a
goal that some Guix developers have advocated, to make packages in Guix
work "out of the box" in a way that users of proprietary systems have
come to expect, i.e. with popular patented codecs included.

I think it's important that Guix core functionality should be usable
without installing a collection of patented media codecs. Those plugins
should be purely optional. In my opinion, we should find a way to
eliminate those dependencies.

Mark
D
D
Danny Milosavljevic wrote on 19 Sep 2020 16:24
Whitelisting/blacklisting transitive package dependencies
(name . Mark H Weaver)(address . mhw@netris.org)
20200919162411.1b6f621b@scratchpost.org
Hi,

On Fri, 18 Sep 2020 23:40:13 -0400
Mark H Weaver <mhw@netris.org> wrote:

Toggle quote (5 lines)
> I think it's important that Guix core functionality should be usable
> without installing a collection of patented media codecs. Those plugins
> should be purely optional. In my opinion, we should find a way to
> eliminate those dependencies.

I agree that it would be good to prevent weird dependencies from creeping in--for
your stated reasons, but also for a lot of other reasons, chief of which is that
the most secure source code is the source code that has been eliminated.

Also, Guix sometimes pulls in transitive dependencies for the weirdest things.

The "*-minimal" packages we have make it less bad.

Still, it would nice to also have something that automatically checks whether
there are weird transitive inputs of a package, for each package (*especially*
in order to use that for "-minimal" packages).

I sometimes add #:disallowed-references after tracking down problems of
unintended transitive inputs (for example see f2fs-tools/static). But even
that disallows just one specific reference (one package version).

What I want is to disallow any package of that name entirely in the dependency
graph--or even disallow references to specific source files (or other groups of
packages) entirely.
And I want it to keep disallowing it mechanically without me having to
remember it.

Guix lint already does something like I want, but for direct (non-transitive)
inputs.

It should be possible to add a "guix lint" check that also checks transitive
inputs of packages for suspicious packages.

The maintenance of a transitive-whitelist/-blacklist per package would then
probably be have to be done inside guix lint, though. It could be nicer if
there were package fields for those for it eventually. But for now, I guess
inside guix lint is good enough.

That said, for practicality one has to find some kind of groups of packages,
in order to keep the whitelist/blacklist from ballooning. For now, I assume
that each group has an extra source file--which we know is not true in Guix
right now. But we could make it true.

I started to add something to guix lint (possible procedures to use:
package-transitive-inputs, package-transitive-propagated-inputs,
package-transitive-native-inputs)--see patch below. But note that it just
complains about everything now--we would still have to specify what is
"bad".

I would suggest to have a whitelist (of file names) and a blacklist
(of file names), and the following:
If a package has a whitelist and a transitive dependency is not on the
whitelist, complain. If a package does not have a whitelist but does
have a blacklist and a transitive dependency is on the blacklist, complain.

I still find it illuminating as it is now. Try:

$ guix lint qemu
[...]
gnu/packages/virtualization.scm:260:5: qemu@5.0.0: 'gnu/packages/dbm.scm' should probably not be referred to (but it is--because of packages (gdbm))
[...]
gnu/packages/virtualization.scm:260:5: qemu@5.0.0: 'gnu/packages/spice.scm' should probably not be referred to (but it is by packages (libcacard spice usbredir virglrenderer spice-protocol))
gnu/packages/virtualization.scm:260:5: qemu@5.0.0: 'gnu/packages/gl.scm' should probably not be referred to (but it is by packages (libepoxy mesa))
[...]
gnu/packages/virtualization.scm:260:5: qemu@5.0.0: 'gnu/packages/dbm.scm' should probably not be referred to (but it is by packages (gdbm))
[...]
gnu/packages/virtualization.scm:260:5: qemu@5.0.0: 'gnu/packages/pulseaudio.scm' should probably not be referred to (but it is because of packages (pulseaudio))

WTF!

Also, for the special case where no package in a source file A should refer to
any package in a source file B, it could be enough to establish a convention
of commenting out the respective "#:use-module (...)" in source file A (and
adding a "DO NOT USE" text to it), and never deleting that comment.

That way, once somebody had found what module one should not ever import, he
could document that fact.

Toggle diff (82 lines)
diff --git a/guix/lint.scm b/guix/lint.scm
index ec43a4dcad..d65ac34441 100644
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@ -72,6 +72,7 @@
#:export (check-description-style
check-inputs-should-be-native
check-inputs-should-not-be-an-input-at-all
+ check-transitive-input-sanity
check-patch-file-names
check-synopsis-style
check-derivation
@@ -287,6 +288,38 @@ of a package, and INPUT-NAMES, a list of package specifications such as
input))))
packages outputs))))
+(define (check-transitive-input-sanity package)
+ (let* ((examined-package-name (package-name package))
+ (examined-package-location (package-location package))
+ (examined-package-source-file-name (location-file examined-package-location))
+ (examined-package-dependency-source-file-names
+ (delete examined-package-source-file-name
+ (delete-duplicates
+ (map (match-lambda
+ ((key dependency . rest) (location-file (package-location dependency))))
+ (package-transitive-target-inputs package))))))
+ (map (lambda (source-file-name)
+ (let ((packages-in-source-file
+ (filter (match-lambda
+ ((key dependency . rest) (string=? source-file-name
+ (location-file
+ (package-location dependency)))))
+ (package-transitive-target-inputs package))))
+ (make-warning package
+ (G_ "'~a' should probably not be referred to (but it is--because of packages ~a)")
+ (list source-file-name (map (match-lambda
+ ((key dependency . rest)
+ (package-name dependency)))
+ packages-in-source-file))
+ #:field 'inputs)))
+ examined-package-dependency-source-file-names)))
+ (delete examined-package-source-file-name
+ (delete-duplicates
+ (map (match-lambda
+ ((key dependency . rest) (location-file (package-location dependency))))
+ (package-transitive-target-inputs package))))))
+ (map (lambda (source-file-name)
+ (let ((packages-in-source-file
+ (filter (match-lambda
+ ((key dependency . rest) (string=? source-file-name
+ (location-file
+ (package-location dependency)))))
+ (package-transitive-target-inputs package))))
+ (make-warning package
+ (G_ "'~a' should probably not be referred to (but it is--because of packages ~a)")
+ (list source-file-name (map (match-lambda
+ ((key dependency . rest)
+ (package-name dependency)))
+ packages-in-source-file))
+ #:field 'inputs)))
+ examined-package-dependency-source-file-names)))
+
+ ;; if examined-package-name like '%qemu%':
+ ;; (package-name (map <car cdr> package-transitive-inputs)) no gstreamer; source file not
+ ;; gstreamer.scm, gtk.scm.
+ ;; allowed references to location-files
+ ;; TODO: gstreamer should not be anywhere in any transitive inputs of any qemu
+
(define (check-inputs-should-be-native package)
;; Emit a warning if some inputs of PACKAGE are likely to belong to its
;; native inputs.
@@ -1378,6 +1411,10 @@ them for PACKAGE."
(define %local-checkers
(list
+ (lint-checker
+ (name 'transitive-inputs)
+ (description "Checks transitive inputs")
+ (check check-transitive-input-sanity))
(lint-checker
(name 'description)
(description "Validate package descriptions")
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl9mFIsACgkQ5xo1VCww
uqXtZAf/VHwgXpYbcEtzGuHSMX68vHOmDb4ZP6li5HQ7H5JwBADQwfC8jyQke47k
UM5QVokU04Sg3oh2hvjwGngmVe3UrtvHLvg5EyGi+endKJAee891dikWCWQUrCLC
RYbNU16qgFCs1jrtDQwUrP2b2ztveut9ElumyF3Y+lXmU4/laC4/76fP0NrEpaEe
SS5ATpR5SHOXHU0FzE3gmc8dq359Ha1Wf8iAZUy7Yd8nv72jUURwvsbJKqEk6p2q
nwy2ZeCuHmyF1W1AE512h/Wg1Gt5U7Y5v/R52JHyQ8uZ+WHmABNk8BRcf4oOO6Dx
dmB0tY5/gqqhGUffew7RImvqPoJxvw==
=VKZJ
-----END PGP SIGNATURE-----


M
M
Mark H Weaver wrote on 21 Sep 2020 00:00
Re: bug#43501: gst-plugins-bad cannot be built on linux-armhf, breaking qemu
87zh5kw1k7.fsf@netris.org
Earlier, I wrote:
Toggle quote (3 lines)
> Ever since 'spice-gtk' was added, it has included *every* gstreamer
> plugin package in its 'propagated-inputs'.

On my private branch, I removed 'gst-libav', 'gst-plugins-bad' and
'gst-plugins-ugly' from the propagated-inputs of 'spice-gtk'.

Toggle snippet (18 lines)
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index 4aff8dbf56..4b4c673a9d 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -144,11 +144,8 @@ which allows users to view a desktop computing environment.")
(build-system gnu-build-system)
(propagated-inputs
`(("gstreamer" ,gstreamer)
- ("gst-libav" ,gst-libav)
("gst-plugins-base" ,gst-plugins-base)
("gst-plugins-good" ,gst-plugins-good)
- ("gst-plugins-bad" ,gst-plugins-bad)
- ("gst-plugins-ugly" ,gst-plugins-ugly)
("spice-protocol" ,spice-protocol)
;; These are required by the pkg-config files.

I rebuilt my system and user profiles with this patch applied, and
everything seems to work fine. Moreover, I'm glad to report that
'gst-plugins-ugly' is no longer in my store. (Sadly, 'gst-plugins-bad'
still is, because our 'gnome' package depends on 'cheese' which depends
on 'gst-plugins-bad', and last I checked that was unavoidable.)

I haven't tried using the 'spice' functionality specifically, but I
suspect that any reduced "out-of-the-box" functionality could be
regained by users simply installing those plugins as needed, along with
gstreamer for its 'native-search-paths' field.

What do you think?

Mark

PS: Danny's idea is worth considering in its own right, but I think it's
orthogonal to this proposed change.
M
M
Maxim Cournoyer wrote on 22 Sep 2020 04:36
(name . Mark H Weaver)(address . mhw@netris.org)(address . 43501@debbugs.gnu.org)
87k0wmy1v1.fsf@gmail.com
Hello Mark!

Mark H Weaver <mhw@netris.org> writes:

Toggle quote (17 lines)
> Earlier, I wrote:
>> Ever since 'spice-gtk' was added, it has included *every* gstreamer
>> plugin package in its 'propagated-inputs'.
>
> On my private branch, I removed 'gst-libav', 'gst-plugins-bad' and
> 'gst-plugins-ugly' from the propagated-inputs of 'spice-gtk'.
>
> diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
> index 4aff8dbf56..4b4c673a9d 100644
> --- a/gnu/packages/spice.scm
> +++ b/gnu/packages/spice.scm
> @@ -144,11 +144,8 @@ which allows users to view a desktop computing environment.")
> (build-system gnu-build-system)
> (propagated-inputs
> `(("gstreamer" ,gstreamer)
> - ("gst-libav" ,gst-libav)

I feel less strongly about this one, perhaps because its name doesn't
contain "bad" or "ugly" ;-). Why should we remove it?

Toggle quote (6 lines)
> ("gst-plugins-base" ,gst-plugins-base)
> ("gst-plugins-good" ,gst-plugins-good)
> - ("gst-plugins-bad" ,gst-plugins-bad)
> - ("gst-plugins-ugly" ,gst-plugins-ugly)
> ("spice-protocol" ,spice-protocol)

I'd be in favor of not promoting plugins which are known to be of 1)
subpar quality (bad) or patent encumbered (ugly), by letting the users
install them if they choose, but not forcing those on them.

Toggle quote (8 lines)
> ;; These are required by the pkg-config files.
>
> I rebuilt my system and user profiles with this patch applied, and
> everything seems to work fine. Moreover, I'm glad to report that
> 'gst-plugins-ugly' is no longer in my store. (Sadly, 'gst-plugins-bad'
> still is, because our 'gnome' package depends on 'cheese' which depends
> on 'gst-plugins-bad', and last I checked that was unavoidable.)

That's unfortunate.

Toggle quote (5 lines)
> I haven't tried using the 'spice' functionality specifically, but I
> suspect that any reduced "out-of-the-box" functionality could be
> regained by users simply installing those plugins as needed, along with
> gstreamer for its 'native-search-paths' field.

They wouldn't even need to install gstreamer itself as it is propagated
in the spice-gtk hunk shown above.

Toggle quote (2 lines)
> What do you think?

I agree philosophically, but I feel we need more testing of the spice
part, to know what we're loosing, if we're loosing anything. I'll try
rebuilding qemu with this patch and test gnome-boxes, which must make
use of spice-gtk.

Toggle quote (5 lines)
> Mark
>
> PS: Danny's idea is worth considering in its own right, but I think it's
> orthogonal to this proposed change.

Seconded.

Maxim
M
M
Maxim Cournoyer wrote on 24 Sep 2020 06:41
Re: bug#43501: gst-plugins-bad cannot be built on linux-armhf
(name . Mark H Weaver)(address . mhw@netris.org)(address . 43501@debbugs.gnu.org)
87pn6bvlaa.fsf_-_@gmail.com
retitle 43501 new-title gst-plugins-bad fails to build on armhf-linux
quit

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (36 lines)
> Hello Mark!
>
> Mark H Weaver <mhw@netris.org> writes:
>
>> Earlier, I wrote:
>>> Ever since 'spice-gtk' was added, it has included *every* gstreamer
>>> plugin package in its 'propagated-inputs'.
>>
>> On my private branch, I removed 'gst-libav', 'gst-plugins-bad' and
>> 'gst-plugins-ugly' from the propagated-inputs of 'spice-gtk'.
>>
>> diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
>> index 4aff8dbf56..4b4c673a9d 100644
>> --- a/gnu/packages/spice.scm
>> +++ b/gnu/packages/spice.scm
>> @@ -144,11 +144,8 @@ which allows users to view a desktop computing environment.")
>> (build-system gnu-build-system)
>> (propagated-inputs
>> `(("gstreamer" ,gstreamer)
>> - ("gst-libav" ,gst-libav)
>
> I feel less strongly about this one, perhaps because its name doesn't
> contain "bad" or "ugly" ;-). Why should we remove it?
>
>> ("gst-plugins-base" ,gst-plugins-base)
>> ("gst-plugins-good" ,gst-plugins-good)
>> - ("gst-plugins-bad" ,gst-plugins-bad)
>> - ("gst-plugins-ugly" ,gst-plugins-ugly)
>> ("spice-protocol" ,spice-protocol)
>

> I agree philosophically, but I feel we need more testing of the spice
> part, to know what we're loosing, if we're loosing anything. I'll try
> rebuilding qemu with this patch and test gnome-boxes, which must make
> use of spice-gtk.

I've now done so, and could run a foreign distribution that I had
already installed without any perceived difference.

I've pushed this as 035df987f1. Editing the title to reflect the fact
that QEMU is no longer affected by this problem.

Thanks!

Maxim
M
M
Maxim Cournoyer wrote on 24 Sep 2020 21:13
control message for bug #43501
(address . control@debbugs.gnu.org)
87d02bugx0.fsf@gmail.com
retitle 43501 gst-plugins-bad fails to build on armhf-linux
quit
M
M
Mark H Weaver wrote on 26 Sep 2020 20:57
Re: bug#43501: gst-plugins-bad cannot be built on linux-armhf
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 43501@debbugs.gnu.org)
877dsg8ix3.fsf@netris.org
Hi Maxim,

Apologies for the delayed response.

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (15 lines)
> Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:
>
>> Mark H Weaver <mhw@netris.org> writes:
>>
>>> --- a/gnu/packages/spice.scm
>>> +++ b/gnu/packages/spice.scm
>>> @@ -144,11 +144,8 @@ which allows users to view a desktop computing environment.")
>>> (build-system gnu-build-system)
>>> (propagated-inputs
>>> `(("gstreamer" ,gstreamer)
>>> - ("gst-libav" ,gst-libav)
>>
>> I feel less strongly about this one, perhaps because its name doesn't
>> contain "bad" or "ugly" ;-). Why should we remove it?

Like 'gst-plugins-ugly', it also contains patent-encumbered codecs via
'ffmpeg'. However, I acknowledge that several important packages in
Guix depend directly on 'ffmpeg', and therefore more work would be
needed to achieve the goal of allowing Guix users to avoid installing
patent-encumbered codecs while still having a modern desktop
environment.

Toggle quote (17 lines)
>>> ("gst-plugins-base" ,gst-plugins-base)
>>> ("gst-plugins-good" ,gst-plugins-good)
>>> - ("gst-plugins-bad" ,gst-plugins-bad)
>>> - ("gst-plugins-ugly" ,gst-plugins-ugly)
>>> ("spice-protocol" ,spice-protocol)
>
>> I agree philosophically, but I feel we need more testing of the spice
>> part, to know what we're loosing, if we're loosing anything. I'll try
>> rebuilding qemu with this patch and test gnome-boxes, which must make
>> use of spice-gtk.
>
> I've now done so, and could run a foreign distribution that I had
> already installed without any perceived difference.
>
> I've pushed this as 035df987f1. Editing the title to reflect the fact
> that QEMU is no longer affected by this problem.

Thank you for taking care of this, Maxim!

Best,
Mark
?