Patchwork alsa-utils: Move alsaconf to its own recipe

login
register
mail settings
Submitter Phil Blundell
Date April 25, 2013, 12:47 p.m.
Message ID <1366894048.14512.87.camel@phil-desktop.brightsign>
Download mbox | patch
Permalink /patch/48887/
State New
Headers show

Comments

Phil Blundell - April 25, 2013, 12:47 p.m.
18575b082a4042376fd1575465e69562dea04ddc added bash as a dependency of
alsa-utils-alsaconf so that the script interpreter will be available at
run time.  However, this has the undesirable side effect of making bash
be a build dependency for alsa-utils and, for those folks who don't need
alsaconf but do want some other part of alsa-utils, this cure is worse
than the original disease.

Fix this by moving alsaconf to a separate recipe so that the bash
dependency only applies when alsaconf is specifically requested.

Signed-off-by: Phil Blundell <philb@gnu.org>
---
 .../alsa/alsa-utils-alsaconf_1.0.26.bb             |   22 ++++++++++++++++++++
 meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb  |   12 +++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)
 create mode 100644 meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
Saul Wold - April 25, 2013, 8:58 p.m.
On 04/25/2013 05:47 AM, Phil Blundell wrote:
> 18575b082a4042376fd1575465e69562dea04ddc added bash as a dependency of
> alsa-utils-alsaconf so that the script interpreter will be available at
> run time.  However, this has the undesirable side effect of making bash
> be a build dependency for alsa-utils and, for those folks who don't need
> alsaconf but do want some other part of alsa-utils, this cure is worse
> than the original disease.
>
> Fix this by moving alsaconf to a separate recipe so that the bash
> dependency only applies when alsaconf is specifically requested.
>
> Signed-off-by: Phil Blundell <philb@gnu.org>
> ---
>   .../alsa/alsa-utils-alsaconf_1.0.26.bb             |   22 ++++++++++++++++++++
>   meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb  |   12 +++++++----
>   2 files changed, 30 insertions(+), 4 deletions(-)
>   create mode 100644 meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
>
> diff --git a/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb b/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
> new file mode 100644
> index 0000000..71de085
> --- /dev/null
> +++ b/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
> @@ -0,0 +1,22 @@
> +require alsa-utils_${PV}.bb
> +
> +THISDIR := "${@os.path.dirname(bb.data.getVar('FILE', d, True))}"
> +FILESPATH =. "${@base_set_filespath(["${THISDIR}/alsa-utils"], d)}:"
> +
> +PACKAGES = "${PN}"
> +RDEPENDS_${PN} += "bash"
> +
> +DESCRIPTION_${PN}     = "a bash script that creates ALSA configuration files"
> +FILES_${PN} = "${sbindir}/alsaconf"
> +
> +S = "${WORKDIR}/alsa-utils-${PV}"
> +
Do you mean to point into the alsa-utils actual workdir where alsaconf 
has been created?  Then you could also avoid unpacking.

> +do_configure() {
> +	# Nothing to configure
> +	:

By doing nothing here, the alsaconf does not get created since there is 
only an alsaconf.in

Sau!

> +}
> +
> +do_install() {
> +	install -d ${D}${sbindir}
> +	install -m 0755 ${S}/alsaconf/alsaconf ${D}${sbindir}/
> +}
> diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
> index 7fe3bac..e0bf755 100644
> --- a/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
> +++ b/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
> @@ -39,7 +39,6 @@ ALSA_UTILS_PKGS = "\
>                alsa-utils-speakertest \
>                alsa-utils-aseqnet \
>                alsa-utils-aseqdump \
> -             alsa-utils-alsaconf \
>                alsa-utils-alsactl \
>                alsa-utils-alsaloop \
>                alsa-utils-alsaucm \
> @@ -47,7 +46,6 @@ ALSA_UTILS_PKGS = "\
>
>   PACKAGES += "${ALSA_UTILS_PKGS}"
>   RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
> -RDEPENDS_alsa-utils-alsaconf += "bash"
>
>   FILES_${PN} = ""
>   FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
> @@ -60,7 +58,6 @@ FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
>   FILES_alsa-utils-iecset      = "${bindir}/iecset"
>   FILES_alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
>   FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
> -FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
>   FILES_alsa-utils-alsaloop    = "${bindir}/alsaloop"
>   FILES_alsa-utils-alsaucm     = "${bindir}/alsaucm"
>
> @@ -73,9 +70,16 @@ DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
>   DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
>   DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
>   DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
> -DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
>   DESCRIPTION_alsa-utils-alsaucm      = "ALSA Use Case Manager"
>
>   RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
>
>   ALLOW_EMPTY_alsa-utils = "1"
> +
> +do_install() {
> +	autotools_do_install
> +
> +	# We don't ship this here because it requires a dependency on bash.
> +	# See alsa-utils-alsaconf_${PV}.bb
> +	rm ${D}${sbindir}/alsaconf
> +}
>
Phil Blundell - April 26, 2013, 1:03 p.m.
On Thu, 2013-04-25 at 13:58 -0700, Saul Wold wrote:
> > +S = "${WORKDIR}/alsa-utils-${PV}"
> > +
> Do you mean to point into the alsa-utils actual workdir where alsaconf 
> has been created?  Then you could also avoid unpacking.

That wasn't really my intention.  I guess we could try to do that but I
don't think it's straightforward to guarantee that the alsa-utils
workdir actually exists at the right time.  We'd probably end up having
to do something like work-shared/gcc which seems like overkill.

> > +do_configure() {
> > +	# Nothing to configure
> > +	:
> 
> By doing nothing here, the alsaconf does not get created since there is 
> only an alsaconf.in

Hm, yes, you're quite right.  I had convinced myself that the generated
alsaconf was getting shipped in the tarball, but apparently I didn't
clean thoroughly enough before checking that.  I'll send a new patch
which corrects that.

thanks

p.
Richard Purdie - April 29, 2013, 1:54 p.m.
On Thu, 2013-04-25 at 13:47 +0100, Phil Blundell wrote:
> 18575b082a4042376fd1575465e69562dea04ddc added bash as a dependency of
> alsa-utils-alsaconf so that the script interpreter will be available at
> run time.  However, this has the undesirable side effect of making bash
> be a build dependency for alsa-utils and, for those folks who don't need
> alsaconf but do want some other part of alsa-utils, this cure is worse
> than the original disease.
> 
> Fix this by moving alsaconf to a separate recipe so that the bash
> dependency only applies when alsaconf is specifically requested.
> 
> Signed-off-by: Phil Blundell <philb@gnu.org>
> ---
>  .../alsa/alsa-utils-alsaconf_1.0.26.bb             |   22 ++++++++++++++++++++
>  meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb  |   12 +++++++----
>  2 files changed, 30 insertions(+), 4 deletions(-)
>  create mode 100644 meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb

I merged this however I'm not convinced its the right way to handle
this. I'm wondering about a PACKAGECONFIG which when turned off, deletes
alsaconf. I suspect that might be a nicer way to handle this kind of
issue going forward...

Cheers,

Richard
Phil Blundell - April 29, 2013, 2:03 p.m.
On Mon, 2013-04-29 at 14:54 +0100, Richard Purdie wrote:
> I merged this however I'm not convinced its the right way to handle
> this. I'm wondering about a PACKAGECONFIG which when turned off, deletes
> alsaconf. I suspect that might be a nicer way to handle this kind of
> issue going forward...

I guess the downside with PACKAGECONFIG is that you need to set it
manually: you can't just build an image which depends on
alsa-utils-alsaconf and have everything happen automatically.  

But from my own point of view, the main thing I care about is not
building bash and PACKAGECONFIG would indeed solve that problem.

p.
Koen Kooi - April 29, 2013, 2:50 p.m.
Op 29 apr. 2013, om 15:54 heeft Richard Purdie <rpurdie@rpsys.net> het volgende geschreven:

> On Thu, 2013-04-25 at 13:47 +0100, Phil Blundell wrote:
>> 18575b082a4042376fd1575465e69562dea04ddc added bash as a dependency of
>> alsa-utils-alsaconf so that the script interpreter will be available at
>> run time.  However, this has the undesirable side effect of making bash
>> be a build dependency for alsa-utils and, for those folks who don't need
>> alsaconf but do want some other part of alsa-utils, this cure is worse
>> than the original disease.
>> 
>> Fix this by moving alsaconf to a separate recipe so that the bash
>> dependency only applies when alsaconf is specifically requested.
>> 
>> Signed-off-by: Phil Blundell <philb@gnu.org>
>> ---
>> .../alsa/alsa-utils-alsaconf_1.0.26.bb             |   22 ++++++++++++++++++++
>> meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb  |   12 +++++++----
>> 2 files changed, 30 insertions(+), 4 deletions(-)
>> create mode 100644 meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
> 
> I merged this however I'm not convinced its the right way to handle
> this. I'm wondering about a PACKAGECONFIG which when turned off, deletes
> alsaconf. I suspect that might be a nicer way to handle this kind of
> issue going forward...

Or remove the bashisms from the script, can't be that many, if any.

Patch

diff --git a/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb b/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
new file mode 100644
index 0000000..71de085
--- /dev/null
+++ b/meta/recipes-multimedia/alsa/alsa-utils-alsaconf_1.0.26.bb
@@ -0,0 +1,22 @@ 
+require alsa-utils_${PV}.bb
+
+THISDIR := "${@os.path.dirname(bb.data.getVar('FILE', d, True))}"
+FILESPATH =. "${@base_set_filespath(["${THISDIR}/alsa-utils"], d)}:"
+
+PACKAGES = "${PN}"
+RDEPENDS_${PN} += "bash"
+
+DESCRIPTION_${PN}     = "a bash script that creates ALSA configuration files"
+FILES_${PN} = "${sbindir}/alsaconf"
+
+S = "${WORKDIR}/alsa-utils-${PV}"
+
+do_configure() {
+	# Nothing to configure
+	:
+}
+
+do_install() {
+	install -d ${D}${sbindir}
+	install -m 0755 ${S}/alsaconf/alsaconf ${D}${sbindir}/
+}
diff --git a/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb b/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
index 7fe3bac..e0bf755 100644
--- a/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
+++ b/meta/recipes-multimedia/alsa/alsa-utils_1.0.26.bb
@@ -39,7 +39,6 @@  ALSA_UTILS_PKGS = "\
              alsa-utils-speakertest \
              alsa-utils-aseqnet \
              alsa-utils-aseqdump \
-             alsa-utils-alsaconf \
              alsa-utils-alsactl \
              alsa-utils-alsaloop \
              alsa-utils-alsaucm \
@@ -47,7 +46,6 @@  ALSA_UTILS_PKGS = "\
 
 PACKAGES += "${ALSA_UTILS_PKGS}"
 RDEPENDS_${PN} += "${ALSA_UTILS_PKGS}"
-RDEPENDS_alsa-utils-alsaconf += "bash"
 
 FILES_${PN} = ""
 FILES_alsa-utils-aplay       = "${bindir}/aplay ${bindir}/arecord"
@@ -60,7 +58,6 @@  FILES_alsa-utils-aseqnet     = "${bindir}/aseqnet"
 FILES_alsa-utils-iecset      = "${bindir}/iecset"
 FILES_alsa-utils-alsactl     = "${sbindir}/alsactl */udev/rules.d ${systemd_unitdir} ${localstatedir}/lib/alsa ${datadir}/alsa/init/"
 FILES_alsa-utils-aseqdump    = "${bindir}/aseqdump"
-FILES_alsa-utils-alsaconf    = "${sbindir}/alsaconf"
 FILES_alsa-utils-alsaloop    = "${bindir}/alsaloop"
 FILES_alsa-utils-alsaucm     = "${bindir}/alsaucm"
 
@@ -73,9 +70,16 @@  DESCRIPTION_alsa-utils-midi         = "miscalleanous MIDI utilities for ALSA"
 DESCRIPTION_alsa-utils-aconnect     = "ALSA sequencer connection manager"
 DESCRIPTION_alsa-utils-aseqnet      = "network client/server on ALSA sequencer"
 DESCRIPTION_alsa-utils-alsactl      = "saves/restores ALSA-settings in /etc/asound.state"
-DESCRIPTION_alsa-utils-alsaconf     = "a bash script that creates ALSA configuration files"
 DESCRIPTION_alsa-utils-alsaucm      = "ALSA Use Case Manager"
 
 RRECOMMENDS_alsa-utils-alsactl = "alsa-states"
 
 ALLOW_EMPTY_alsa-utils = "1"
+
+do_install() {
+	autotools_do_install
+
+	# We don't ship this here because it requires a dependency on bash.
+	# See alsa-utils-alsaconf_${PV}.bb
+	rm ${D}${sbindir}/alsaconf
+}