Browse Source

Merge branch 'master' of git+ssh://openadk.org/git/openadk

Waldemar Brodkorb 15 years ago
parent
commit
77d579fc66
5 changed files with 45 additions and 9 deletions
  1. 16 2
      mk/build.mk
  2. 1 1
      mk/vars.mk
  3. 1 0
      package/busybox/config/archival/Config.in
  4. 17 1
      scripts/tarpkg
  5. 10 5
      target/Config.in

+ 16 - 2
mk/build.mk

@@ -44,16 +44,20 @@ noconfig_targets:=	menuconfig \
 			distclean \
 			tags
 
-MAKECLEAN_SYMBOLS=	ADK_TARGET_LIB_UCLIBC \
+MAKECLEANDIR_SYMBOLS=	ADK_TARGET_LIB_UCLIBC \
 			ADK_TARGET_LIB_GLIBC \
 			ADK_TARGET_LIB_ECLIBC \
 			ADK_DEBUG
 
+MAKECLEAN_SYMBOLS=	ADK_TARGET_PACKAGE_IPKG \
+			ADK_TARGET_PACKAGE_RPM \
+			ADK_TARGET_PACKAGE_TGZ
+
 POSTCONFIG=		-@ \
 	if [ -f .config.old ];then \
 	if [ -d .cfg ];then \
 	what=cleantarget; \
-	for symbol in ${MAKECLEAN_SYMBOLS}; do \
+	for symbol in ${MAKECLEANDIR_SYMBOLS}; do \
 		newval=$$(grep -e "^$$symbol=" -e "^\# $$symbol " .config); \
 		oldval=$$(cat .cfg/"$$symbol" 2>&-); \
 		[[ $$newval = $$oldval ]] && continue; \
@@ -62,6 +66,16 @@ POSTCONFIG=		-@ \
 		    "$$what' might be required!"; \
 		break; \
 	done; \
+	what=clean; \
+	for symbol in ${MAKECLEAN_SYMBOLS}; do \
+		newval=$$(grep -e "^$$symbol=" -e "^\# $$symbol " .config); \
+		oldval=$$(cat .cfg/"$$symbol" 2>&-); \
+		[[ $$newval = $$oldval ]] && continue; \
+		echo; \
+		echo >&2 "WARNING: Package backend related options have changed, 'make" \
+		    "$$what' might be required!"; \
+		break; \
+	done; \
 	fi; \
 	if [ "$$(grep ^BUSYBOX .config|md5sum)" != "$$(grep ^BUSYBOX .config.old|md5sum)" ];then \
 		if [ -f build_*/w-busybox*/busybox*/.configure_done ];then \

+ 1 - 1
mk/vars.mk

@@ -84,7 +84,7 @@ PKG_INSTALL:=		IPKG_TMP=$(BUILD_DIR)/tmp \
 PKG_STATE_DIR:=		$(TARGET_DIR)/usr/lib/ipkg
 else
 PKG_BUILD:=		${BASH} ${SCRIPT_DIR}/tarpkg build
-PKG_INSTALL:=		INSTROOT=$(TARGET_DIR) \
+PKG_INSTALL:=		PKG_INSTROOT=$(TARGET_DIR) \
 			${BASH} ${SCRIPT_DIR}/tarpkg install
 PKG_STATE_DIR:=		$(TARGET_DIR)/usr/lib/pkg
 endif

+ 1 - 0
package/busybox/config/archival/Config.in

@@ -188,6 +188,7 @@ config BUSYBOX_IPKG
 	default n
 	select BUSYBOX_MD5SUM
 	select BUSYBOX_WGET
+	depends on ADK_TARGET_PACKAGE_IPKG
 	help
 	  ipkg is the itsy package management system.
 

+ 17 - 1
scripts/tarpkg

@@ -1,5 +1,6 @@
 #!/usr/bin/env bash
 # create/install compressed tar balls
+#set -x
 
 if [ "$1" = "build" ];then
 	if [ ! -d $2 ];then
@@ -9,10 +10,25 @@ if [ "$1" = "build" ];then
 	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:]]*//")
+	mkdir -p ${2}/usr/lib/pkg
+	for file in preinst postinst prerm postrm; do
+	  [ ! -f $2/CONTROL/$file ] || ( cp $2/CONTROL/$file \
+		${2}/usr/lib/pkg/${pkgname}.$file && \
+		chmod +x ${2}/usr/lib/pkg/${pkgname}.$file )
+	done
 	rm -rf $2/CONTROL 
 	(cd $2 && tar -czf $3/${pkgname}_${version}_${arch}.tar.gz .)
 elif [ "$1" = "install" ];then
-	tar -xzpf $2 -C ${INSTROOT}
+	pkg=$(echo $(basename $2)|sed -e "s#_.*##")
+	if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst ]; then
+   	  IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst
+	  rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.preinst
+	fi
+	tar -xzpf $2 -C ${PKG_INSTROOT}
+	if [ -x ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst ]; then
+   	  IPKG_INSTROOT="$PKG_INSTROOT" ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst
+	  rm ${PKG_INSTROOT}/usr/lib/pkg/${pkg}.postinst
+	fi
 else
 	echo "unknown command"
 	exit 1

+ 10 - 5
target/Config.in

@@ -769,26 +769,31 @@ config ADK_PACKAGE_SUFFIX
 
 choice
 prompt "Package backend format"
-	default ADK_TARGET_PACKAGE_IPKG
+	default ADK_TARGET_PACKAGE_TGZ
 
 config ADK_TARGET_PACKAGE_IPKG
 	boolean
 	prompt "ipkg package format"
 	select BUSYBOX_IPKG
 	help
-	  Create ipkg packages.
+	  Create ipkg packages and use ipkg package management on
+          the target.
 
 config ADK_TARGET_PACKAGE_TGZ
 	boolean
-	prompt "gzip compressed tar archive"
+	prompt "tar archive (no package manager)"
 	help
-	  Create compressed tar archives.
+	  Create compressed tar archives of packages.
+	  Pre- and post install scripts will be executed in the target
+	  directory. There will be no package manager installed onto the target.
+	  
 
 config ADK_TARGET_PACKAGE_RPM
 	boolean
 	prompt "rpm package format"
 	help
-	  Create rpm packages.
+	  Create rpm packages and use rpm package management on the
+          target.
 
 endchoice