Skip to contentSkip to conversation

live555: fix library installation

PATCH New Luca Ceresoli 2 participants 5 messages Apr 16, 2015 – Apr 20, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 live555: fix library installation

The manual target installation commands optionally copies 3 executables that demonstrate the library usage, but do not the library itself.

This results in the following errors at runtime:

# openRTSP
openRTSP: can't load library 'libliveMedia.so.38'
# live555MediaServer
live555MediaServer: can't load library 'libliveMedia.so.38' # MPEG2TransportStreamIndexer MPEG2TransportStreamIndexer: can't load library 'libliveMedia.so.38' #

Tested with the following defconfig, which is basically qemu_arm_versatile_defconfig + C++ + live555:

BR2_arm=y
BR2_KERNEL_HEADERS_VERSION=y
BR2_DEFAULT_KERNEL_VERSION="4.0" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_0=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.0" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/arm-versatile/linux-4.0.config" BR2_LINUX_KERNEL_ZIMAGE=y
BR2_PACKAGE_LIVE555=y
BR2_TARGET_ROOTFS_EXT2=y

Fix the whole installation step by using the 'make install' step provided by the upstream package, similar to what was done in commit 44d15563c706dce48f84 for the staging installation.
After that, we just delete the optional executables that are not selected in configure.

Note: this change has the effect of installing all the test and demo executables produced by the live555 compilation process, and that were previously not copied. This increases the uncompressed target filesystem size by roughly 300 kB (tested for a 32-bit ARM target).

---
 package/live555/live555.mk | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
package/live555/live555.mk +7 -6
index cbd1e85..f5ff85f 100644
@@ -44,18 +44,19 @@ define LIVE555_BUILD_CMDS
 	$(MAKE) -C $(@D) all
 endef
 
-LIVE555_FILES_TO_INSTALL-y =
-LIVE555_FILES_TO_INSTALL-$(BR2_PACKAGE_LIVE555_OPENRTSP) += testProgs/openRTSP
-LIVE555_FILES_TO_INSTALL-$(BR2_PACKAGE_LIVE555_MEDIASERVER) += mediaServer/live555MediaServer
-LIVE555_FILES_TO_INSTALL-$(BR2_PACKAGE_LIVE555_MPEG2_INDEXER) += testProgs/MPEG2TransportStreamIndexer
+LIVE555_FILES_TO_REMOVE += $(if $(BR2_PACKAGE_LIVE555_OPENRTSP),,openRTSP)
+LIVE555_FILES_TO_REMOVE += $(if $(BR2_PACKAGE_LIVE555_MEDIASERVER),,live555MediaServer)
+LIVE555_FILES_TO_REMOVE += $(if $(BR2_PACKAGE_LIVE555_MPEG2_INDEXER),,MPEG2TransportStreamIndexer)
 
 define LIVE555_INSTALL_STAGING_CMDS
 	$(MAKE) DESTDIR=$(STAGING_DIR) -C $(@D) install
 endef
 
 define LIVE555_INSTALL_TARGET_CMDS
-	for i in $(LIVE555_FILES_TO_INSTALL-y); do \
-		$(INSTALL) -D -m 0755 $(@D)/$$i $(TARGET_DIR)/usr/bin/`basename $$i` || exit 1; \
+	$(MAKE) DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D) install
+	for i in $(LIVE555_FILES_TO_REMOVE); do \
+		echo "Removing $$i"; \
+		rm -f $(TARGET_DIR)/usr/bin/`basename $$i`; \
 	done
 endef
 
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 live555: fix library installation

Dear Luca Ceresoli,

Quoted 5 lines · Luca Ceresoli

The manual target installation commands optionally copies 3 executables that demonstrate the library usage, but do not the library itself.

This results in the following errors at runtime:

Quoted 7 lines

# openRTSP
openRTSP: can't load library 'libliveMedia.so.38'
# live555MediaServer
live555MediaServer: can't load library 'libliveMedia.so.38' # MPEG2TransportStreamIndexer MPEG2TransportStreamIndexer: can't load library 'libliveMedia.so.38' #

I understand the issue, but I'm not entirely happy with the solution. There are some options BR2_PACKAGE_LIVE555_OPENRTSP, BR2_PACKAGE_LIVE555_MEDIASERVER, etc. to control which tools to install. But with your new patch, regardless of the value of those options, a lot of other programs (tests and others) are installed. Which make the existing per-program options a bit weird/useless.

I would personally advocate for a simple removal of the per-program options, just install everything, and leave it to post-build scripts to clean up what's needed.

Thanks!

Thomas

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

PATCH 1/1 live555: fix library installation

Dear Thomas,

Quoted 23 lines · Thomas Petazzoni

Dear Luca Ceresoli,

Quoted 5 lines · Luca Ceresoli

The manual target installation commands optionally copies 3 executables that demonstrate the library usage, but do not the library itself.

This results in the following errors at runtime:

Quoted 7 lines

# openRTSP
openRTSP: can't load library 'libliveMedia.so.38'
# live555MediaServer
live555MediaServer: can't load library 'libliveMedia.so.38' # MPEG2TransportStreamIndexer MPEG2TransportStreamIndexer: can't load library 'libliveMedia.so.38' #

I understand the issue, but I'm not entirely happy with the solution. There are some options BR2_PACKAGE_LIVE555_OPENRTSP, BR2_PACKAGE_LIVE555_MEDIASERVER, etc. to control which tools to install. But with your new patch, regardless of the value of those options, a lot of other programs (tests and others) are installed. Which make the existing per-program options a bit weird/useless.

Quoted 3 lines

I would personally advocate for a simple removal of the per-program options, just install everything, and leave it to post-build scripts to clean up what's needed.

Wow, this means removing dozens of lines of code... great!

At first I just wanted to keep a sort of "backward compatibility", at least at the configure level. But I really prefer to simplify the package by installing everything.

I'm sending an update v2 patch.

BTW, there should be a simple way to skip installation of all executables, by tweaking the live555 makefiles. But I don't think it would be very nice to conditionally apply a patch based on config options. Do you agree?

Signature · 1 line
Luca
#3 lore raw

PATCH 1/1 live555: fix library installation

Dear Luca Ceresoli,

Quoted 3 lines · Luca Ceresoli

At first I just wanted to keep a sort of "backward compatibility", at least at the configure level. But I really prefer to simplify the package by installing everything.

Well, it's not really "backward compatible" because now you have 3 options to enable/disable the installation of 3 binaries, but the package nonetheless installs gazillions of other binaries. So it doesn't make much sense to have options just for those 3 binaries.

Quoted 4 lines

BTW, there should be a simple way to skip installation of all executables, by tweaking the live555 makefiles. But I don't think it would be very nice to conditionally apply a patch based on config options. Do you agree?

No, conditional patches are a no-go. This would only be possible if you had a patch that can always be applied, and then the .mk file calls "make install-all" or "make install-lib" or something like that. But if it's not planned in the live555 build system, I don't think it's really worth doing the change.

Thanks,

Thomas

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

PATCH 1/1 live555: fix library installation

Dear Thomas,

Quoted 4 lines · Thomas Petazzoni

Dear Luca Ceresoli,

On Mon, 20 Apr 2015 10:38:11 +0200, Luca Ceresoli wrote:

[...]

Quoted 10 lines
Quoted 4 lines

BTW, there should be a simple way to skip installation of all executables, by tweaking the live555 makefiles. But I don't think it would be very nice to conditionally apply a patch based on config options. Do you agree?

No, conditional patches are a no-go. This would only be possible if you had a patch that can always be applied, and then the .mk file calls "make install-all" or "make install-lib" or something like that. But if it's not planned in the live555 build system, I don't think it's really worth doing the change.

Sure, I never meant to make any such change in Buildroot. Instead, I'm probably putting such an ugly patch on my local repo, as it's a very simple way to save ~300 kB!

And BTW I don't think there's anything like that in the live555 plans.

Signature · 1 line
Luca