From 5c105d9f3fd086aff195d3849dcf847d6b0bd927 Mon Sep 17 00:00:00 2001 From: blogic Date: Fri, 5 Oct 2012 10:12:53 +0000 Subject: branch Attitude Adjustment git-svn-id: svn://svn.openwrt.org/openwrt/branches/attitude_adjustment@33625 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- tools/ipkg-utils/Makefile | 32 ++++++++++++++++++ tools/ipkg-utils/patches/100-build_clean.patch | 35 +++++++++++++++++++ tools/ipkg-utils/patches/110-buildpackage.patch | 23 +++++++++++++ .../patches/111-buildpackage_conffiles.patch | 11 ++++++ tools/ipkg-utils/patches/120-build_tar.patch | 36 ++++++++++++++++++++ tools/ipkg-utils/patches/130-tar_wildcards.patch | 23 +++++++++++++ tools/ipkg-utils/patches/140-portability.patch | 19 +++++++++++ .../ipkg-utils/patches/150-uppercase_letters.patch | 22 ++++++++++++ tools/ipkg-utils/patches/160-find.patch | 39 ++++++++++++++++++++++ .../ipkg-utils/patches/170-resolve_conffiles.patch | 23 +++++++++++++ .../patches/180-add_installed_size.patch | 14 ++++++++ .../patches/190-preserve_permissions.patch | 12 +++++++ 12 files changed, 289 insertions(+) create mode 100644 tools/ipkg-utils/Makefile create mode 100644 tools/ipkg-utils/patches/100-build_clean.patch create mode 100644 tools/ipkg-utils/patches/110-buildpackage.patch create mode 100644 tools/ipkg-utils/patches/111-buildpackage_conffiles.patch create mode 100644 tools/ipkg-utils/patches/120-build_tar.patch create mode 100644 tools/ipkg-utils/patches/130-tar_wildcards.patch create mode 100644 tools/ipkg-utils/patches/140-portability.patch create mode 100644 tools/ipkg-utils/patches/150-uppercase_letters.patch create mode 100644 tools/ipkg-utils/patches/160-find.patch create mode 100644 tools/ipkg-utils/patches/170-resolve_conffiles.patch create mode 100644 tools/ipkg-utils/patches/180-add_installed_size.patch create mode 100644 tools/ipkg-utils/patches/190-preserve_permissions.patch (limited to 'tools/ipkg-utils') 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/" \ -- cgit v1.2.3