package/rtmpdump: Fix librtmp.pc defaulting to OpenSSL
PATCH v2 1/1 package/rtmpdump: Fix librtmp.pc defaulting to OpenSSL
rtmpdump has an optional dependency to OpenSSL or GnuTLS. The 'Requires: ' section of librtmp.pc defaults to "libssl,libcrypto" even when no crypto lib is available because the 'CRYPTO=' override in rtmpdump.mk does not force librtmp/Makefile, line 35, to not include these libraries. This breaks ffmpeg configure.
The bug occured using this defconfig
BR2_PACKAGE_FFMPEG=y
BR2_PACKAGE_FFMPEG_GPL=y
BR2_PACKAGE_FFMPEG_NONFREE=y
BR2_PACKAGE_FFMPEG_FFPLAY=y
BR2_PACKAGE_FFMPEG_FFSERVER=y
BR2_PACKAGE_FFMPEG_FFPROBE=y
BR2_PACKAGE_FFMPEG_AVRESAMPLE=y
BR2_PACKAGE_FFMPEG_POSTPROC=y
BR2_PACKAGE_RTMPDUMP=y
---
v2: Removed "Fixes" section because this patch addresses another bug.
package/rtmpdump/rtmpdump.mk | 4 ++++ 1 file changed, 4 insertions(+)
package/rtmpdump/rtmpdump.mk +4 -0
@@ -25,6 +25,10 @@ RTMPDUMP_CRYPTO = OPENSSL else # no crypto RTMPDUMP_CRYPTO = +define RTMPDUMP_FIX_MAKEFILE + $(SED) "s/CRYPTO=.*//g" $(@D)/librtmp/Makefile +endef +RTMPDUMP_POST_PATCH_HOOKS += RTMPDUMP_FIX_MAKEFILE endif RTMPDUMP_CFLAGS = $(TARGET_CFLAGS)
Signature · 1 line
2.6.1
PATCH v2 1/1 package/rtmpdump: Fix librtmp.pc defaulting to OpenSSL
Dear Bernd Kuhls,
Quoted 5 lines · Bernd Kuhls
package/rtmpdump/rtmpdump.mk +0
-0
package/rtmpdump/rtmpdump.mk RTMPDUMP_CRYPTO = OPENSSL · line 34
Quoted 10 lines
package/rtmpdump/rtmpdump.mk +4
-0@@ -25,6 +25,10 @@ RTMPDUMP_CRYPTO = OPENSSL else # no crypto RTMPDUMP_CRYPTO = +define RTMPDUMP_FIX_MAKEFILE + $(SED) "s/CRYPTO=.*//g" $(@D)/librtmp/Makefile +endef +RTMPDUMP_POST_PATCH_HOOKS += RTMPDUMP_FIX_MAKEFILE endif RTMPDUMP_CFLAGS = $(TARGET_CFLAGS)
This is the wrong fix. We are already passing CRYPTO= when no crypto library is used. The only problem is that we are only passing it at build time, while the .pc file is generated from .pc.in at install time. So all we need to do is pass CRYPTO also at install time. My proposal is therefore:
package/rtmpdump/rtmpdump.mk +8 -5
@@ -35,22 +35,25 @@ else RTMPDUMP_SHARED = "SHARED=" endif +RTMPDUMP_MAKE_FLAGS = \ + CRYPTO=$(RTMPDUMP_CRYPTO) \ + prefix=/usr \ + $(RTMPDUMP_SHARED) + define RTMPDUMP_BUILD_CMDS - $(MAKE) CRYPTO=$(RTMPDUMP_CRYPTO) \ - prefix=/usr \ + $(MAKE) $(RTMPDUMP_MAKE_FLAGS) \ XCFLAGS="$(RTMPDUMP_CFLAGS)" \ XLDFLAGS="$(TARGET_LDFLAGS)" \ CROSS_COMPILE="$(TARGET_CROSS)" \ - $(RTMPDUMP_SHARED) \ -C $(@D)/librtmp endef define RTMPDUMP_INSTALL_STAGING_CMDS - $(MAKE) prefix=/usr -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_SHARED) + $(MAKE) -C $(@D)/librtmp install DESTDIR=$(STAGING_DIR) $(RTMPDUMP_MAKE_FLAGS) endef define RTMPDUMP_INSTALL_TARGET_CMDS - $(MAKE) prefix=/usr -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_SHARED) + $(MAKE) -C $(@D)/librtmp install DESTDIR=$(TARGET_DIR) $(RTMPDUMP_MAKE_FLAGS) endef $(eval $(generic-package))
I tested it, it works for me. If it does for you, can you submit it as a proper patch?
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com