The attached patches are needed for building systemimager on i386/ia64/x86_64 under RHEL3. Following changes have been made:
1: Makefile - mklibs call is cleaned up a bit. If /lib64 exists on the compiling system the target directory will be tmp/boel_binaries/lib64 , otherwise it will be tmp/boel_binaries/lib. - the order of -L arguments to mklibs was wrong. The default system libs should come at the end of the list, such that the self-compiled libraries in systemimager are picked up. 2: Makefile, initrd_source/initrd.rul and initrd_source/make.d/module-init-tools.rul - the "ifdef DEPMOD_BINARY block was never touched. As a consequence when one was building a 2.6 kernel on a system with 2.4 kernel (and modutils) installed, the 2.4 modutils were leading to wrong module dependencies. Switched to the latest module-init-tools release version. Using this instead of busybox and modutils! It works under 2.6 more reliably. Also replace in the Makefile the $(shell find ...) statemement. That one was plainly wrong because the $(shell ...) is interpreted when Makefile is read in, which is too early for the detection of the boel kernel version. 3: make.d/zlib.rul - as Bernard Li observed, with the new zlib version one doesn't need the "-fPIC" option any more. - still a "rm -f *.o" is needed between the two zlib library builds (static and shared). Please consider adding these into the systemimager SVN. We need the changes for enabling x86_64 support in OSCAR. Thanks, best regards, Erich
--- initrd_source/initrd.rul.old 2005-06-26 13:44:26.000000000 +0200 +++ initrd_source/initrd.rul 2005-07-11 16:22:40.000000000 +0200 @@ -65,13 +65,8 @@ # inodes needed on the initial RAM disk -BEF- ### BEGIN module utility decisions ### -MODULE_UTILS=modutils -ifeq ($(ARCH),i386) - MODULE_UTILS=busybox -endif -ifeq ($(ARCH),x86_64) - MODULE_UTILS=busybox -endif +# Need newer module-init-tools for 2.6.X kernels. +MODULE_UTILS=module-init-tools ifeq ($(ARCH),ppc64) MODULE_UTILS=busybox endif @@ -151,11 +146,18 @@ cp -a /lib/ld* $(INITRD_BUILD_DIR)/lib test ! -d /lib64 || cp -a /lib64/ld* $(INITRD_BUILD_DIR)/lib64 # Explicitly include more w/mklibs -L. -dawild- +ifeq ($(ARCH),x86_64) + ( cd $(INITRD_BUILD_DIR) && \ + $(PYTHON) $(INITRD_DIR)/mklibs -L /lib64:/usr/lib64:/lib:/usr/lib -v -d lib64 ./*bin/* ) + # copy libnss files as they are not automatically included + cp -a /lib64/libnss_dns* $(INITRD_BUILD_DIR)/lib64 +else ( cd $(INITRD_BUILD_DIR) && \ $(PYTHON) $(INITRD_DIR)/mklibs -L /lib:/usr/lib:/lib64:/usr/lib64 -v -d lib ./*bin/* ) # copy libnss files as they are not automatically included cp -a /lib/libnss_dns* $(INITRD_BUILD_DIR)/lib endif +endif # Strip 'em. -BEF- strip $(INITRD_BUILD_DIR)/bin/*
--- Makefile.old 2005-07-11 16:25:26.000000000 +0200 +++ Makefile 2005-07-11 16:20:50.000000000 +0200 @@ -143,7 +144,12 @@ # is userspace 64bit USERSPACE64 := 0 ifeq ($(ARCH),ia64) - USERSPACE64 :=1 + USERSPACE64 := 1 +endif + +USERSPACE64 := 0 +ifeq ($(ARCH),x86_64) + USERSPACE64 := 1 endif ifneq ($(BUILD_ARCH),) @@ -563,13 +569,10 @@ test ! -d /lib64 || cp -a /lib64/ld* $(BOEL_BINARIES_DIR)/lib64 endif -ifeq ($(USERSPACE64),1) + TGTLIBDIR=lib ; \ + test ! -d /lib64 || TGTLIBDIR=lib64 ; \ cd $(BOEL_BINARIES_DIR) \ - && $(PYTHON) $(TOPDIR)/initrd_source/mklibs -L /lib64:/usr/lib64:$(SRC_DIR)/$(PARTED_DIR)/libparted/.libs:/usr/kerberos/lib:$(SRC_DIR)/$(DISCOVER_DIR)/lib/.libs -v -d lib bin/* sbin/* -else - cd $(BOEL_BINARIES_DIR) \ - && $(PYTHON) $(TOPDIR)/initrd_source/mklibs -L /lib:/usr/lib:$(SRC_DIR)/$(PARTED_DIR)/libparted/.libs:/usr/kerberos/lib:$(SRC_DIR)/$(DISCOVER_DIR)/lib/.libs -v -d lib bin/* sbin/* -endif + && $(PYTHON) $(TOPDIR)/initrd_source/mklibs -L $(SRC_DIR)/$(PARTED_DIR)/libparted/.libs:$(SRC_DIR)/$(DISCOVER_DIR)/lib/.libs:$(SRC_DIR)/$(DEVMAPPER_DIR)/lib/ioctl:$(SRC_DIR)/$(E2FSPROGS_DIR)/lib:/lib64:/usr/lib64:/usr/kerberos/lib64:/lib:/usr/lib:/usr/kerberos/lib -v -d $$TGTLIBDIR bin/* sbin/* # # Include other files required by openssh that apparently aren't # picked up by mklibs for some reason. -BEF- @@ -587,9 +590,8 @@ # # The find command is to figure out the kernel version string # - $(DEPMOD_BINARY) -r -b $(BOEL_BINARIES_DIR) \ - $(shell find $(BOEL_BINARIES_DIR)/lib/modules -type d -mindepth 1 \ - -maxdepth 1 -printf "%f") + BOEL_KERNEL_VERSION=`find $(BOEL_BINARIES_DIR)/lib/modules -type d -mindepth 1 -maxdepth 1 -printf "%f"` ; \ + $(DEPMOD_BINARY) -b $(BOEL_BINARIES_DIR) $$BOEL_KERNEL_VERSION # endif #
--- initrd_source/make.d/module-init-tools.rul.old 2005-06-26 13:44:25.000000000 +0200 +++ initrd_source/make.d/module-init-tools.rul 2005-07-11 16:22:40.000000000 +0200 @@ -1,4 +1,4 @@ -MODULE_INIT_TOOLS_VERSION = 3.1-pre3 +MODULE_INIT_TOOLS_VERSION = 3.2-pre7 MODULE_INIT_TOOLS_TARBALL = module-init-tools-$(MODULE_INIT_TOOLS_VERSION).tar.bz2 MODULE_INIT_TOOLS_URL = http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/$(MODULE_INIT_TOOLS_TARBALL) MODULE_INIT_TOOLS_DIR = module-init-tools-$(MODULE_INIT_TOOLS_VERSION)
--- make.d/zlib.rul.old 2005-07-05 12:56:10.000000000 +0200 +++ make.d/zlib.rul 2005-07-11 16:22:40.000000000 +0200 @@ -1,13 +1,9 @@ -# -# $Id: zlib.rul 3162 2005-06-29 05:43:19Z finley $ -# - -ZLIB_VERSION := 1.1.4 -ZLIB_DIR := zlib-$(ZLIB_VERSION) -ZLIB_TARBALL := zlib-$(ZLIB_VERSION).tar.gz -ZLIB_URL := http://www.zlib.net/$(ZLIB_TARBALL) -ZLIB_PATCHES := $(shell ls $(PATCH_DIR)/zlib.*.patch 2>/dev/null | sort) -ZLIB_LIBRARY := $(SRC_DIR)/$(ZLIB_DIR)/libz.a +ZLIB_VERSION := 1.2.2 +ZLIB_DIR := zlib-$(ZLIB_VERSION) +ZLIB_TARBALL := zlib-$(ZLIB_VERSION).tar.gz +ZLIB_URL := http://www.zlib.net/$(ZLIB_TARBALL) +ZLIB_PATCHES := $(shell ls $(PATCH_DIR)/zlib.*.patch 2>/dev/null | sort) +ZLIB_LIBRARY := libz.a ALL_SOURCE += $(SRC_DIR)/$(ZLIB_TARBALL) @@ -23,6 +19,7 @@ # So, we just do it twice... ( cd $(SRC_DIR)/$(ZLIB_DIR) && ./configure) $(MAKE) -C $(SRC_DIR)/$(ZLIB_DIR) + ( cd $(SRC_DIR)/$(ZLIB_DIR) && rm -f *.o) ( cd $(SRC_DIR)/$(ZLIB_DIR) && ./configure --shared) $(MAKE) -C $(SRC_DIR)/$(ZLIB_DIR)
