summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux User <wbx@linux.(none)>2009-10-01 20:26:05 +0200
committerLinux User <wbx@linux.(none)>2009-10-01 20:26:05 +0200
commit8759fa511c0464efaea926dcb1271c0ca95e4eb6 (patch)
tree525fc96ed62d206153794068a2f43116a095dbbe
parent22bb527c786d6631eec13f2328da05437a1e46b5 (diff)
abstract package backend, add perl
-rw-r--r--mk/build.mk13
-rw-r--r--mk/kernel-build.mk16
-rw-r--r--mk/kernel.mk9
-rw-r--r--mk/package.mk23
-rw-r--r--mk/vars.mk23
-rw-r--r--package/Config.in1
-rw-r--r--package/Makefile3
-rw-r--r--package/busybox/config/coreutils/Config.in4
-rw-r--r--package/perl/Config.in8
-rw-r--r--package/perl/Makefile34
-rwxr-xr-xscripts/tarpkg24
-rw-r--r--target/Config.in7
-rw-r--r--target/native/Makefile1
-rw-r--r--target/native/device.mk2
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