diff options
author | Linux User <wbx@linux.(none)> | 2009-10-01 20:26:05 +0200 |
---|---|---|
committer | Linux User <wbx@linux.(none)> | 2009-10-01 20:26:05 +0200 |
commit | 8759fa511c0464efaea926dcb1271c0ca95e4eb6 (patch) | |
tree | 525fc96ed62d206153794068a2f43116a095dbbe | |
parent | 22bb527c786d6631eec13f2328da05437a1e46b5 (diff) |
abstract package backend, add perl
-rw-r--r-- | mk/build.mk | 13 | ||||
-rw-r--r-- | mk/kernel-build.mk | 16 | ||||
-rw-r--r-- | mk/kernel.mk | 9 | ||||
-rw-r--r-- | mk/package.mk | 23 | ||||
-rw-r--r-- | mk/vars.mk | 23 | ||||
-rw-r--r-- | package/Config.in | 1 | ||||
-rw-r--r-- | package/Makefile | 3 | ||||
-rw-r--r-- | package/busybox/config/coreutils/Config.in | 4 | ||||
-rw-r--r-- | package/perl/Config.in | 8 | ||||
-rw-r--r-- | package/perl/Makefile | 34 | ||||
-rwxr-xr-x | scripts/tarpkg | 24 | ||||
-rw-r--r-- | target/Config.in | 7 | ||||
-rw-r--r-- | target/native/Makefile | 1 | ||||
-rw-r--r-- | target/native/device.mk | 2 |
14 files changed, 125 insertions, 43 deletions
diff --git a/mk/build.mk b/mk/build.mk index d4cfab8c8..c3795b404 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -16,7 +16,9 @@ noconfig_targets:= menuconfig \ _mconfig \ tags -MAKECLEAN_SYMBOLS= ADK_TARGET_LIB_UCLIBC ADK_TARGET_LIB_GLIBC ADK_SSP \ +MAKECLEAN_SYMBOLS= ADK_TARGET_LIB_UCLIBC \ + ADK_TARGET_LIB_GLIBC \ + ADK_TARGET_LIB_ECLIBC \ ADK_IPV6 ADK_CXX ADK_DEBUG POSTCONFIG= -@\ if [ -f .config.old ];then \ @@ -66,8 +68,10 @@ endif endif package_index: +ifeq ($(ADK_TARGET_PACKAGE_IPKG),y) -cd ${PACKAGE_DIR} && \ ${BASH} ${TOPDIR}/scripts/ipkg-make-index.sh . >Packages +endif $(DISTDIR): mkdir -p $(DISTDIR) @@ -120,6 +124,7 @@ switch: root_clean: @$(TRACE) root_clean rm -rf $(TARGET_DIR) + mkdir -p $(TARGET_DIR) # Do a per-package clean here, too. This way stale headers and # libraries from cross_*/target/ get wiped away, which keeps @@ -130,11 +135,11 @@ clean: @$(TRACE) clean $(MAKE) -C $(CONFIG) clean for d in ${STAGING_PARENT_PFX}; do \ - echo "clean: entering $$d" ; \ + #echo "clean: entering $$d" ; \ for f in $$(ls $$d/pkg/[a-z]* 2>/dev/null); do \ - echo "clean: cleaning for $$f" ; \ + #echo "clean: cleaning for $$f" ; \ while read file ; do \ - rm $$d/target/$$file ; \ + rm $$d/target/$$file 2>/dev/null; \ done < $$f ; \ rm $$f ; \ done \ diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk index b9b2d9b9b..b8dccfe84 100644 --- a/mk/kernel-build.mk +++ b/mk/kernel-build.mk @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk include $(TOPDIR)/mk/linux.mk include ${TOPDIR}/mk/buildhlp.mk -KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg +KERNEL_PKGDIR:=$(LINUX_BUILD_DIR)/kernel-pkg KERNEL_MAKE_OPTS:= -C "${LINUX_DIR}" V=1 ifneq ($(ADK_NATIVE),y) @@ -41,23 +41,23 @@ $(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules \ modules_install $(MAKE_TRACE) $(TRACE) target/$(DEVICE)-create-packages - $(MAKE) $(KERNEL_IPKG) $(TARGETS) + $(MAKE) $(KERNEL_PKG) $(TARGETS) touch -c $(LINUX_DIR)/vmlinux -$(KERNEL_IPKG): +$(KERNEL_PKG): $(TRACE) target/$(DEVICE)-create-kernel-package - rm -rf $(KERNEL_IDIR) - @mkdir -p $(KERNEL_IDIR)/etc - ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \ + rm -rf $(KERNEL_PKGDIR) + @mkdir -p $(KERNEL_PKGDIR)/etc + ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_PKGDIR} \ ../linux/kernel.control ${DEVICE}-${KERNEL_VERSION} ${CPU_ARCH} - $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE) + $(PKG_BUILD) $(KERNEL_PKGDIR) $(PACKAGE_DIR) $(MAKE_TRACE) prepare: compile: $(LINUX_DIR)/vmlinux install: compile ifneq ($(strip $(INSTALL_TARGETS)),) $(TRACE) target/${DEVICE}-modules-install - $(IPKG) install $(INSTALL_TARGETS) $(MAKE_TRACE) + $(PKG_INSTALL) $(INSTALL_TARGETS) $(MAKE_TRACE) endif clean: diff --git a/mk/kernel.mk b/mk/kernel.mk index f5b85832e..365cc12e6 100644 --- a/mk/kernel.mk +++ b/mk/kernel.mk @@ -9,8 +9,8 @@ KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR) TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR) -KERNEL_IPKG:=$(PACKAGE_DIR)/kernel_$(DEVICE)-$(KERNEL_VERSION)_$(CPU_ARCH).ipk -INSTALL_TARGETS:= $(KERNEL_IPKG) +KERNEL_PKG:=$(PACKAGE_DIR)/kernel_$(DEVICE)-$(KERNEL_VERSION)_$(CPU_ARCH).$(PKG_SUFFIX) +INSTALL_TARGETS:= $(KERNEL_PKG) NOINSTALL_TARGETS:= TARGETS:= @@ -32,7 +32,7 @@ define KMOD_template IDEPENDK_$(1):=kernel ($(DEVICE)-$(KERNEL_VERSION)) $(foreach pkg,$(5),", $(pkg)") -PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE)_$(CPU_ARCH).ipk +PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE)_$(CPU_ARCH).$(PKG_SUFFIX) I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2) ifeq ($$(ADK_KPACKAGE_KMOD_$(1)),m) @@ -45,6 +45,7 @@ endif $$(PKG_$(1)): rm -rf $$(I_$(1)) + @mkdir -p $$(I_$(1)) echo "Package: kmod-$(2)" > $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control echo "Priority: optional" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control echo "Section: sys" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control @@ -69,7 +70,7 @@ ifneq ($(4),) chmod 0755 $$(I_$(1))/CONTROL/postinst endif endif - $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE) + $(PKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE) endef include $(BUILD_DIR)/.kernelconfig diff --git a/mk/package.mk b/mk/package.mk index 64884e4b4..f1a044683 100644 --- a/mk/package.mk +++ b/mk/package.mk @@ -1,7 +1,7 @@ # This file is part of the OpenADK project. OpenADK is copyrighted # material, please see the LICENCE file in the top-level directory. -all: build-all-ipkgs +all: build-all-pkgs ifeq ($(ADK_STATIC),y) TCFLAGS:= ${TARGET_CFLAGS} -static @@ -119,7 +119,7 @@ build: ${_BUILD_COOKIE} fake: ${_FAKE_COOKIE} # our recursive build entry point -build-all-ipkgs: ${_IPKGS_COOKIE} +build-all-pkgs: ${_IPKGS_COOKIE} # there are some parameters to the PKG_template function # 1.) Config.in identifier ADK_PACKAGE_$(1) @@ -136,13 +136,13 @@ build-all-ipkgs: ${_IPKGS_COOKIE} # cleaning (needed for toolchain packages like glibc/eglibc) # should be package format independent and modular in the future define PKG_template -IPKG_$(1)= $(PACKAGE_DIR)/$(2)_$(3)_${CPU_ARCH}.ipk -IDIR_$(1)= $(WRKDIR)/fake-${CPU_ARCH}/ipkg-$(2) +IPKG_$(1)= $(PACKAGE_DIR)/$(2)_$(3)_${CPU_ARCH}.${PKG_SUFFIX} +IDIR_$(1)= $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(2) ifneq (${ADK_PACKAGE_$(1)}${DEVELOPER},) ALL_IPKGS+= $$(IPKG_$(1)) ALL_IDIRS+= $${IDIR_$(1)} endif -INFO_$(1)= $(IPKG_STATE_DIR)/info/$(2).list +INFO_$(1)= $(PKG_STATE_DIR)/info/$(2).list ifeq ($(ADK_PACKAGE_$(1)),y) install-targets: $$(INFO_$(1)) @@ -156,7 +156,6 @@ $$(IDIR_$(1))/CONTROL/control: ${_PATCH_COOKIE} @echo "Package: $(2)" > $(WRKDIR)/.$(2).control @echo "Section: $(6)" >> $(WRKDIR)/.$(2).control @echo "Description: $(5)" >> $(WRKDIR)/.$(2).control -ifeq ($(ADK_TARGET_PACKAGE_IPKG),y) ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh $${IDIR_$(1)} $${ICONTROL_$(1)} $(3) ${CPU_ARCH} @adeps='$$(strip $${IDEPEND_$(1)})'; if [[ -n $$$$adeps ]]; then \ comma=; \ @@ -176,7 +175,6 @@ ifeq ($(ADK_TARGET_PACKAGE_IPKG),y) @for file in conffiles preinst postinst prerm postrm; do \ [ ! -f ./files/$(2).$$$$file ] || cp ./files/$(2).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file; \ done -endif $$(IPKG_$(1)): $$(IDIR_$(1))/CONTROL/control $${_FAKE_COOKIE} ifeq ($(ADK_DEBUG),) @@ -234,12 +232,7 @@ ifeq (,$(filter noscripts,$(7))) >>'$${STAGING_PARENT}/pkg/$(1)'; \ done endif -ifeq ($(ADK_TARGET_PACKAGE_IPKG),y) - $${IPKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR} $(MAKE_TRACE) -endif -ifeq ($(ADK_TARGET_PACKAGE_TGZ),y) - (cd $${IDIR_$(1)} && tar czf $(PACKAGE_DIR)/$(2)_$(3)_${CPU_ARCH}.tar.gz .); -endif + $${PKG_BUILD} $${IDIR_$(1)} $${PACKAGE_DIR} $(MAKE_TRACE) clean-targets: clean-dev-$(1) @@ -255,7 +248,7 @@ endif @rm -f '$${STAGING_PARENT}/pkg/$(1)' $$(INFO_$(1)): $$(IPKG_$(1)) - $(IPKG) install $$(IPKG_$(1)) + $(PKG_INSTALL) $$(IPKG_$(1)) endef install-targets: @@ -273,4 +266,4 @@ distclean: clean rm -f ${FULLDISTFILES} .PHONY: all refetch extract patch configure \ - build fake package install clean build-all-ipkgs + build fake package install clean build-all-pkgs diff --git a/mk/vars.mk b/mk/vars.mk index 63130507f..45975779f 100644 --- a/mk/vars.mk +++ b/mk/vars.mk @@ -69,17 +69,24 @@ HOST_CONFIGURE_OPTS= CC_FOR_BUILD='${HOSTCC}' \ CPPFLAGS_FOR_BUILD='${HOSTCPPFLAGS}' \ LDFLAGS_FOR_BUILD='${HOSTLDFLAGS}' -# invoke ipkg-build with some default options -IPKG_BUILD:= PATH='${TARGET_PATH}' ${BASH} \ - ${TOPDIR}/scripts/ipkg-build -c -o 0 -g 0 -# where to build (and put) .ipk packages -IPKG_TARGET_DIR:= $(PACKAGE_DIR) -IPKG:= IPKG_TMP=$(BUILD_DIR)/tmp \ +PKG_SUFFIX:= $(strip $(subst ",, $(ADK_PACKAGE_SUFFIX))) + +ifeq ($(ADK_TARGET_PACKAGE_IPKG),y) +PKG_BUILD:= ${BASH} ${SCRIPT_DIR}/ipkg-build -c -o 0 -g 0 + +PKG_INSTALL:= IPKG_TMP=$(BUILD_DIR)/tmp \ IPKG_INSTROOT=$(TARGET_DIR) \ IPKG_CONF_DIR=$(STAGING_DIR)/etc \ IPKG_OFFLINE_ROOT=$(TARGET_DIR) \ - ${BASH} ${SCRIPT_DIR}/ipkg -force-defaults -force-depends -IPKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg + ${BASH} ${SCRIPT_DIR}/ipkg \ + -force-defaults -force-depends install +PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/ipkg +else +PKG_BUILD:= ${BASH} ${SCRIPT_DIR}/tarpkg build +PKG_INSTALL:= INSTROOT=$(TARGET_DIR) \ + ${BASH} ${SCRIPT_DIR}/tarpkg install +PKG_STATE_DIR:= $(TARGET_DIR)/usr/lib/pkg +endif ifeq ($(ADK_NATIVE),y) RSTRIP:= prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh diff --git a/package/Config.in b/package/Config.in index 4a9c4ea38..b5523f8bc 100644 --- a/package/Config.in +++ b/package/Config.in @@ -375,6 +375,7 @@ source "package/lua/Config.in" source "package/m4/Config.in" source "package/make/Config.in" source "package/microperl/Config.in" +source "package/perl/Config.in" source "package/php/Config.in" source "package/python/Config.in" source "package/ruby/Config.in" diff --git a/package/Makefile b/package/Makefile index 401780da6..424c7493b 100644 --- a/package/Makefile +++ b/package/Makefile @@ -307,6 +307,7 @@ package-$(ADK_PACKAGE_PARPROUTED) += parprouted package-$(ADK_PACKAGE_PATCH) += patch package-$(ADK_PACKAGE_PCIUTILS) += pciutils package-$(ADK_COMPILE_PCRE) += pcre +package-$(ADK_PACKAGE_PERL) += perl package-$(ADK_COMPILE_PHP) += php package-$(ADK_PACKAGE_PICOCOM) += picocom package-$(ADK_PACKAGE_PIPACS) += pipacs @@ -471,7 +472,7 @@ $(TARGET_DIR): %-compile: $(START_TRACE) "package/$(patsubst %-compile,%,$@)-compile: " - $(MAKE) -C $(patsubst %-compile,%,$@) fake build-all-ipkgs + $(MAKE) -C $(patsubst %-compile,%,$@) fake build-all-pkgs $(CMD_TRACE) " done" $(END_TRACE) diff --git a/package/busybox/config/coreutils/Config.in b/package/busybox/config/coreutils/Config.in index dc0ab5fdb..697bec0ea 100644 --- a/package/busybox/config/coreutils/Config.in +++ b/package/busybox/config/coreutils/Config.in @@ -67,7 +67,7 @@ config BUSYBOX_CKSUM config BUSYBOX_COMM bool "comm" - default n + default y help comm is used to compare two files line by line and return a three-column output. @@ -557,7 +557,7 @@ config BUSYBOX_FEATURE_SORT_BIG config BUSYBOX_SPLIT bool "split" - default n + default y help split a file into pieces. diff --git a/package/perl/Config.in b/package/perl/Config.in new file mode 100644 index 000000000..b71422e20 --- /dev/null +++ b/package/perl/Config.in @@ -0,0 +1,8 @@ +config ADK_PACKAGE_PERL + prompt "perl.............................. A full blown perl" + tristate + depends on ADK_NATIVE + default n + help + Complete Perl. + diff --git a/package/perl/Makefile b/package/perl/Makefile new file mode 100644 index 000000000..5500ec9ac --- /dev/null +++ b/package/perl/Makefile @@ -0,0 +1,34 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${TOPDIR}/rules.mk + +PKG_NAME:= perl +PKG_VERSION:= 5.10.0 +PKG_RELEASE:= 1 +PKG_MD5SUM:= d2c39b002ebfd2c3c5dba589365c5a71 +PKG_DESCR:= Perl without operating-specific functions +PKG_SECTION:= net +PKG_URL:= www.perl.org +PKG_SITES:= ftp://ftp.cpan.org/pub/CPAN/src/5.0/ \ + ftp://ftp.mpi-sb.mpg.de/pub/perl/CPAN/src/5.0/ \ + ftp://ftp.gmd.de/mirrors/CPAN/src/5.0/ \ + ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0/ + +include ${TOPDIR}/mk/package.mk + +$(eval $(call PKG_template,PERL,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +BUILD_STYLE:= auto + +pre-configure: + (cd ${WRKBUILD}; ./Configure -des -Dcc=gcc); + +do-install: + ${INSTALL_DIR} ${IDIR_PERL}/usr/bin + ${INSTALL_DIR} ${IDIR_PERL}/usr/lib/perl5/${PKG_VERSION} + ${INSTALL_BIN} ${WRKBUILD}/perl ${IDIR_PERL}/usr/bin/perl + ${INSTALL_DATA} ${WRKBUILD}/lib/strict.pm \ + ${IDIR_PERL}/usr/lib/perl5/${PKG_VERSION} + +include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/scripts/tarpkg b/scripts/tarpkg new file mode 100755 index 000000000..c126af594 --- /dev/null +++ b/scripts/tarpkg @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +# create/install compressed tar balls + +if [ "$1" = "build" ];then + if [ ! -d $2 ];then + echo "not a directory" + exit 1 + fi + pkgname=$(grep "^Package:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + version=$(grep "^Version:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + arch=$(grep "^Architecture:" $2/CONTROL/control | sed -e "s/^[^:]*:[[:space:]]*//") + cd $2 + rm -rf CONTROL + tar -czf $3/${pkgname}_${version}_${arch}.tar.gz . + cd - + exit 0 +elif [ "$1" = "install" ];then + tar -xzpf $2 -C ${INSTROOT} + exit 0 +else + echo "unknown command" + exit 1 +fi +exit 0 diff --git a/target/Config.in b/target/Config.in index 6ee9430af..c897b8223 100644 --- a/target/Config.in +++ b/target/Config.in @@ -622,6 +622,13 @@ config ADK_TARGET_ROOT_EXT4 endchoice +config ADK_PACKAGE_SUFFIX + string + default "ipk" if ADK_TARGET_PACKAGE_IPKG + default "tar.gz" if ADK_TARGET_PACKAGE_TGZ + default "rpm" if ADK_TARGET_PACKAGE_RPM + help + choice prompt "Package backend format" default ADK_TARGET_PACKAGE_IPKG diff --git a/target/native/Makefile b/target/native/Makefile index 4f38c3a0b..3b4039167 100644 --- a/target/native/Makefile +++ b/target/native/Makefile @@ -2,6 +2,7 @@ # material, please see the LICENCE file in the top-level directory. include $(TOPDIR)/rules.mk +include $(TOPDIR)/mk/vars.mk include $(TOPDIR)/mk/kernel.mk include $(TOPDIR)/mk/modules.mk include $(TOPDIR)/mk/kernel-build.mk diff --git a/target/native/device.mk b/target/native/device.mk index 0b28f9c9e..8f861905d 100644 --- a/target/native/device.mk +++ b/target/native/device.mk @@ -1,4 +1,4 @@ -ARCH:= $(shell uname -m|sed -e "s/i.*86/x86/") +ARCH:= $(shell uname -m|sed -e "s/i.*86/x86/" -e "s/_64//") CPU_ARCH:= $(shell uname -m) KERNEL_VERSION:= 2.6.30.5 KERNEL_RELEASE:= 1 |