The glib2 package fails to build when CONFIG_PKG_FORTIFY_SOURCE_1 or
CONFIG_PKG_FORTIFY_SOURCE_2 is enabled in the OpenWrt config:
In file included from ../glib/libcharset/localcharset.c:28:
/home/stijn/Development/OpenWrt/openwrt/staging_dir/toolchain-powerpc64_e5500_gcc-11.2.0_musl/include/fortify/stdio.h: In function 'snprintf':
/home/stijn/Development/OpenWrt/openwrt/staging_dir/toolchain-powerpc64_e5500_gcc-11.2.0_musl/include/fortify/stdio.h:101:9: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
101 | return __orig_snprintf(__s, __n, __f, __builtin_va_arg_pack());
| ^~~~~~
/home/stijn/Development/OpenWrt/openwrt/staging_dir/toolchain-powerpc64_e5500_gcc-11.2.0_musl/include/fortify/stdio.h: In function 'sprintf':
/home/stijn/Development/OpenWrt/openwrt/staging_dir/toolchain-powerpc64_e5500_gcc-11.2.0_musl/include/fortify/stdio.h:110:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
110 | __r = __orig_snprintf(__s, __b, __f, __builtin_va_arg_pack());
| ^~~
/home/stijn/Development/OpenWrt/openwrt/staging_dir/toolchain-powerpc64_e5500_gcc-11.2.0_musl/include/fortify/stdio.h:114:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
114 | __r = __orig_sprintf(__s, __f, __builtin_va_arg_pack());
| ^~~
Disable fortify source for the package as a workaround.
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
(cherry picked from commit 723c4360c4)
glib2's meson.build runs check cc.has_function('ngettext', args :
osx_ldflags) and, if successful, it never looks for non-libc libintl.
For musl and glibc this test is always successful.
glib2 unconditionally sets ENABLE_NLS, so during compile <libintl.h>
gets included always. But then we have a disconnect when the OpenWrt pkg
is being built with BUILD_NLS=y, because the <libintl.h> will be from
libintl-full but glib2 will not link to libintl-full.
With BUILD_NLS=n there's no problem, because the <libintl.h> will be
from libc.
In lieu of proper libintl detection in glib2's meson build, removing the
SED call from the Makefile together with the added patch sorts this out.
The SED call can be removed because when we force libintl-full use, the
meson build will put the necessary linker flag into the pkg-config file
itself.
Alpine Linux does something similar (see [1]), but they always force
the use of the external libintl. I assume they always go for full NLS
support.
[1] https://git.alpinelinux.org/aports/tree/main/glib/musl-libintl.patch
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
(cherry picked from commit 721838ddd4)
This reverts commit 0ce744202a.
Broken everywhere else. A better solution will need to be found.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(cherry picked from commit 2784618ab5)
Patch taken from Alpine Linux git. The problem is missing -lintl linker
flag. Placed in a separate directory as the patch interferes with the
way libintl is implemented in OpenWrt.
Also removed rpath hack, which is not needed as all libraries are
static.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Remove various outdated patches. No more uClibc and distutils is a
requirement.
Compile host libraries statically. Size is not a concern there. Also
avoids rpath hacks. Disable NLS as well. Avoids gettext dependencies.
Add libpcre dependency. Seems to be a requirement now.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Removed two now pointless patches as they were added as options.
Switch to AUTORELEASE for simplicity.
Update MESON_ARGS.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
These meson checks rely on being able to run binaries. Just force them
on. Reduces compiled size.
Refreshed patches.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
HOST_LDFLAGS are used in target builds with meson. Having -liconv is
necessary because of certain hosts that lack iconv in libc.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
This was causing massive buildbot failure.
The intent was to fix uClibc-ng and CONFIG_BUILD_NLS, but that ended up
breaking everything.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
The libintl check is broken in meson.build. Patched it and added back
the gettext build dependencies. Avoids the proxy-intl thing that glib2
likes to use.
Updated configure options.
Refreshed patches.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Install not only the gdbus-codegen program in the target staging dir,
but also the actual codegen module, so that the program is fully
usable by other packages that require it during build.
Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
Modified to use meson as upstream has abandoned autotools.
Added license information.
Cleaned up Makefile for consistency between packages.
Added hack to compile static libs.
Removed old patches and add new ones.
Removed BUILD_PARALLEL options. These are default with ninja/meson.
Removed gettext build dependencies. glib2 now includes its own solution.
Added patch to remove distutils host dependency.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Modified to use meson as upstream has abandoned autotools.
Added license information.
Cleaned up Makefile for consistency between packages.
Added hack to compile static libs.
Removed old patches and add new ones.
Removed BUILD_PARALLEL options. These are default with ninja/meson.
Removed gettext build dependencies. glib2 now includes its own solution.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
* allows building as mips16 (fixes broken mips16/32 mixed static linking)
* add some static link related flags to reduce target binary size
Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>
On GCC9, it throws a Wformat-nonliteral error. Unfortunately, there's no
easy was to fix it as it is fortify-headers where the warning ultimately
comes from.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Since commit d3f86c9cc3 tools/libelf
installs a pkgconfig file, which in turn is picked up during the glib2
host build. On the build bots the same occurs, although it so happens
that (sometimes?) libelf.h is not found and the host build fails. This
may be a timing issue specific to the build bots, as the header is in
fact installed by tools/libelf and I can't reproduce this here on my own
computer.
In any case, libelf (if detected) is only used by gresource. gresource
can be used without it. gresource is not used by OpenWrt's build system
(also not in openwrt/packages). So adding "--disable-libelf" to the host
configure args is not detrimental in any way and works around the issue
described above.
Resolves#9927
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
Adjusted some configure flags. Disabled some documentation to save on
build time. It seems to have also fixed parallel building on mvebu at
least.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Upstream commit "gio: Port GThreadedResolver to use res_nquery() to fix
thread-safety" introduced a bug that causes compile failures on
platforms where res_nquery is unavailable. This patch fixes that.
Bug 794606 has been opened upstream: https://bugzilla.gnome.org/show_bug.cgi?id=794606
On the OpenWrt buildbots this bug is visible during the arc_archs
compile:
gthreadedresolver.c: In function 'do_lookup_records':
gthreadedresolver.c:875:16: error: 'res' undeclared (first use in this function); did you mean '_res'?
res_nclose (&res);
^~~
_res
gthreadedresolver.c:875:16: note: each undeclared identifier is reported only once for each function it appears in
Makefile:3334: recipe for target 'libgio_2_0_la-gthreadedresolver.lo' failed
make[8]: *** [libgio_2_0_la-gthreadedresolver.lo] Error 1
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
Build depends refer to source package names, not binary package names.
In many cases, PKG_BUILD_DEPENDS simply duplicated runtime dependencies of
a source package's binary packages; as the corresponding source packages
are implicitly added as bulid dependencies, PKG_BUILD_DEPENDS can simply be
dropped in these cases. In the other cases, *_BUILD_DEPENDS is fixed to
refer to the correct source package name.
Dependency of mysql-server is adjusted from libncursesw to libncurses
(as libncursesw is a virtual package provided by libncurses), so the build
dependency on ncurses is emitted unconditionally.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>