Browse Source

abstract package backend, add perl

Linux User 14 years ago
parent
commit
8759fa511c

+ 9 - 4
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 \

+ 8 - 8
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:

+ 5 - 4
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

+ 8 - 15
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

+ 15 - 8
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

+ 1 - 0
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"

+ 2 - 1
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)
 

+ 2 - 2
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.
 

+ 8 - 0
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.
+

+ 34 - 0
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

+ 24 - 0
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

+ 7 - 0
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

+ 1 - 0
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

+ 1 - 1
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