diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-01-08 14:22:36 -0500 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2013-01-08 14:22:36 -0500 |
commit | e00a747bc60604c09fed0d28dc12e49378c8f2a2 (patch) | |
tree | 5f127d59ba00dcc2799a8b8883a1dc37503a53d4 /libre | |
parent | 2d862ac364c034af400863e02f791b9e99be445e (diff) | |
download | abslibre-e00a747bc60604c09fed0d28dc12e49378c8f2a2.tar.gz abslibre-e00a747bc60604c09fed0d28dc12e49378c8f2a2.tar.bz2 abslibre-e00a747bc60604c09fed0d28dc12e49378c8f2a2.zip |
update, improve libre/dpkg
I finally split the package, as had always been TODO.
Slightly more interestingly, I choose to NOT package some of the resulting
packages, but only the ones that are appropriate to have on a pacman-based
system.
Diffstat (limited to 'libre')
-rw-r--r-- | libre/dpkg/PKGBUILD | 142 | ||||
-rwxr-xr-x | libre/dpkg/compare | 26 | ||||
-rw-r--r-- | libre/dpkg/compare.mk | 8 | ||||
-rw-r--r-- | libre/dpkg/dpkg-arch.patch | 17 | ||||
-rw-r--r-- | libre/dpkg/dpkg-gzip-rsyncable.patch | 11 | ||||
-rw-r--r-- | libre/dpkg/dpkg-rsyncable.patch | 12 |
6 files changed, 154 insertions, 62 deletions
diff --git a/libre/dpkg/PKGBUILD b/libre/dpkg/PKGBUILD index 175b80610..aa82d36e6 100644 --- a/libre/dpkg/PKGBUILD +++ b/libre/dpkg/PKGBUILD @@ -1,49 +1,125 @@ +# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net> # Maintainer (AUR): Jochen Schalanda <jochen+aur@schalanda.name> +# Contributor (AUR): Pierre Carrier <pierre@spotify.com> # Contributor (AUR): Thomas Dziedzic <gostrc@gmail> # Contributor (AUR): Chris Giles <Chris.G.27@gmail.com> # Contributor (AUR): seblu <seblu+arch@seblu.net> # Contributor (AUR): squiddo <squiddo@intheocean.net> -# Contributor (Parabola): Luke Shumaker <lukeshu@sbcglobal.net> - -_debrepo=http://ftp.debian.org/debian/pool/main/ # Debian Sid -debfile() { echo -n "$_debrepo"; echo -n "$@"|sed -r 's@(.).*@\1/&@'; } - -# TODO: split into (dpkg dpkg-devtools dselect dpkg-perl) -pkgname=dpkg -pkgver=1.16.2 -pkgrel=1 -pkgdesc="The Debian Package Manager and utilities. Don't use it instead of 'pacman'." -arch=('i686' 'x86_64') -url="http://packages.debian.org/${pkgname}" + +pkgbase=dpkg +#pkgname=(dpkg dpkg-devtools dselect libdpkg perl-dpkg) +pkgname=(dpkg-devtools perl-dpkg) +pkgdesc="Debian Package manager and utilities" license=('GPL2') -depends=('bzip2' 'perl-timedate') -makedepends=('gcc' 'make' 'patch') -optdepends=('fakeroot') -replaces=(dpkg-ubuntu) -conflits=(dpkg-ubuntu) -source=(`debfile ${pkgname}`/${pkgname}_${pkgver}.tar.bz2 - dpkg-rsyncable.patch dpkg-arch.patch) + +pkgver=1.16.9 +url="http://packages.debian.org/source/sid/dpkg" +_debrepo=http://ftp.debian.org/debian/pool/main # Debian Sid + +pkgrel=1.1 +debfile() { echo "${_debrepo}/${1:0:1}/${1}/${1}_${2}"; } +arch=('i686' 'x86_64' 'mips64el') +depends=('bzip2' 'xz' 'zlib' 'ncurses') +checkdepends=('perl-test-pod') +makedepends=('perl-io-string' 'perl-timedate') +source=("$(debfile ${pkgbase} ${pkgver}).tar.xz" + dpkg-gzip-rsyncable.patch) + +###################################################################### + +# This is really gross. +# It uses the debian control files to help us split the package. +# Shame on the dpkg developers for not putting that logic into the build system. +_destdir="$srcdir/$pkgbase-$pkgver/debian/pkg-makepkg" +_debhelper_install() { + local debname=$1 + cd "$_destdir" + + # main files + sed -e '/^\s*$/d' -e 's|usr/share/perl5/|&vendor_perl/|g' ../$debname.install \ + | while read pattern dest; do + if [[ -z $dest ]]; then + for file in $pattern; do + install -d "$pkgdir/${file%/*}" + cp -a "$file" "$pkgdir/$file" || true + done + else + install -d "$pkgdir/$dest/" + cp -a "$pattern" "$pkgdir/$dest/" || true + fi + done + + # manpages + sed -e 's|^debian/tmp/||' -e '/^\s*$/d' ../$debname.manpages 2>/dev/null \ + | while read pattern; do + for file in $pattern; do + install -d "$pkgdir/${file%/*}" + cp -a "$file" "$pkgdir/$file" || true + done + done + + # other documentation + install -d "$pkgdir/usr/share/doc/$pkgname/" + sed '/^\s*$/d' ../$debname.docs 2>/dev/null \ + | while read file; do + gzip \ + < "$srcdir/$pkgbase-$pkgver/$file" \ + > "$pkgdir/usr/share/doc/$pkgname/${file##*/}.gz" + done + + # symlinks + sed '/^\s*$/d' ../$debname.links 2>/dev/null \ + | while read file link; do + ln -s "/$file" "$pkgdir/$link" + done +} + +###################################################################### build() { - cd "${srcdir}/${pkgname}-${pkgver}" + cd "${srcdir}/${pkgbase}-${pkgver}" - patch -p1 -i "${srcdir}/dpkg-rsyncable.patch" - patch -p1 -i "${srcdir}/dpkg-arch.patch" # Architecture detection + patch -p0 -i "${srcdir}/dpkg-gzip-rsyncable.patch" - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ - --without-start-stop-daemon + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-zlib --with-bz2 --with-liblzma make + make DESTDIR="$_destdir" install +} + +check() { + cd "${srcdir}/${pkgbase}-${pkgver}" + make check +} + +package_dpkg() { + pkgdesc="Debian Package manager" + provides+=(start-stop-daemon) + conflicts+=(start-stop-daemon) + _debhelper_install dpkg } -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install +package_dpkg-devtools() { + pkgdesc="Debian Package development tools" + arch=(any) + depends+=(perl-dpkg) + _debhelper_install dpkg-dev +} + +package_dselect() { + pkgdesc="Debian Package manager high-level interface" + _debhelper_install dselect +} + +package_libdpkg() { + pkgdesc="Debian Package manager library (static)" + _debhelper_install libdpkg-dev +} - # Variables - install -d "${pkgdir}/var/${pkgname}/updates/" - touch "${pkgdir}/var/lib/${pkgname}/{status,available}" +package_perl-dpkg() { + pkgdesc="Debian Package perl modules" + arch=(any) + _debhelper_install libdpkg-perl } -md5sums=('629ba7ee2024e6a5c0ff807aa2db02f8' - 'bc36609f6191c5b509fae58c21966c95' - '24ab12e79989a2e7f31653fb1dd3cdf9') +md5sums=('4df9319b2d17e19cdb6fe94dacee44da' + '5ab63758999e9bb10f84bce79a0307b2') diff --git a/libre/dpkg/compare b/libre/dpkg/compare new file mode 100755 index 000000000..4556440a5 --- /dev/null +++ b/libre/dpkg/compare @@ -0,0 +1,26 @@ +#!/bin/bash +# compare the packages extracted in pkg/ to the packages from debian + +_check() { + local pacpkg=$1 + local debpkg=$2 + + libremessages msg "dpkg:$debpkg -> pacman:$pacpkg" + + make -f compare.mk tmp/$pacpkg.pacman.filelist tmp/$debpkg.debian.filelist &>/dev/null + + echo -e 'pacman\tdpkg' + comm -3 \ + <(sed -e 's|\.gz$||' tmp/$pacpkg.pacman.filelist|sort) \ + <(sed -e 's|\.gz$||' -e '/^usr\/share\/man\/..\/man.\//d' -e 's|usr/share/perl5/|&vendor_perl/|' -e "s|$debpkg|$pacpkg|g" tmp/$debpkg.debian.filelist|sort) +} + +mkdir -p tmp + +_check dpkg dpkg +_check dpkg-devtools dpkg-dev +_check dselect dselect +_check libdpkg libdpkg-dev +_check perl-dpkg libdpkg-perl + +rm -rf tmp diff --git a/libre/dpkg/compare.mk b/libre/dpkg/compare.mk new file mode 100644 index 000000000..88219f283 --- /dev/null +++ b/libre/dpkg/compare.mk @@ -0,0 +1,8 @@ +#!/usr/bin/make -f +# Assist file for ./compare + +tmp/%.debian.filelist: + curl http://packages.debian.org/sid/all/$*/filelist|sed -n "/<pre>/,/<\/pre>/{ s|.*<pre>||; s|</pre>.*||; /./p }"|sed 's|/||'|sort > $@ + +tmp/%.pacman.filelist: + ( cd pkg/$* && find * -not -type d; ) | sort > $@ diff --git a/libre/dpkg/dpkg-arch.patch b/libre/dpkg/dpkg-arch.patch deleted file mode 100644 index 66e7a2ef2..000000000 --- a/libre/dpkg/dpkg-arch.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -ru dpkg-1.16.2.orig/scripts/Dpkg/Arch.pm dpkg-1.16.2/scripts/Dpkg/Arch.pm ---- dpkg-1.16.2.orig/scripts/Dpkg/Arch.pm 2012-03-19 02:40:08.000000000 -0400 -+++ dpkg-1.16.2/scripts/Dpkg/Arch.pm 2012-04-02 16:14:55.000000000 -0400 -@@ -49,12 +49,7 @@ - { - return $build_arch if defined $build_arch; - -- # Note: We *always* require an installed dpkg when inferring the -- # build architecture. The bootstrapping case is handled by -- # dpkg-architecture itself, by avoiding computing the DEB_BUILD_ -- # variables when they are not requested. -- -- my $build_arch = `dpkg --print-architecture`; -+ my $build_arch = `uname -m`; - syserr("dpkg --print-architecture failed") if $? >> 8; - - chomp $build_arch; diff --git a/libre/dpkg/dpkg-gzip-rsyncable.patch b/libre/dpkg/dpkg-gzip-rsyncable.patch new file mode 100644 index 000000000..3daf6d76e --- /dev/null +++ b/libre/dpkg/dpkg-gzip-rsyncable.patch @@ -0,0 +1,11 @@ +--- ./scripts/Dpkg/Compression.pm.orig 2012-04-27 04:49:02.000000000 +0200 ++++ ./scripts/Dpkg/Compression.pm 2012-05-27 22:23:18.530628795 +0200 +@@ -52,7 +52,7 @@ + my $COMP = { + "gzip" => { + "file_ext" => "gz", +- "comp_prog" => [ "gzip", "--no-name", "--rsyncable" ], ++ "comp_prog" => [ "gzip", "--no-name" ], + "decomp_prog" => [ "gunzip" ], + "default_level" => 9, + }, diff --git a/libre/dpkg/dpkg-rsyncable.patch b/libre/dpkg/dpkg-rsyncable.patch deleted file mode 100644 index e7e58dfdf..000000000 --- a/libre/dpkg/dpkg-rsyncable.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ru dpkg-1.16.2.orig/scripts/Dpkg/Compression.pm dpkg-1.16.2/scripts/Dpkg/Compression.pm ---- dpkg-1.16.2.orig/scripts/Dpkg/Compression.pm 2012-03-19 02:40:08.000000000 -0400 -+++ dpkg-1.16.2/scripts/Dpkg/Compression.pm 2012-04-02 16:26:27.000000000 -0400 -@@ -52,7 +52,7 @@ - my $COMP = { - "gzip" => { - "file_ext" => "gz", -- "comp_prog" => [ "gzip", "--no-name", "--rsyncable" ], -+ "comp_prog" => [ "gzip", "--no-name"], - "decomp_prog" => [ "gunzip" ], - "default_level" => 9, - }, |