aboutsummaryrefslogtreecommitdiffstats
path: root/tools/ipkg-utils
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ipkg-utils')
-rw-r--r--tools/ipkg-utils/Makefile32
-rw-r--r--tools/ipkg-utils/patches/100-build_clean.patch35
-rw-r--r--tools/ipkg-utils/patches/110-buildpackage.patch23
-rw-r--r--tools/ipkg-utils/patches/111-buildpackage_conffiles.patch11
-rw-r--r--tools/ipkg-utils/patches/120-build_tar.patch36
-rw-r--r--tools/ipkg-utils/patches/130-tar_wildcards.patch23
-rw-r--r--tools/ipkg-utils/patches/140-portability.patch19
-rw-r--r--tools/ipkg-utils/patches/150-uppercase_letters.patch22
-rw-r--r--tools/ipkg-utils/patches/160-find.patch39
-rw-r--r--tools/ipkg-utils/patches/170-resolve_conffiles.patch23
-rw-r--r--tools/ipkg-utils/patches/180-add_installed_size.patch14
-rw-r--r--tools/ipkg-utils/patches/190-preserve_permissions.patch12
12 files changed, 289 insertions, 0 deletions
diff --git a/tools/ipkg-utils/Makefile b/tools/ipkg-utils/Makefile
new file mode 100644
index 000000000..778260921
--- /dev/null
+++ b/tools/ipkg-utils/Makefile
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ipkg-utils
+PKG_VERSION:=1.7
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://handhelds.org/packages/ipkg-utils/
+PKG_MD5SUM:=da3e3ef772973d7370a6ac95f0fef9b8
+
+include $(INCLUDE_DIR)/host-build.mk
+
+define Host/Install
+ $(INSTALL_BIN) \
+ $(HOST_BUILD_DIR)/ipkg-build \
+ $(HOST_BUILD_DIR)/ipkg-buildpackage \
+ $(HOST_BUILD_DIR)/ipkg-make-index \
+ $(HOST_BUILD_DIR)/ipkg.py \
+ $(STAGING_DIR_HOST)/bin/
+endef
+
+define Host/Clean
+ rm -f $(STAGING_DIR)/etc/ipkg.conf
+ rm -f $(STAGING_DIR_HOST)/bin/ipkg*
+endef
+
+$(eval $(call HostBuild))
diff --git a/tools/ipkg-utils/patches/100-build_clean.patch b/tools/ipkg-utils/patches/100-build_clean.patch
new file mode 100644
index 000000000..7df272f74
--- /dev/null
+++ b/tools/ipkg-utils/patches/100-build_clean.patch
@@ -0,0 +1,35 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -47,6 +47,19 @@ pkg_appears_sane() {
+
+ PKG_ERROR=0
+
++ cvs_dirs=`find . -name 'CVS'`
++ if [ -n "$cvs_dirs" ]; then
++ if [ "$noclean" = "1" ]; then
++ echo "*** Warning: The following CVS directories where found.
++You probably want to remove them: " >&2
++ ls -ld $cvs_dirs
++ echo >&2
++ else
++ echo "*** Removing the following files: $cvs_dirs"
++ rm -rf "$cvs_dirs"
++ fi
++ fi
++
+ tilde_files=`find . -name '*~'`
+ if [ -n "$tilde_files" ]; then
+ if [ "$noclean" = "1" ]; then
+@@ -134,8 +147,12 @@ You probably want to chown these to a sy
+
+ for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
+ if [ -f $script -a ! -x $script ]; then
++ if [ "$noclean" = "1" ]; then
+ echo "*** Error: package script $script is not executable" >&2
+ PKG_ERROR=1
++ else
++ chmod a+x $script
++ fi
+ fi
+ done
+
diff --git a/tools/ipkg-utils/patches/110-buildpackage.patch b/tools/ipkg-utils/patches/110-buildpackage.patch
new file mode 100644
index 000000000..8e62ee70c
--- /dev/null
+++ b/tools/ipkg-utils/patches/110-buildpackage.patch
@@ -0,0 +1,23 @@
+--- a/ipkg-buildpackage
++++ b/ipkg-buildpackage
+@@ -30,8 +30,9 @@
+
+ set -e
+
+-#SCRIPTDIR=/usr/local/bin
+-SCRIPTDIR=/other/kurth/ipaq-dev/familiar/dist/ipkg/util/
++SCRIPTDIR=/usr/local/bin
++
++IPKG_BUILD_OPTIONS=$*
+
+ SCRIPTNAME=`basename $0`
+
+@@ -212,7 +213,7 @@ done
+ # build the ipk package
+ owd=`pwd`
+ cd ..
+-ipkg-build /tmp/${pkg} || exit 1
++ipkg-build $IPKG_BUILD_OPTIONS /tmp/${pkg} || exit 1
+
+ rm -rf /tmp/${pkg}
+
diff --git a/tools/ipkg-utils/patches/111-buildpackage_conffiles.patch b/tools/ipkg-utils/patches/111-buildpackage_conffiles.patch
new file mode 100644
index 000000000..dacdaaefb
--- /dev/null
+++ b/tools/ipkg-utils/patches/111-buildpackage_conffiles.patch
@@ -0,0 +1,11 @@
+--- a/ipkg-buildpackage
++++ b/ipkg-buildpackage
+@@ -190,7 +190,7 @@ fi
+ mkdir /tmp/${pkg}/CONTROL
+
+ files_required="control"
+-files_optional="preinst postinst prerm postrm"
++files_optional="preinst postinst prerm postrm conffiles"
+
+ for i in ${files_required} ; do
+ file=${CONTROL}/$i
diff --git a/tools/ipkg-utils/patches/120-build_tar.patch b/tools/ipkg-utils/patches/120-build_tar.patch
new file mode 100644
index 000000000..acf6b7985
--- /dev/null
+++ b/tools/ipkg-utils/patches/120-build_tar.patch
@@ -0,0 +1,36 @@
+This patch from aorlinsk fixes an issue with order in options passed to tar
+
+ http://openwrt.org/forum/viewtopic.php?pid=8332#p8332
+
+
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -184,7 +184,7 @@ while getopts "cg:ho:v" opt; do
+ g ) group=$OPTARG
+ ogargs="$ogargs --group=$group"
+ ;;
+- c ) outer=tar
++ c ) outer=$TAR
+ ;;
+ C ) noclean=1
+ ;;
+@@ -243,8 +243,8 @@ tmp_dir=$dest_dir/IPKG_BUILD.$$
+ mkdir $tmp_dir
+
+ echo $CONTROL > $tmp_dir/tarX
+-( cd $pkg_dir && tar $ogargs -czf $tmp_dir/data.tar.gz . -X $tmp_dir/tarX )
+-( cd $pkg_dir/$CONTROL && tar $ogargs -czf $tmp_dir/control.tar.gz . )
++( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX -czf $tmp_dir/data.tar.gz . )
++( cd $pkg_dir/$CONTROL && $TAR $ogargs -czf $tmp_dir/control.tar.gz . )
+ rm $tmp_dir/tarX
+
+ echo "2.0" > $tmp_dir/debian-binary
+@@ -254,7 +254,7 @@ rm -f $pkg_file
+ if [ "$outer" = "ar" ] ; then
+ ( cd $tmp_dir && ar -crf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
+ else
+- ( cd $tmp_dir && tar -zcf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
++ ( cd $tmp_dir && $TAR -zcf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz )
+ fi
+
+ rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
diff --git a/tools/ipkg-utils/patches/130-tar_wildcards.patch b/tools/ipkg-utils/patches/130-tar_wildcards.patch
new file mode 100644
index 000000000..ba949c100
--- /dev/null
+++ b/tools/ipkg-utils/patches/130-tar_wildcards.patch
@@ -0,0 +1,23 @@
+--- a/ipkg.py
++++ b/ipkg.py
+@@ -93,9 +93,9 @@ class Package:
+ self.filename = os.path.basename(fn)
+ ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,))
+ if self.isdeb:
+- control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - '*control'","r")
++ control = os.popen("ar p "+fn+" control.tar.gz | tar xzO --wildcards -f - '*control'","r")
+ else:
+- control = os.popen("tar xfzO "+fn+" '*control.tar.gz' | tar xfzO - '*control'","r")
++ control = os.popen("tar xzO --wildcards -f "+fn+" '*control.tar.gz' | tar xzO --wildcards -f - '*control'","r")
+ line = control.readline()
+ while 1:
+ if not line: break
+@@ -122,7 +122,7 @@ class Package:
+ if self.isdeb:
+ data = os.popen("ar p "+fn+" data.tar.gz | tar tfz -","r")
+ else:
+- data = os.popen("tar xfzO "+fn+" '*data.tar.gz' | tar tfz -","r")
++ data = os.popen("tar xzO --wildcards -f "+fn+" '*data.tar.gz' | tar tfz -","r")
+ while 1:
+ line = data.readline()
+ if not line: break
diff --git a/tools/ipkg-utils/patches/140-portability.patch b/tools/ipkg-utils/patches/140-portability.patch
new file mode 100644
index 000000000..417c4094d
--- /dev/null
+++ b/tools/ipkg-utils/patches/140-portability.patch
@@ -0,0 +1,19 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -11,6 +11,8 @@ set -e
+
+ version=1.0
+
++TAR="${TAR:-$(which tar)}"
++
+ ipkg_extract_value() {
+ sed -e "s/^[^:]*:[[:space:]]*//"
+ }
+--- a/ipkg-make-index
++++ b/ipkg-make-index
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python
+ # $Id: ipkg-make-index,v 1.20 2003/10/30 02:32:09 jamey Exp $
+
+ import sys, os, posixpath
diff --git a/tools/ipkg-utils/patches/150-uppercase_letters.patch b/tools/ipkg-utils/patches/150-uppercase_letters.patch
new file mode 100644
index 000000000..cef200dcc
--- /dev/null
+++ b/tools/ipkg-utils/patches/150-uppercase_letters.patch
@@ -0,0 +1,22 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -133,7 +133,7 @@ You probably want to chown these to a sy
+ disallowed_filename=`disallowed_field Filename`
+ [ "$?" -ne 0 ] && PKG_ERROR=1
+
+- if echo $pkg | grep '[^a-z0-9.+-]'; then
++ if echo $pkg | grep '[^a-zA-Z0-9_.+-]'; then
+ echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
+ PKG_ERROR=1;
+ fi
+--- a/ipkg-buildpackage
++++ b/ipkg-buildpackage
+@@ -69,7 +69,7 @@ pkg_appears_sane_control() {
+ required_field Maintainer >/dev/null
+ required_field Description >/dev/null
+
+- if echo $pkg | grep '[^a-z0-9.+-]'; then
++ if echo $pkg | grep '[^a-zA-Z0-9.+-]'; then
+ echo "ipkg-build: Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])"
+ PKG_ERROR=1;
+ fi
diff --git a/tools/ipkg-utils/patches/160-find.patch b/tools/ipkg-utils/patches/160-find.patch
new file mode 100644
index 000000000..45ef3c651
--- /dev/null
+++ b/tools/ipkg-utils/patches/160-find.patch
@@ -0,0 +1,39 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -10,7 +10,8 @@
+ set -e
+
+ version=1.0
+-
++FIND="$(which find)"
++FIND="${FIND:-$(which gfind)}"
+ TAR="${TAR:-$(which tar)}"
+
+ ipkg_extract_value() {
+@@ -49,7 +50,7 @@ pkg_appears_sane() {
+
+ PKG_ERROR=0
+
+- cvs_dirs=`find . -name 'CVS'`
++ cvs_dirs=`$FIND . -name 'CVS'`
+ if [ -n "$cvs_dirs" ]; then
+ if [ "$noclean" = "1" ]; then
+ echo "*** Warning: The following CVS directories where found.
+@@ -62,7 +63,7 @@ You probably want to remove them: " >&2
+ fi
+ fi
+
+- tilde_files=`find . -name '*~'`
++ tilde_files=`$FIND . -name '*~'`
+ if [ -n "$tilde_files" ]; then
+ if [ "$noclean" = "1" ]; then
+ echo "*** Warning: The following files have names ending in '~'.
+@@ -75,7 +76,7 @@ You probably want to remove them: " >&2
+ fi
+ fi
+
+- large_uid_files=`find . -uid +99 || true`
++ large_uid_files=`$FIND . -uid +99 || true`
+
+ if [ "$ogargs" = "" ] && [ -n "$large_uid_files" ]; then
+ echo "*** Warning: The following files have a UID greater than 99.
diff --git a/tools/ipkg-utils/patches/170-resolve_conffiles.patch b/tools/ipkg-utils/patches/170-resolve_conffiles.patch
new file mode 100644
index 000000000..31faf30a0
--- /dev/null
+++ b/tools/ipkg-utils/patches/170-resolve_conffiles.patch
@@ -0,0 +1,23 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -160,12 +160,15 @@ You probably want to chown these to a sy
+ done
+
+ if [ -f $CONTROL/conffiles ]; then
+- for cf in `cat $CONTROL/conffiles`; do
+- if [ ! -f ./$cf ]; then
+- echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
+- PKG_ERROR=1
+- fi
++ rm -f $CONTROL/conffiles.resolved
++
++ for cf in `$FIND $(sed -e "s!^/!$pkg_dir/!" $CONTROL/conffiles) -type f`; do
++ echo "${cf#$pkg_dir}" >> $CONTROL/conffiles.resolved
+ done
++
++ rm $CONTROL/conffiles
++ mv $CONTROL/conffiles.resolved $CONTROL/conffiles
++ chmod 0644 $CONTROL/conffiles
+ fi
+
+ cd $owd
diff --git a/tools/ipkg-utils/patches/180-add_installed_size.patch b/tools/ipkg-utils/patches/180-add_installed_size.patch
new file mode 100644
index 000000000..fb91a3190
--- /dev/null
+++ b/tools/ipkg-utils/patches/180-add_installed_size.patch
@@ -0,0 +1,14 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -250,6 +250,11 @@ mkdir $tmp_dir
+
+ echo $CONTROL > $tmp_dir/tarX
+ ( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX -czf $tmp_dir/data.tar.gz . )
++
++installed_size=`stat -c "%s" $tmp_dir/data.tar.gz`
++sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \
++ $pkg_dir/$CONTROL/control
++
+ ( cd $pkg_dir/$CONTROL && $TAR $ogargs -czf $tmp_dir/control.tar.gz . )
+ rm $tmp_dir/tarX
+
diff --git a/tools/ipkg-utils/patches/190-preserve_permissions.patch b/tools/ipkg-utils/patches/190-preserve_permissions.patch
new file mode 100644
index 000000000..27ba5217b
--- /dev/null
+++ b/tools/ipkg-utils/patches/190-preserve_permissions.patch
@@ -0,0 +1,12 @@
+--- a/ipkg-build
++++ b/ipkg-build
+@@ -249,7 +249,8 @@ tmp_dir=$dest_dir/IPKG_BUILD.$$
+ mkdir $tmp_dir
+
+ echo $CONTROL > $tmp_dir/tarX
+-( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX -czf $tmp_dir/data.tar.gz . )
++# Preserve permissions (-p) when creating data.tar.gz as non-root user
++( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX -czpf $tmp_dir/data.tar.gz . )
+
+ installed_size=`du -b $tmp_dir/data.tar.gz | cut -f1`
+ sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \