Skip to contentSkip to conversation

libsidplay2: disable on powerpc64le

PATCH New Thomas Petazzoni 2 participants 3 messages Feb 28, 2017 – Mar 1, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 libsidplay2: disable on powerpc64le

The libsidplay2 package build system is completely broken. It is made of a top-level configure script, which calls into sub-configure scripts in sub-directories. However, since it doesn't use the autoconf provided AC_CONFIG_SUBDIRS() mechanism, an "autoreconf" doesn't recurse into the subdirectories.

Due to this, the aclocal.m4 in the libsidplay/ subdirectory doesn't get re-generated when Buildroot autoreconfs the package. However, since we patch one of the .m4 files in this subdirectory, when build time comes, the package notices its aclocal.m4 is older than one of the .m4 file, and triggers an automatic autoreconf.

Since <pkg>_AUTORECONF = YES is enabled, this automatic autoreconf works fine: host-autoconf and host-automake are available.

Expect that on powerpc64le, we patch the configure script itself to make it recognize powerpc64le. But this patching of the configure script itself gets overwritten by the automatic autoreconf at the beginning of the build step, causing the build to fail on powerpc64le.

Switching to AC_CONFIG_SUBDIRS() would allow to fix this, but libsidplay2 needs to pass custom configure options to each of the sub-configure scripts, something that AC_CONFIG_SUBDIRS() doesn't support. And since libsidplay2 upstream looks completely dead, the incentive to fix the whole thing is very limited.

Hence, even though powerpc64le is not to blame here, we take the simple solution of disabling this package on powerpc64le.

Fixes:

http://autobuild.buildroot.net/results/1f6a42bfece24e09c9c7f4078d549ec5c099c89d/

---
 package/kodi-audiodecoder-sidplay/Config.in | 1 +
 package/libsidplay2/Config.in               | 5 +++++
 2 files changed, 6 insertions(+)
package/kodi-audiodecoder-sidplay/Config.in +1 -0
index ae99afa..618e815 100644
@@ -2,6 +2,7 @@ config BR2_PACKAGE_KODI_AUDIODECODER_SIDPLAY
 	bool "kodi-audiodecoder-sidplay"
 	select BR2_PACKAGE_KODI_PLATFORM
 	select BR2_PACKAGE_LIBSIDPLAY2
+	depends on !BR2_powerpc64le # libsidplay2
 	help
 	  Sidplay decoder addon for Kodi
 
package/libsidplay2/Config.in +5 -0
index 5698367..1e9ff4c 100644
@@ -1,6 +1,10 @@
 config BR2_PACKAGE_LIBSIDPLAY2
 	bool "libsidplay2"
 	depends on BR2_INSTALL_LIBSTDCPP
+	# The configure patching logic needed for powerpc64le gets
+	# overwritten by the auto-autoreconf done by the package at
+	# the beginning of its build step, causing a build failure.
+	depends on !BR2_powerpc64le
 	help
 	  Sidplay 2 is the second in the Sidplay series originally developed by
 	  Michael Schwendt. This version is written by Simon White and is cycle
@@ -11,3 +15,4 @@ config BR2_PACKAGE_LIBSIDPLAY2
 
 comment "libsidplay2 needs a toolchain w/ C++"
 	depends on !BR2_INSTALL_LIBSTDCPP
+	depends on !BR2_powerpc64le
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 libsidplay2: disable on powerpc64le

Quoted 26 lines · Thomas Petazzoni

The libsidplay2 package build system is completely broken. It is made of a top-level configure script, which calls into sub-configure scripts in sub-directories. However, since it doesn't use the autoconf provided AC_CONFIG_SUBDIRS() mechanism, an "autoreconf" doesn't recurse into the subdirectories.

Due to this, the aclocal.m4 in the libsidplay/ subdirectory doesn't get re-generated when Buildroot autoreconfs the package. However, since we patch one of the .m4 files in this subdirectory, when build time comes, the package notices its aclocal.m4 is older than one of the .m4 file, and triggers an automatic autoreconf.

Since <pkg>_AUTORECONF = YES is enabled, this automatic autoreconf works fine: host-autoconf and host-automake are available.

Expect that on powerpc64le, we patch the configure script itself to make it recognize powerpc64le. But this patching of the configure script itself gets overwritten by the automatic autoreconf at the beginning of the build step, causing the build to fail on powerpc64le.

Switching to AC_CONFIG_SUBDIRS() would allow to fix this, but libsidplay2 needs to pass custom configure options to each of the sub-configure scripts, something that AC_CONFIG_SUBDIRS() doesn't support. And since libsidplay2 upstream looks completely dead, the incentive to fix the whole thing is very limited.

Quoted 8 lines

Hence, even though powerpc64le is not to blame here, we take the simple solution of disabling this package on powerpc64le.

Fixes:

http://autobuild.buildroot.net/results/1f6a42bfece24e09c9c7f4078d549ec5c099c89d/

I tried a few other approaches and all were dead ends too. I agree with this fix!

Cheers,
Sam.

#2 lore raw

PATCH 1/1 libsidplay2: disable on powerpc64le

In reply to Thomas Petazzoni

Hello,

Quoted 20 lines · Thomas Petazzoni

The libsidplay2 package build system is completely broken. It is made of a top-level configure script, which calls into sub-configure scripts in sub-directories. However, since it doesn't use the autoconf provided AC_CONFIG_SUBDIRS() mechanism, an "autoreconf" doesn't recurse into the subdirectories.

Due to this, the aclocal.m4 in the libsidplay/ subdirectory doesn't get re-generated when Buildroot autoreconfs the package. However, since we patch one of the .m4 files in this subdirectory, when build time comes, the package notices its aclocal.m4 is older than one of the .m4 file, and triggers an automatic autoreconf.

Since <pkg>_AUTORECONF = YES is enabled, this automatic autoreconf works fine: host-autoconf and host-automake are available.

Expect that on powerpc64le, we patch the configure script itself to make it recognize powerpc64le. But this patching of the configure script itself gets overwritten by the automatic autoreconf at the beginning of the build step, causing the build to fail on powerpc64le.

Quoted 8 lines

Switching to AC_CONFIG_SUBDIRS() would allow to fix this, but libsidplay2 needs to pass custom configure options to each of the sub-configure scripts, something that AC_CONFIG_SUBDIRS() doesn't support. And since libsidplay2 upstream looks completely dead, the incentive to fix the whole thing is very limited.

Hence, even though powerpc64le is not to blame here, we take the simple solution of disabling this package on powerpc64le.

In the end, I found a different approach, I posted a new patch at
https://patchwork.ozlabs.org/patch/734360/ and marked this one as superseded.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com