Commit 28cae902 authored by Thomas Petazzoni's avatar Thomas Petazzoni Committed by Peter Korsgaard
Browse files

bzip2: improve the packaging



Instead of doing some nasty SED tricks, use a patch that modifies the
bzip2 build system to make it a little bit nicer. Those SEDs were made
differently for the host and target packages, which is contrary to the
logic of not having any difference in the source tree between the host
build and the target build.

This commit also makes sure that bzip2.mk behaves properly in a
BR2_PREFER_STATIC_LIB=y context.

Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent adaff0df
Loading
Loading
Loading
Loading
+84 −0
Original line number Diff line number Diff line
Improve bzip2 build system

This patch makes a number of improvements to the bzip2 build system:

 * Remove the BIGFILE variable that was used to force largefile
   support. Now, the user of the Makefile is supposed to pass
   -D_FILE_OFFSET_BITS=64 when largefile support is desired.

 * Use override CFLAGS += so that additional CFLAGS can be passed on
   the command line.

 * Removed "forced" CFLAGS -O2, -g and -Winline. We don't want them by
   default, and want the build system to use its own ones.

 * When creating the symbolic links bzegrep, bzfgrep, bzless and
   bzcmp, don't link them to an absolute path, or they'll point to
   some path on the build machine.

 * Provide an install target for the shared library, which creates the
   appropriate symbolic links.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/Makefile
===================================================================
--- a/Makefile
+++ b/Makefile
@@ -20,8 +20,7 @@
 RANLIB=ranlib
 LDFLAGS=
 
-BIGFILES=-D_FILE_OFFSET_BITS=64
-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES)
+override CFLAGS += -Wall
 
 # Where you want it installed when you do 'make install'
 PREFIX=/usr/local
@@ -90,14 +89,14 @@
 	cp -f libbz2.a $(PREFIX)/lib
 	chmod a+r $(PREFIX)/lib/libbz2.a
 	cp -f bzgrep $(PREFIX)/bin/bzgrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
+	ln -s -f bzgrep $(PREFIX)/bin/bzegrep
+	ln -s -f bzgrep $(PREFIX)/bin/bzfgrep
 	chmod a+x $(PREFIX)/bin/bzgrep
 	cp -f bzmore $(PREFIX)/bin/bzmore
-	ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
+	ln -s -f bzmore $(PREFIX)/bin/bzless
 	chmod a+x $(PREFIX)/bin/bzmore
 	cp -f bzdiff $(PREFIX)/bin/bzdiff
-	ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
+	ln -s -f bzdiff $(PREFIX)/bin/bzcmp
 	chmod a+x $(PREFIX)/bin/bzdiff
 	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
 	chmod a+r $(PREFIX)/man/man1/bzgrep.1
Index: b/Makefile-libbz2_so
===================================================================
--- a/Makefile-libbz2_so
+++ b/Makefile-libbz2_so
@@ -23,8 +23,7 @@
 
 SHELL=/bin/sh
 CC=gcc
-BIGFILES=-D_FILE_OFFSET_BITS=64
-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES)
+override CFLAGS += -fpic -fPIC -Wall
 
 OBJS= blocksort.o  \
       huffman.o    \
@@ -37,8 +36,11 @@
 all: $(OBJS)
 	$(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.6 $(OBJS)
 	$(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.6
-	rm -f libbz2.so.1.0
-	ln -s libbz2.so.1.0.6 libbz2.so.1.0
+
+install:
+	install -m 0755 -D libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0.6
+	ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so
+	ln -sf libbz2.so.1.0.6 $(PREFIX)/lib/libbz2.so.1.0
 
 clean: 
 	rm -f $(OBJS) bzip2.o libbz2.so.1.0.6 libbz2.so.1.0 bzip2-shared
+31 −61
Original line number Diff line number Diff line
@@ -10,67 +10,45 @@ BZIP2_INSTALL_STAGING = YES
BZIP2_LICENSE = bzip2 license
BZIP2_LICENSE_FILES = LICENSE

define BZIP2_FIX_MAKEFILE
	$(SED) "s,ln \$$(,ln -snf \$$(,g" $(@D)/Makefile
	$(SED) "s,ln -s (lib.*),ln -snf \$$1; ln -snf libbz2.so.$(BZIP2_VERSION)) \
	    libbz2.so,g" $(@D)/Makefile-libbz2_so
	$(SED) "s:-O2:$(TARGET_CFLAGS):" $(@D)/Makefile
	$(SED) "s:-O2:$(TARGET_CFLAGS):" $(@D)/Makefile-libbz2_so
ifeq ($(BR2_PREFER_STATIC_LIB),)
define BZIP2_BUILD_SHARED_CMDS
	$(TARGET_MAKE_ENV)
		$(MAKE) -C $(@D) -f Makefile-libbz2_so $(TARGET_CONFIGURE_OPTS)
endef
endif

BZIP2_POST_PATCH_HOOKS += BZIP2_FIX_MAKEFILE

define BZIP2_NOLARGEFILE_FIX_MAKEFILE
	$(SED) "s,^BIGFILES,#BIGFILES,g" $(@D)/Makefile
	$(SED) "s,^BIGFILES,#BIGFILES,g" $(@D)/Makefile-libbz2_so
define BZIP2_BUILD_CMDS
	$(TARGET_MAKE_ENV)
		$(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover $(TARGET_CONFIGURE_OPTS)
	$(BZIP2_BUILD_SHARED_CMDS)
endef

ifneq ($(BR2_LARGEFILE),y)
BZIP2_POST_PATCH_HOOKS += BZIP2_NOLARGEFILE_FIX_MAKEFILE
ifeq ($(BR2_PREFER_STATIC_LIB),)
define BZIP2_INSTALL_STAGING_SHARED_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) \
		-f Makefile-libbz2_so PREFIX=$(STAGING_DIR)/usr -C $(@D) install
endef
endif

define BZIP2_BUILD_CMDS
	$(TARGET_MAKE_ENV) \
	$(MAKE) -C $(@D) -f Makefile-libbz2_so \
	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" AR="$(TARGET_AR)"
	$(TARGET_MAKE_ENV) \
	$(MAKE) -C $(@D) \
	CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" AR="$(TARGET_AR)" \
	libbz2.a bzip2 bzip2recover
define BZIP2_INSTALL_STAGING_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) \
		PREFIX=$(STAGING_DIR)/usr -C $(@D) install
	$(BZIP2_INSTALL_STAGING_SHARED_CMDS)
endef

define BZIP2_INSTALL_STAGING_CMDS
	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
	$(MAKE) PREFIX=$(STAGING_DIR)/usr -C $(@D) install
	$(INSTALL) -m 0755 -d $(STAGING_DIR)/usr/lib
	cp $(@D)/libbz2.so.$(BZIP2_VERSION) $(STAGING_DIR)/usr/lib/
	cp $(@D)/libbz2.a $(STAGING_DIR)/usr/lib/
	(cd $(STAGING_DIR)/usr/lib/; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so.1.0; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so.1; \
	)
ifeq ($(BR2_PREFER_STATIC_LIB),)
define BZIP2_INSTALL_TARGET_SHARED_CMDS
	$(TARGET_MAKE_ENV) $(MAKE) \
		-f Makefile-libbz2_so PREFIX=$(TARGET_DIR)/usr -C $(@D) install
endef
endif

# make sure busybox doesn't get overwritten by make install
define BZIP2_INSTALL_TARGET_CMDS
	rm -f $(addprefix $(TARGET_DIR)/usr/bin/,bzip2 bunzip2 bzcat)
	$(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \
	$(MAKE) PREFIX=$(TARGET_DIR)/usr -C $(@D) install
	cp $(@D)/libbz2.so.$(BZIP2_VERSION) $(TARGET_DIR)/usr/lib/
	(cd $(TARGET_DIR)/usr/lib; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so.1.0; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so.1; \
		ln -snf libbz2.so.$(BZIP2_VERSION) libbz2.so; \
	)
	(cd $(TARGET_DIR)/usr/bin; \
		ln -snf bzip2 bunzip2; \
		ln -snf bzip2 bzcat; \
		ln -snf bzdiff bzcmp; \
		ln -snf bzmore bzless; \
		ln -snf bzgrep bzegrep; \
		ln -snf bzgrep bzfgrep; \
	)
	$(TARGET_MAKE_ENV) $(MAKE) \
		PREFIX=$(TARGET_DIR)/usr -C $(@D) install
	$(BZIP2_INSTALL_TARGET_SHARED_CMDS)
endef

define BZIP2_CLEAN_CMDS
@@ -83,19 +61,11 @@ define BZIP2_CLEAN_CMDS
	-$(MAKE) -C $(@D) clean
endef

define HOST_BZIP2_FIX_MAKEFILE
	$(SED) "s,ln \$$(,ln -snf \$$(,g" $(@D)/Makefile
	$(SED) "s,ln -s (lib.*),ln -snf \$$1; ln -snf libbz2.so.$(BZIP2_VERSION) \
	    libbz2.so,g" $(@D)/Makefile-libbz2_so
	$(SED) "s:-O2:$(HOST_CFLAGS):" $(@D)/Makefile
	$(SED) "s:-O2:$(HOST_CFLAGS):" $(@D)/Makefile-libbz2_so
endef

HOST_BZIP2_POST_PATCH_HOOKS += HOST_BZIP2_FIX_MAKEFILE

define HOST_BZIP2_BUILD_CMDS
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) -f Makefile-libbz2_so
	$(HOST_MAKE_ENV) $(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover
	$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \
		$(MAKE) -C $(@D) -f Makefile-libbz2_so
	$(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) \
		$(MAKE) -C $(@D) libbz2.a bzip2 bzip2recover
endef

define HOST_BZIP2_INSTALL_CMDS