mirror of
https://github.com/openwrt/packages.git
synced 2026-10-14 03:27:03 +04:00
tvheadend: require GNU libiconv and drop the iconv self-test patch
tvheadend has no transliteration of its own. It asks iconv for
"<charset>//TRANSLIT//IGNORE", a GNU extension that musl does not
implement. Converting "ŽluťoučkýKůň" to ASCII on mpc85xx/p2020
(Turris 1.x), musl 1.2.6:
charset musl GNU libiconv
ASCII//TRANSLIT//IGNORE EINVAL "Zlutouck'yKun"
ASCII//TRANSLIT EINVAL "Zlutouck'yKun"
ASCII "*lu*ou*k*K**" EILSEQ
050-iconv-test-continue.patch removed the abort() from the startup
self-test that reports this, so the package could be built against
musl's iconv. That silenced the check without fixing anything:
intlconv_utf8() still returns -EIO, so cleanup_filename() in
src/dvr/dvr_rec.c cannot build a recording file name and
pvr_generate_filename() fails. The charset cannot be avoided either,
because intlconv_filesystem_charset() returns "ASCII" unless $LANG
names a UTF-8 locale, which OpenWrt does not set by default.
Depend on libiconv-full instead of $(ICONV_DEPENDS), which pulls it in
only when BUILD_NLS is set, and point the compiler at its staging prefix
when nls.mk has not already done so. The binary then links against
libiconv.so.2, the self-test passes and the patch can be dropped.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
(cherry picked from commit f2c8300e25)
This commit is contained in:
2 files changed
+10
-14
No files matched your search
@@ -20,6 +20,15 @@ PKG_BUILD_DEPENDS:=gettext-full/host
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/nls.mk
|
||||
|
||||
# tvheadend needs iconv //TRANSLIT to build recording file names, which musl
|
||||
# does not implement, so always build against GNU libiconv.
|
||||
# With BUILD_NLS set, nls.mk already adds these for the same prefix.
|
||||
ifneq ($(CONFIG_BUILD_NLS),y)
|
||||
ICONV_FULL_PREFIX:=$(STAGING_DIR)/usr/lib/libiconv-full
|
||||
TARGET_CFLAGS += -I$(ICONV_FULL_PREFIX)/include
|
||||
TARGET_LDFLAGS += -L$(ICONV_FULL_PREFIX)/lib -Wl,-rpath-link=$(ICONV_FULL_PREFIX)/lib
|
||||
endif
|
||||
|
||||
define Package/tvheadend
|
||||
SECTION:=multimedia
|
||||
CATEGORY:=Multimedia
|
||||
@@ -32,7 +41,7 @@ define Package/tvheadend
|
||||
+librt \
|
||||
+libffi \
|
||||
+libopenssl \
|
||||
$(ICONV_DEPENDS) \
|
||||
+libiconv-full \
|
||||
+zlib \
|
||||
+TVHEADEND_AVAHI_SUPPORT:libavahi-client \
|
||||
+TVHEADEND_REGEX_PCRE2:libpcre2 \
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
--- a/src/intlconv.c
|
||||
+++ b/src/intlconv.c
|
||||
@@ -37,9 +37,8 @@ intlconv_test( void )
|
||||
(strcmp(s, "ZlutouckyKun") &&
|
||||
strcmp(s, "Zlutouck'yKun") &&
|
||||
strcmp(s, "?lu?ou?k?K??"))) {
|
||||
- tvherror(LS_MAIN, "iconv() routine is not working properly (%s), aborting!", s);
|
||||
+ tvherror(LS_MAIN, "iconv() routine is not working properly (%s)", s);
|
||||
tvh_safe_usleep(2000000);
|
||||
- abort();
|
||||
}
|
||||
free(s);
|
||||
}
|
||||
Reference in new issue
Block a user