[LEDE-DEV] [PATCH 1/5] tools/zlib: move zlib build to tools

Hauke Mehrtens hauke at hauke-m.de
Thu Apr 19 15:15:39 PDT 2018


On 04/18/2018 12:24 AM, Koen Vandeputte wrote:
> 
> 
> On 17-04-18 19:16, Lucian Cristian wrote:
>> On 16.04.2018 01:53, Hauke Mehrtens wrote:
>>> This allows us to link the other tools against our libz and we do not
>>> need the system zlib any more.
>>>
>>> Only the static linked library is copied to the staging directory so we
>>> have a statically linked library on all systems and not only on Linux.
>>> This also adds the new dependencies of the packages which are depending
>>> on zlib.
>>>
>>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>> ---
>>>   include/prereq-build.mk                         |  5 ----
>>>   package/libs/zlib/Makefile                      |  2 --
>>>   tools/Makefile                                  | 14 +++++----
>>>   tools/lzma-old/Makefile                         |  2 ++
>>>   tools/lzma-old/patches/120-add-cflags.patch     | 11 +++++++
>>>   tools/make-ext4fs/Makefile                      |  8 +----
>>>   tools/make-ext4fs/patches/100-add-ldflags.patch | 11 +++++++
>>>   tools/squashfs4/Makefile                        |  2 +-
>>>   tools/zlib/Makefile                             | 40
>>> +++++++++++++++++++++++++
>>>   9 files changed, 75 insertions(+), 20 deletions(-)
>>>   create mode 100644 tools/lzma-old/patches/120-add-cflags.patch
>>>   create mode 100644 tools/make-ext4fs/patches/100-add-ldflags.patch
>>>   create mode 100644 tools/zlib/Makefile
>>>
>>> diff --git a/include/prereq-build.mk b/include/prereq-build.mk
>>> index 6917716342..5b9a7e049d 100644
>>> --- a/include/prereq-build.mk
>>> +++ b/include/prereq-build.mk
>>> @@ -76,11 +76,6 @@ else
>>>     zlib_link_flags := -lz
>>>   endif
>>>   -$(eval $(call TestHostCommand,zlib, \
>>> -    Please install a static zlib. (Missing libz.a or zlib.h), \
>>> -    echo 'int main(int argc, char **argv) { gzdopen(0, "rb"); return
>>> 0; }' | \
>>> -        gcc -include zlib.h -x c -o $(TMP_DIR)/a.out -
>>> $(zlib_link_flags)))
>>> -
>>>   $(eval $(call TestHostCommand,perl-thread-queue, \
>>>       Please install the Perl Thread::Queue module, \
>>>       perl -MThread::Queue -e 1))
>>> diff --git a/package/libs/zlib/Makefile b/package/libs/zlib/Makefile
>>> index a7c61f7dd0..4a2a0e53b0 100644
>>> --- a/package/libs/zlib/Makefile
>>> +++ b/package/libs/zlib/Makefile
>>> @@ -21,7 +21,6 @@ PKG_CPE_ID:=cpe:/a:gnu:zlib
>>>     PKG_CONFIG_DEPENDS:= CONFIG_ZLIB_OPTIMIZE_SPEED
>>>   -include $(INCLUDE_DIR)/host-build.mk
>>>   include $(INCLUDE_DIR)/package.mk
>>>   include $(INCLUDE_DIR)/cmake.mk
>>>   @@ -95,6 +94,5 @@ define Package/zlib-dev/install
>>>         $(1)/usr/lib/pkgconfig/
>>>   endef
>>>   -$(eval $(call HostBuild))
>>>   $(eval $(call BuildPackage,zlib))
>>>   $(eval $(call BuildPackage,zlib-dev))
>>> diff --git a/tools/Makefile b/tools/Makefile
>>> index 50bd552d75..8dfab9892b 100644
>>> --- a/tools/Makefile
>>> +++ b/tools/Makefile
>>> @@ -22,7 +22,7 @@ ifneq
>>> ($(CONFIG_SDK)$(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_b43legacy-firmwar
>>>
>>>   endif
>>>     tools-$(BUILD_TOOLCHAIN) += gmp mpfr mpc libelf expat
>>> -tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs
>>> +tools-y += m4 libtool autoconf automake flex bison pkg-config mklibs
>>> zlib
>>>   tools-y += sstrip make-ext4fs e2fsprogs mtd-utils mkimage
>>>   tools-y += firmware-utils patch-image quilt padjffs2
>>>   tools-y += mm-macros missing-macros cmake scons bc findutils
>>> gengetopt patchelf
>>> @@ -43,16 +43,16 @@ $(curdir)/bison/compile := $(curdir)/flex/compile
>>>   $(curdir)/flex/compile := $(curdir)/libtool/compile
>>>   $(curdir)/libtool/compile := $(curdir)/m4/compile
>>> $(curdir)/autoconf/compile $(curdir)/automake/compile
>>> $(curdir)/missing-macros/compile
>>>   $(curdir)/squashfs/compile := $(curdir)/lzma-old/compile
>>> -$(curdir)/squashfs4/compile := $(curdir)/xz/compile
>>> +$(curdir)/squashfs4/compile := $(curdir)/xz/compile
>>> $(curdir)/zlib/compile
>>>   $(curdir)/quilt/compile := $(curdir)/autoconf/compile
>>> $(curdir)/findutils/compile
>>>   $(curdir)/autoconf/compile := $(curdir)/m4/compile
>>>   $(curdir)/automake/compile := $(curdir)/m4/compile
>>> $(curdir)/autoconf/compile $(curdir)/pkg-config/compile
>>> $(curdir)/xz/compile
>>>   $(curdir)/gmp/compile := $(curdir)/libtool/compile
>>>   $(curdir)/mpc/compile := $(curdir)/mpfr/compile $(curdir)/gmp/compile
>>>   $(curdir)/mpfr/compile := $(curdir)/gmp/compile
>>> -$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile
>>> +$(curdir)/mtd-utils/compile := $(curdir)/e2fsprogs/compile
>>> $(curdir)/zlib/compile
>>>   $(curdir)/mklibs/compile := $(curdir)/libtool/compile
>>> -$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile
>>> +$(curdir)/qemu/compile := $(curdir)/e2fsprogs/compile
>>> $(curdir)/zlib/compile
>>>   $(curdir)/upslug2/compile := $(curdir)/libtool/compile
>>>   $(curdir)/mm-macros/compile := $(curdir)/libtool/compile
>>>   $(curdir)/missing-macros/compile := $(curdir)/autoconf/compile
>>> @@ -69,8 +69,12 @@ $(curdir)/patchelf/compile :=
>>> $(curdir)/libtool/compile
>>>   $(curdir)/dosfstools/compile := $(curdir)/autoconf/compile
>>> $(curdir)/automake/compile
>>>   $(curdir)/libressl/compile := $(curdir)/pkg-config/compile
>>>   $(curdir)/mkimage/compile += $(curdir)/libressl/compile
>>> -$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile
>>> +$(curdir)/firmware-utils/compile += $(curdir)/libressl/compile
>>> $(curdir)/zlib/compile
>>>   $(curdir)/cmake/compile += $(curdir)/libressl/compile
>>> +$(curdir)/zlib/compile := $(curdir)/cmake/compile
>>> +$(curdir)/wrt350nv2-builder/compile := $(curdir)/zlib/compile
>>> +$(curdir)/lzma-old/compile := $(curdir)/zlib/compile
>>> +$(curdir)/make-ext4fs/compile := $(curdir)/zlib/compile
>>>     ifneq ($(HOST_OS),Linux)
>>>     tools-y += coreutils
>>> diff --git a/tools/lzma-old/Makefile b/tools/lzma-old/Makefile
>>> index 5982eab5db..5204127a80 100644
>>> --- a/tools/lzma-old/Makefile
>>> +++ b/tools/lzma-old/Makefile
>>> @@ -21,7 +21,9 @@ LIB_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Lib
>>>   ALONE_DIR=$(HOST_BUILD_DIR)/C/7zip/Compress/LZMA_Alone
>>>     define Host/Compile
>>> +    +$(HOST_MAKE_VARS) \
>>>       $(MAKE) -C $(LIB_DIR)
>>> +    +$(HOST_MAKE_VARS) \
>>>       $(MAKE) -f makefile.gcc -C $(ALONE_DIR)
>>>   endef
>>>   diff --git a/tools/lzma-old/patches/120-add-cflags.patch
>>> b/tools/lzma-old/patches/120-add-cflags.patch
>>> new file mode 100644
>>> index 0000000000..9022e7cd27
>>> --- /dev/null
>>> +++ b/tools/lzma-old/patches/120-add-cflags.patch
>>> @@ -0,0 +1,11 @@
>>> +--- a/C/7zip/Compress/LZMA_Lib/makefile
>>> ++++ b/C/7zip/Compress/LZMA_Lib/makefile
>>> +@@ -2,7 +2,7 @@ PROG = liblzma.a
>>> + CXX = g++ -O3 -Wall
>>> + AR = ar
>>> + RM = rm -f
>>> +-CFLAGS = -c  -I ../../../
>>> ++CFLAGS += -c  -I ../../../
>>> +
>>> + OBJS = \
>>> +   ZLib.o \
>>> diff --git a/tools/make-ext4fs/Makefile b/tools/make-ext4fs/Makefile
>>> index f140101c8e..97f9e6369c 100644
>>> --- a/tools/make-ext4fs/Makefile
>>> +++ b/tools/make-ext4fs/Makefile
>>> @@ -17,13 +17,7 @@
>>> PKG_MIRROR_HASH:=d7ccd5e426b1d15331ff000a37dc15161f6eef594453e970fd584fcde5a2507
>>>
>>>     include $(INCLUDE_DIR)/host-build.mk
>>>   -ifeq ($(HOST_OS),Linux)
>>> - MAKE_STATIC := STATIC=1
>>> -endif
>>> -
>>> -define Host/Compile
>>> -    $(MAKE) -C $(HOST_BUILD_DIR) make_ext4fs $(MAKE_STATIC)
>>> -endef
>>> +HOST_MAKE_FLAGS += STATIC=1
>>>     define Host/Install
>>>       $(INSTALL_BIN) $(HOST_BUILD_DIR)/make_ext4fs
>>> $(STAGING_DIR_HOST)/bin/
>>> diff --git a/tools/make-ext4fs/patches/100-add-ldflags.patch
>>> b/tools/make-ext4fs/patches/100-add-ldflags.patch
>>> new file mode 100644
>>> index 0000000000..d9ce47bb80
>>> --- /dev/null
>>> +++ b/tools/make-ext4fs/patches/100-add-ldflags.patch
>>> @@ -0,0 +1,11 @@
>>> +--- a/Makefile
>>> ++++ b/Makefile
>>> +@@ -27,7 +27,7 @@ OBJ := \
>>> +     $(CC) $(CFLAGS) -c -o $@ $^
>>> +
>>> + make_ext4fs: $(OBJ) libsparse/libsparse.a
>>> +-    $(CC) -o $@ $^ $(ZLIB)
>>> ++    $(CC) $(LDFLAGS)-o $@ $^ $(ZLIB)
>>> +
>>> + libsparse/libsparse.a:
>>> +     $(MAKE) -C libsparse/ libsparse.a
>>> diff --git a/tools/squashfs4/Makefile b/tools/squashfs4/Makefile
>>> index e9e2b7ca9a..409b1b5a23 100644
>>> --- a/tools/squashfs4/Makefile
>>> +++ b/tools/squashfs4/Makefile
>>> @@ -20,8 +20,8 @@
>>> HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/squashfs$(PKG_VERSION)
>>>   include $(INCLUDE_DIR)/host-build.mk
>>>     define Host/Compile
>>> +    +$(HOST_MAKE_VARS) \
>>>       $(MAKE) -C $(HOST_BUILD_DIR)/squashfs-tools \
>>> -        CC="$(HOSTCC)" \
>>>           XZ_SUPPORT=1 \
>>>           LZMA_XZ_SUPPORT=1 \
>>>           XATTR_SUPPORT= \
>>> diff --git a/tools/zlib/Makefile b/tools/zlib/Makefile
>>> new file mode 100644
>>> index 0000000000..2746d95b72
>>> --- /dev/null
>>> +++ b/tools/zlib/Makefile
>>> @@ -0,0 +1,40 @@
>>> +#
>>> +# Copyright (C) 2006-2013 OpenWrt.org
>>> +#
>>> +# This is free software, licensed under the GNU General Public
>>> License v2.
>>> +# See /LICENSE for more information.
>>> +#
>>> +
>>> +include $(TOPDIR)/rules.mk
>>> +
>>> +PKG_NAME:=zlib
>>> +PKG_VERSION:=1.2.11
>>> +PKG_RELEASE:=1
>>> +
>>> +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>>> +PKG_SOURCE_URL:=@SF/libpng http://www.zlib.net
>>> +PKG_HASH:=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
>>>
>>> +
>>> +PKG_LICENSE:=Zlib
>>> +PKG_LICENSE_FILES:=README
>>> +PKG_CPE_ID:=cpe:/a:gnu:zlib
>>> +
>>> +include $(INCLUDE_DIR)/host-build.mk
>>> +include $(INCLUDE_DIR)/cmake.mk
>>> +
>>> +
>>> +define Host/Install
>>> +    $(CP) $(HOST_BUILD_DIR)/libz.a $(STAGING_DIR_HOST)/lib/
>>> +    $(CP) $(HOST_BUILD_DIR)/zconf.h $(STAGING_DIR_HOST)/include/
>>> +    $(CP) $(HOST_BUILD_DIR)/zlib.h $(STAGING_DIR_HOST)/include/
>>> +    $(CP) $(HOST_BUILD_DIR)/zlib.pc $(STAGING_DIR_HOST)/lib/pkgconfig/
>>> +endef
>>> +
>>> +define Host/Clean
>>> +    rm -f $(STAGING_DIR_HOST)/lib/libz.a
>>> +    rm -f $(STAGING_DIR_HOST)/include/zconf.h
>>> +    rm -f $(STAGING_DIR_HOST)/include/zlib.h
>>> +    rm -f $(STAGING_DIR_HOST)/lib/pkgconfig//zlib.pc
>>> +endef
>>> +
>>> +$(eval $(call HostBuild))
>>
>> I tested the patch series because I have a linking problem with zlib
>> and python an I wanted to see if this fixes it (it does not) but on
>> i686 I have this error
>>
>>
>> make[8]: Entering directory
>> '/home/build/proxy/build_dir/hostpkg/glib-2.56.1/gio'
>>   CCLD     libgio-2.0.la
>> /usr/bin/ld: /home/build/proxy/staging_dir/host/lib/libz.a(deflate.o):
>> relocation R_X86_64_PC32 against symbol `_length_code' can not be used
>> when making a shared object; recompile with -fPIC
>> /usr/bin/ld: final link failed: Bad value
>> collect2: error: ld returned 1 exit status
>> Makefile:2183: recipe for target 'libgio-2.0.la' failed
>>
>>
> Hi Hauke,
> 
> Probably related to the above?
> 
> When I'm building using this patch series, I'm getting a python build
> error.
> Please see attached logfile.
> Reverting the series fixes the build issue.
> 
> 
> Do note that I'm also using my own config, which adds all feeds and uses
> a lot more packages than default OpenWrt.
> 
> Thanks,
> 
> Koen

I am not able to reproduce this problem and it looks strange because you
have some compile problems related to OpenSSL functions.

Can you provide me with a configuration which triggers this problem
please? Are you only using these 5 patches on top of master or do you
use also some other patches on top of master?

Hauke



More information about the Lede-dev mailing list