Skip to contentSkip to conversation

package/rtmpdump: Fix librtmp.pc defaulting to OpenSSL

PATCH New Bernd Kuhls 2 participants 2 messages Oct 15, 2015

lore
Share & tools
lore
#0 lore raw

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
index 613f1cd..5709cdb 100644
@@ -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
#1 lore raw

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
index 613f1cd..5709cdb 100644

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
index 613f1cd..a59ec9c 100644
@@ -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