[13/21] alsa-utils-scripts: merge into alsa-utils

Message ID 20220606120126.3381438-13-alex@linutronix.de
State Accepted, archived
Commit 466eba749629cdc8d759b6df3e1d95340fcfd67f
Headers show
Series [01/21] sato: work around missing icons in adwaita 42.0 | expand

Commit Message

Alexander Kanavin June 6, 2022, 12:01 p.m. UTC
There is no reason to keep the recipe separate: bash dependency is not a
problem until the alsa-utils-scripts package is explicitly installed into a target image.

Signed-off-by: Alexander Kanavin <alex@linutronix.de>
---
 meta/conf/distro/include/maintainers.inc      |   1 -
 .../alsa/alsa-utils-scripts_1.2.6.bb          |  25 ----
 meta/recipes-multimedia/alsa/alsa-utils.inc   | 108 ----------------
 .../alsa/alsa-utils_1.2.6.bb                  | 120 +++++++++++++++++-
 4 files changed, 119 insertions(+), 135 deletions(-)
 delete mode 100644 meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb
 delete mode 100644 meta/recipes-multimedia/alsa/alsa-utils.inc

Comments

Peter Marko Jan. 12, 2024, 9:14 a.m. UTC | #1
Hi Alex,

I'm upgrading my layer from kirkstone to scarthgap and observed that my image failed due to gpl3 license.

I want to conveniently install whole alsa-utils except for parts where license forbids me to do it.
After your path I would need to list all alsa-utils subpackages except the scripts.
And on top of that during every core layer update I'd have to check if there is not a new one.

So from this point of view, your statement
"There is no reason to keep the recipe separate: bash dependency is not a problem until the alsa-utils-scripts package is explicitly installed into a target image."
Is not true, it's a problem for maintenance.

Would something like this be accepted when I'd submit it?
This would return alsa-utils package installation to status before your commit, while still keeping alsa-utils single recipe.

diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.2.10.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.2.10.bb
index 4e5ed8dfa0..5f4048938f 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.2.10.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.2.10.bb
@@ -56,10 +56,10 @@ ALSA_UTILS_PKGS = "\
              alsa-utils-alsactl \
              alsa-utils-alsaloop \
              alsa-utils-alsaucm \
-             alsa-utils-scripts \
              alsa-utils-nhltdmicinfo \
             "
 
+PACKAGES += "alsa-utils-scripts"
 PACKAGES += "${ALSA_UTILS_PKGS}"
 RDEPENDS:${PN} += "${ALSA_UTILS_PKGS}"

Thanks,
  Peter

-----Original Message-----
From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Alexander Kanavin via lists.openembedded.org
Sent: Monday, June 6, 2022 14:01
To: openembedded-core@lists.openembedded.org
Cc: Kanavin, Alexander (EXT) (Linutronix GmbH) <alex@linutronix.de>
Subject: [OE-core] [PATCH 13/21] alsa-utils-scripts: merge into alsa-utils

> There is no reason to keep the recipe separate: bash dependency is not a problem until the alsa-utils-scripts package is explicitly installed into a target image.
>
> Signed-off-by: Alexander Kanavin <alex@linutronix.de>
> ---
Alexander Kanavin Jan. 12, 2024, 10:41 a.m. UTC | #2
On Fri, 12 Jan 2024 at 10:14, Marko, Peter <Peter.Marko@siemens.com> wrote:
> I'm upgrading my layer from kirkstone to scarthgap and observed that my image failed due to gpl3 license.
>
> I want to conveniently install whole alsa-utils except for parts where license forbids me to do it.
> After your path I would need to list all alsa-utils subpackages except the scripts.
> And on top of that during every core layer update I'd have to check if there is not a new one.
>
> So from this point of view, your statement
> "There is no reason to keep the recipe separate: bash dependency is not a problem until the alsa-utils-scripts package is explicitly installed into a target image."
> Is not true, it's a problem for maintenance.
>
> Would something like this be accepted when I'd submit it?
> This would return alsa-utils package installation to status before your commit, while still keeping alsa-utils single recipe.

Does a .bbappend with ALSA_UTILS_PKGS:remove = "alsa-utils-scripts"
work for you?

I would not want to exclude things that upstream installs from default
choices in oe-core, if they logically belong to a set. GPLv3 is OSI
approved, and Siemens not being able to ship it in a product is a
special case.

Alex

Patch

diff --git a/meta/conf/distro/include/maintainers.inc b/meta/conf/distro/include/maintainers.inc
index de3fb7474c..6ab2ed9a9f 100644
--- a/meta/conf/distro/include/maintainers.inc
+++ b/meta/conf/distro/include/maintainers.inc
@@ -38,7 +38,6 @@  RECIPE_MAINTAINER:pn-alsa-tools = "Michael Opdenacker <michael.opdenacker@bootli
 RECIPE_MAINTAINER:pn-alsa-topology-conf = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
 RECIPE_MAINTAINER:pn-alsa-ucm-conf = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
 RECIPE_MAINTAINER:pn-alsa-utils = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
-RECIPE_MAINTAINER:pn-alsa-utils-scripts = "Michael Opdenacker <michael.opdenacker@bootlin.com>"
 RECIPE_MAINTAINER:pn-apmd = "Anuj Mittal <anuj.mittal@intel.com>"
 RECIPE_MAINTAINER:pn-apr = "Hongxu Jia <hongxu.jia@windriver.com>"
 RECIPE_MAINTAINER:pn-apr-util = "Hongxu Jia <hongxu.jia@windriver.com>"
diff --git a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb b/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb
deleted file mode 100644
index 000e984a7d..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils-scripts_1.2.6.bb
+++ /dev/null
@@ -1,25 +0,0 @@ 
-require alsa-utils.inc
-
-SUMMARY = "Shell scripts that show help info and create ALSA configuration files"
-PROVIDES = "alsa-utils-alsaconf"
-
-FILESEXTRAPATHS:prepend := "${THISDIR}/alsa-utils:"
-
-PACKAGES = "${PN}"
-RDEPENDS:${PN} += "bash"
-
-FILES:${PN} = "${sbindir}/alsaconf \
-               ${sbindir}/alsa-info.sh \
-               ${sbindir}/alsabat-test.sh \
-              "
-
-S = "${WORKDIR}/alsa-utils-${PV}"
-
-do_install() {
-	install -d ${D}${sbindir}
-	install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
-	install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
-	if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then
-		install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/
-	fi
-}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils.inc b/meta/recipes-multimedia/alsa/alsa-utils.inc
deleted file mode 100644
index bca7cdd3bd..0000000000
--- a/meta/recipes-multimedia/alsa/alsa-utils.inc
+++ /dev/null
@@ -1,108 +0,0 @@ 
-SUMMARY = "ALSA sound utilities"
-DESCRIPTION = "collection of small and often extremely powerful applications \
-designed to allow users to control the various parts of the ALSA system."
-HOMEPAGE = "http://www.alsa-project.org"
-BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
-SECTION = "console/utils"
-# Some parts are GPL-2.0-or-later, some are GPL-2.0-only (e.g. axfer, alsactl)
-# so result is GPL-2.0-only
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
-                    file://alsactl/utils.c;beginline=3;endline=18;md5=96cc06a4cebe5eb7975688ffb0e65642"
-DEPENDS = "alsa-lib ncurses libsamplerate0"
-
-PACKAGECONFIG ??= "udev"
-
-# alsabat can be built also without fftw support (with reduced functionality).
-# It would be better to always enable alsabat, but provide an option for
-# enabling/disabling fftw. The configure script doesn't support that, however
-# (at least in any obvious way), so for now we only support alsabat with fftw
-# or no alsabat at all.
-PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
-
-PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev"
-PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
-
-# alsa-utils specified in SRC_URI due to alsa-utils-scripts recipe
-SRC_URI = "https://www.alsa-project.org/files/pub/utils/alsa-utils-${PV}.tar.bz2"
-SRC_URI[sha256sum] = "6a1efd8a1f1d9d38e489633eaec1fffa5c315663b316cab804be486887e6145d"
-
-# On build machines with python-docutils (not python3-docutils !!) installed
-# rst2man (not rst2man.py) is detected and compile fails with
-# | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'.  Stop.
-# Avoid this by disabling expicitly
-EXTRA_OECONF = "--disable-rst2man"
-
-inherit autotools gettext pkgconfig manpages
-
-# This are all packages that we need to make. Also, the now empty alsa-utils
-# ipk depends on them.
-
-ALSA_UTILS_PKGS = "\
-             ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
-             alsa-utils-alsamixer \
-             alsa-utils-alsatplg \
-             alsa-utils-midi \
-             alsa-utils-aplay \
-             alsa-utils-amixer \
-             alsa-utils-aconnect \
-             alsa-utils-iecset \
-             alsa-utils-speakertest \
-             alsa-utils-aseqnet \
-             alsa-utils-aseqdump \
-             alsa-utils-alsactl \
-             alsa-utils-alsaloop \
-             alsa-utils-alsaucm \
-            "
-
-PACKAGES += "${ALSA_UTILS_PKGS}"
-RDEPENDS:${PN} += "${ALSA_UTILS_PKGS}"
-
-FILES:${PN} = ""
-ALLOW_EMPTY:alsa-utils = "1"
-FILES:alsa-utils-alsabat     = "${bindir}/alsabat"
-FILES:alsa-utils-alsatplg    = "${bindir}/alsatplg"
-FILES:alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord ${bindir}/axfer"
-FILES:alsa-utils-amixer      = "${bindir}/amixer"
-FILES:alsa-utils-alsamixer   = "${bindir}/alsamixer"
-FILES:alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
-FILES:alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
-FILES:alsa-utils-aconnect    = "${bindir}/aconnect"
-FILES:alsa-utils-aseqnet     = "${bindir}/aseqnet"
-FILES:alsa-utils-iecset      = "${bindir}/iecset"
-FILES:alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d/90-alsa-restore.rules */*/udev/rules.d/90-alsa-restore.rules ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
-FILES:alsa-utils-aseqdump    = "${bindir}/aseqdump"
-FILES:alsa-utils-alsaloop    = "${bindir}/alsaloop"
-FILES:alsa-utils-alsaucm     = "${bindir}/alsaucm */udev/rules.d/89-alsa-ucm.rules */*/udev/rules.d/89-alsa-ucm.rules"
-
-SUMMARY:alsa-utils-alsabat      = "Command-line sound tester for ALSA sound card driver"
-SUMMARY:alsa-utils-alsatplg     = "Converts topology text files into binary format for kernel"
-SUMMARY:alsa-utils-aplay        = "Play (and record) sound files using ALSA"
-SUMMARY:alsa-utils-amixer       = "Command-line control for ALSA mixer and settings"
-SUMMARY:alsa-utils-alsamixer    = "ncurses-based control for ALSA mixer and settings"
-SUMMARY:alsa-utils-speakertest  = "ALSA surround speaker test utility"
-SUMMARY:alsa-utils-midi         = "Miscellaneous MIDI utilities for ALSA"
-SUMMARY:alsa-utils-aconnect     = "ALSA sequencer connection manager"
-SUMMARY:alsa-utils-aseqnet      = "Network client/server for ALSA sequencer"
-SUMMARY:alsa-utils-iecset       = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
-SUMMARY:alsa-utils-alsactl      = "Saves/restores ALSA-settings in /etc/asound.state"
-SUMMARY:alsa-utils-aseqdump     = "Shows the events received at an ALSA sequencer port"
-SUMMARY:alsa-utils-alsaloop     = "ALSA PCM loopback utility"
-SUMMARY:alsa-utils-alsaucm      = "ALSA Use Case Manager"
-
-RRECOMMENDS:alsa-utils-alsactl = "alsa-states"
-
-do_install() {
-	autotools_do_install
-
-	# We don't ship this here because it requires a dependency on bash.
-	# See alsa-utils-scripts_${PV}.bb
-	rm ${D}${sbindir}/alsaconf
-	rm ${D}${sbindir}/alsa-info.sh
-	rm -f ${D}${sbindir}/alsabat-test.sh
-
-	# If udev is disabled, we told configure to install the rules
-	# in /unwanted, so we can remove them now. If udev is enabled,
-	# then /unwanted won't exist and this will have no effect.
-	rm -rf ${D}/unwanted
-}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
index 3430288da4..6bb4e3158d 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.2.6.bb
@@ -1,2 +1,120 @@ 
-require alsa-utils.inc
+SUMMARY = "ALSA sound utilities"
+DESCRIPTION = "collection of small and often extremely powerful applications \
+designed to allow users to control the various parts of the ALSA system."
+HOMEPAGE = "http://www.alsa-project.org"
+BUGTRACKER = "http://alsa-project.org/main/index.php/Bug_Tracking"
+SECTION = "console/utils"
+# Some parts are GPL-2.0-or-later, some are GPL-2.0-only (e.g. axfer, alsactl)
+# so result is GPL-2.0-only
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
+                    file://alsactl/utils.c;beginline=3;endline=18;md5=96cc06a4cebe5eb7975688ffb0e65642"
+DEPENDS = "alsa-lib ncurses libsamplerate0"
 
+PACKAGECONFIG ??= "udev"
+
+# alsabat can be built also without fftw support (with reduced functionality).
+# It would be better to always enable alsabat, but provide an option for
+# enabling/disabling fftw. The configure script doesn't support that, however
+# (at least in any obvious way), so for now we only support alsabat with fftw
+# or no alsabat at all.
+PACKAGECONFIG[bat] = "--enable-bat,--disable-bat,fftwf"
+
+PACKAGECONFIG[udev] = "--with-udev-rules-dir=`pkg-config --variable=udevdir udev`/rules.d,--with-udev-rules-dir=/unwanted/rules.d,udev"
+PACKAGECONFIG[manpages] = "--enable-xmlto, --disable-xmlto, xmlto-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
+
+# alsa-utils specified in SRC_URI due to alsa-utils-scripts recipe
+SRC_URI = "https://www.alsa-project.org/files/pub/utils/alsa-utils-${PV}.tar.bz2"
+SRC_URI[sha256sum] = "6a1efd8a1f1d9d38e489633eaec1fffa5c315663b316cab804be486887e6145d"
+
+# On build machines with python-docutils (not python3-docutils !!) installed
+# rst2man (not rst2man.py) is detected and compile fails with
+# | make[1]: *** No rule to make target 'alsaucm.1', needed by 'all-am'.  Stop.
+# Avoid this by disabling expicitly
+EXTRA_OECONF = "--disable-rst2man"
+
+inherit autotools gettext pkgconfig manpages
+
+# This are all packages that we need to make. Also, the now empty alsa-utils
+# ipk depends on them.
+
+ALSA_UTILS_PKGS = "\
+             ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'alsa-utils-alsabat', '', d)} \
+             alsa-utils-alsamixer \
+             alsa-utils-alsatplg \
+             alsa-utils-midi \
+             alsa-utils-aplay \
+             alsa-utils-amixer \
+             alsa-utils-aconnect \
+             alsa-utils-iecset \
+             alsa-utils-speakertest \
+             alsa-utils-aseqnet \
+             alsa-utils-aseqdump \
+             alsa-utils-alsactl \
+             alsa-utils-alsaloop \
+             alsa-utils-alsaucm \
+             alsa-utils-scripts \
+            "
+
+PACKAGES += "${ALSA_UTILS_PKGS}"
+RDEPENDS:${PN} += "${ALSA_UTILS_PKGS}"
+
+FILES:${PN} = ""
+ALLOW_EMPTY:alsa-utils = "1"
+FILES:alsa-utils-alsabat     = "${bindir}/alsabat"
+FILES:alsa-utils-alsatplg    = "${bindir}/alsatplg"
+FILES:alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord ${bindir}/axfer"
+FILES:alsa-utils-amixer      = "${bindir}/amixer"
+FILES:alsa-utils-alsamixer   = "${bindir}/alsamixer"
+FILES:alsa-utils-speakertest = "${bindir}/speaker-test ${datadir}/sounds/alsa/ ${datadir}/alsa/speaker-test/"
+FILES:alsa-utils-midi        = "${bindir}/aplaymidi ${bindir}/arecordmidi ${bindir}/amidi"
+FILES:alsa-utils-aconnect    = "${bindir}/aconnect"
+FILES:alsa-utils-aseqnet     = "${bindir}/aseqnet"
+FILES:alsa-utils-iecset      = "${bindir}/iecset"
+FILES:alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d/90-alsa-restore.rules */*/udev/rules.d/90-alsa-restore.rules ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
+FILES:alsa-utils-aseqdump    = "${bindir}/aseqdump"
+FILES:alsa-utils-alsaloop    = "${bindir}/alsaloop"
+FILES:alsa-utils-alsaucm     = "${bindir}/alsaucm */udev/rules.d/89-alsa-ucm.rules */*/udev/rules.d/89-alsa-ucm.rules"
+FILES:alsa-utils-scripts     = "${sbindir}/alsaconf \
+               ${sbindir}/alsa-info.sh \
+               ${sbindir}/alsabat-test.sh \
+              "
+
+SUMMARY:alsa-utils-alsabat      = "Command-line sound tester for ALSA sound card driver"
+SUMMARY:alsa-utils-alsatplg     = "Converts topology text files into binary format for kernel"
+SUMMARY:alsa-utils-aplay        = "Play (and record) sound files using ALSA"
+SUMMARY:alsa-utils-amixer       = "Command-line control for ALSA mixer and settings"
+SUMMARY:alsa-utils-alsamixer    = "ncurses-based control for ALSA mixer and settings"
+SUMMARY:alsa-utils-speakertest  = "ALSA surround speaker test utility"
+SUMMARY:alsa-utils-midi         = "Miscellaneous MIDI utilities for ALSA"
+SUMMARY:alsa-utils-aconnect     = "ALSA sequencer connection manager"
+SUMMARY:alsa-utils-aseqnet      = "Network client/server for ALSA sequencer"
+SUMMARY:alsa-utils-iecset       = "ALSA utility for setting/showing IEC958 (S/PDIF) status bits"
+SUMMARY:alsa-utils-alsactl      = "Saves/restores ALSA-settings in /etc/asound.state"
+SUMMARY:alsa-utils-aseqdump     = "Shows the events received at an ALSA sequencer port"
+SUMMARY:alsa-utils-alsaloop     = "ALSA PCM loopback utility"
+SUMMARY:alsa-utils-alsaucm      = "ALSA Use Case Manager"
+SUMMARY:alsa-utils-scripts      = "Shell scripts that show help info and create ALSA configuration files"
+
+RRECOMMENDS:alsa-utils-alsactl = "alsa-states"
+
+do_install() {
+	autotools_do_install
+
+	install -d ${D}${sbindir}
+	install -m 0755 ${B}/alsaconf/alsaconf ${D}${sbindir}/
+	install -m 0755 ${S}/alsa-info/alsa-info.sh ${D}${sbindir}/
+	if ${@bb.utils.contains('PACKAGECONFIG', 'bat', 'true', 'false', d)}; then
+		install -m 0755 ${S}/bat/alsabat-test.sh ${D}${sbindir}/
+	fi
+
+	# If udev is disabled, we told configure to install the rules
+	# in /unwanted, so we can remove them now. If udev is enabled,
+	# then /unwanted won't exist and this will have no effect.
+	rm -rf ${D}/unwanted
+}
+
+
+PROVIDES = "alsa-utils-alsaconf alsa-utils-scripts"
+
+RDEPENDS:${PN}-scripts += "bash"