From 603d7de0824d4d253bd320fabe252f77238dc467 Mon Sep 17 00:00:00 2001 From: Mike Staszel Date: Fri, 9 Jul 2010 18:32:36 -0700 Subject: [PATCH] New pacman --- core/pacman/.DS_Store | Bin 6148 -> 0 bytes ...-to-sane-defaults-for-library-stripp.patch | 32 +++ core/pacman/PKGBUILD | 53 +++-- core/pacman/completion.patch | 68 ------- core/pacman/pacman.install | 0 core/pacman/vercmp.patch | 191 ------------------ 6 files changed, 71 insertions(+), 273 deletions(-) delete mode 100644 core/pacman/.DS_Store create mode 100644 core/pacman/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch mode change 100644 => 100755 core/pacman/PKGBUILD delete mode 100644 core/pacman/completion.patch mode change 100644 => 100755 core/pacman/pacman.install delete mode 100644 core/pacman/vercmp.patch diff --git a/core/pacman/.DS_Store b/core/pacman/.DS_Store deleted file mode 100644 index ef52f4c0beac98999d8d6f76c13f6b18db8376f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S)b+k)Uu%d0&9UA6QW+sQCd%coYOoL+>izl|O^ohmb4>QPH4TX?O0{ zJ9qLFUM~P!eLP$N9e^d>5ql4F^XKj}JE@Ej={(~dFL=f!wissB#}m#y$1Cp1e4Oy# z@N}~qwwv9sVNLfrvEzp+D+Q#06p#W^Knnb-fcIY7@+?tN3P=Gd@U4J<9~#}UFB}u& z)4>oU0CB-|7}qgN5Su56ec_nM49${COsdt0VM%AcRb5{=CMF#gH}jmj*=jMOoK;&F6jLm>6{CgHF`Xfa@ZY0)MT*7gpCJxBvhE diff --git a/core/pacman/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch b/core/pacman/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch new file mode 100644 index 000000000..8baa35e65 --- /dev/null +++ b/core/pacman/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch @@ -0,0 +1,32 @@ +From dc817a2061699cd1f33ca93f0d93a1fbc2f33ea1 Mon Sep 17 00:00:00 2001 +From: Allan McRae +Date: Thu, 17 Jun 2010 14:32:08 +1000 +Subject: [PATCH] makepkg: fallback to sane defaults for library stripping + +If the library stripping variables are not defined in makepkg.conf, +libraries will be fully stripped and become broken. Fallback to a +sane default stripping level. + +Signed-off-by: Allan McRae +Signed-off-by: Dan McGee +--- + scripts/makepkg.sh.in | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in +index d986701..e64b564 100644 +--- a/scripts/makepkg.sh.in ++++ b/scripts/makepkg.sh.in +@@ -864,6 +864,9 @@ tidy_install() { + + if [[ $(check_option strip) = y && -n ${STRIP_DIRS[*]} ]]; then + msg2 "$(gettext "Stripping unneeded symbols from binaries and libraries...")" ++ # make sure library stripping variables are defined to prevent excess stripping ++ [[ -z ${STRIP_SHARED+x} ]] && STRIP_SHARED="-S" ++ [[ -z ${STRIP_STATIC+x} ]] && STRIP_STATIC="-S" + local binary + find ${STRIP_DIRS[@]} -type f -perm -u+w 2>/dev/null | while read binary ; do + case "$(file -bi "$binary")" in +-- +1.7.1 + diff --git a/core/pacman/PKGBUILD b/core/pacman/PKGBUILD old mode 100644 new mode 100755 index 725030f44..f436a9e59 --- a/core/pacman/PKGBUILD +++ b/core/pacman/PKGBUILD @@ -1,40 +1,44 @@ # Maintainer: Mike Staszel +# Maintainer: Aaron Griffin +# Maintainer: Dan McGee + +# Plugbox changes: +# - pacman.conf +# - makepkg.conf with ARM stuff pkgname=pacman -pkgver=3.3.3 -pkgrel=5 +pkgver=3.4.0 +pkgrel=2 pkgdesc="A library-based package manager with dependency support" arch=('arm') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base') depends=('bash' 'libarchive>=2.7.1' 'libfetch>=2.25' 'pacman-mirrorlist') -optdepends=('fakeroot: for makepkg usage as normal user' - 'python: for rankmirrors script usage') +optdepends=('fakeroot: for makepkg usage as normal user') backup=(etc/pacman.conf etc/makepkg.conf) install=pacman.install options=(!libtool) source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz pacman.conf makepkg.conf - vercmp.patch - completion.patch) -md5sums=('a8cef73d68e2a4c3a46fb46c33210719' + 0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch) +md5sums=('50ad71be1faaad84842c576e239d1bb5' '8a1eea46c9af940a8812dfb4bbbd159d' 'ce00f190714c02ef26117ecfdf5fa296' - '84129116c61c8a7cad03a5ae5d80aee5' - '7eddda58bf55809e6bde14b446e41a15') + 'f8c4a3cc7702a7a70d177659441495c5') +sha256sums=('cd80e206ee653ce337555c73b7064088e672e9341245317fe09dc52d06bff3c3' + '97fb68536c1179a7de52dfb8a107c6e9bf3a71eaa6a98d6ae74dc224d4ca5838' + '3a60e1f895c90c8e74f5ca389fa05fb3328745e9873c5452b8cd1b2e68bee418' + '99f1d108f930b134cfb4c1ca8c86cd282fe9efb69de39cd747218f3d448dda44') # keep an upgrade path for older installations PKGEXT='.pkg.tar.gz' build() { cd $srcdir/$pkgname-$pkgver - # avoid linking vercmp against libalpm as this might be broken during a transaction - patch -p0 -i $srcdir/vercmp.patch || return 1 - # fix completion for .pkg.tar.xz pacakges (included in next upstream release) - patch -p1 -i $srcdir/completion.patch || return 1 - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var + patch -Np1 < $srcdir/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-doc make || return 1 } @@ -47,6 +51,27 @@ package() { install -m644 $srcdir/pacman.conf $pkgdir/etc/ install -m644 $srcdir/makepkg.conf $pkgdir/etc/ +# Plugbox wants to be old-fashioned and just use their +# files instead of letting sed modify them, so skip the part below + +# # set things correctly in the default conf file +# case "$CARCH" in +# i686) +# mycarch="i686" +# mychost="i686-pc-linux-gnu" +# myflags="-march=i686 " +# ;; +# x86_64) +# mycarch="x86_64" +# mychost="x86_64-unknown-linux-gnu" +# myflags="-march=x86-64 " +# ;; +# esac +# sed -i $pkgdir/etc/makepkg.conf \ +# -e "s|@CARCH[@]|$mycarch|g" \ +# -e "s|@CHOST[@]|$mychost|g" \ +# -e "s|@CARCHFLAGS[@]|$myflags|g" + # install completion files mkdir -p $pkgdir/etc/bash_completion.d/ install -m644 contrib/bash_completion $pkgdir/etc/bash_completion.d/pacman diff --git a/core/pacman/completion.patch b/core/pacman/completion.patch deleted file mode 100644 index 6ff04c046..000000000 --- a/core/pacman/completion.patch +++ /dev/null @@ -1,68 +0,0 @@ -From d85421ec62cdcd0b4b1f162b9908dc3eb0b704b4 Mon Sep 17 00:00:00 2001 -From: Pierre Schmitz -Date: Thu, 18 Feb 2010 04:18:10 +0000 -Subject: contrib/*_completion: match *.pkg.tar.* - -Signed-off-by: Pierre Schmitz -Signed-off-by: Dan McGee ---- -diff --git a/contrib/bash_completion b/contrib/bash_completion -index 62e5bc9..a231eb6 100644 ---- a/contrib/bash_completion -+++ b/contrib/bash_completion -@@ -321,7 +321,7 @@ _pacman () - case "${op}" in - U) - COMPREPLY=( $( compgen -d -- "$cur" ) \ -- $( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) ) -+ $( compgen -f -X '!*.pkg.tar.*' -- "$cur" ) ) - return 0 - ;; - h|V) -@@ -336,7 +336,7 @@ _pacman () - $( compgen -f -- "$cur" ) ) - elif _instring $mod p; then - COMPREPLY=( $( compgen -d -- "$cur" ) \ -- $( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) ) -+ $( compgen -f -X '!*.pkg.tar.*' -- "$cur" ) ) - elif _instring $mod u; then - COMPREPLY='' - return 0 -diff --git a/contrib/zsh_completion b/contrib/zsh_completion -index 2f43d9b..01b3c44 100644 ---- a/contrib/zsh_completion -+++ b/contrib/zsh_completion -@@ -32,7 +32,7 @@ _pacman_opts_common=( - _pacman_opts_pkgfile=( - '-d[Skip dependency checks]' - '-f[Overwrite conflicting files]' -- '*:package file:_files -g "*.pkg.tar.gz(.)"' -+ '*:package file:_files -g "*.pkg.tar.*(.)"' - ) - - # options for passing to _arguments: subactions for --query command -@@ -120,7 +120,7 @@ _pacman_action_query() { - _arguments -s : \ - "$_pacman_opts_common[@]" \ - "$_pacman_opts_query_modifiers[@]" \ -- '*:package file:_files -g "*.pkg.tar.gz"' -+ '*:package file:_files -g "*.pkg.tar.*"' - ;; - query_group) - _arguments -s : \ -@@ -295,11 +295,11 @@ _pacman() { - "$_pacman_opts_query_modifiers[@]" \ - '*:package file:_files' - ;; -- -Q*p*) # file *.pkg.tar.gz -+ -Q*p*) # file *.pkg.tar.* - _arguments -s : \ - "$_pacman_opts_common[@]" \ - "$_pacman_opts_query_modifiers[@]" \ -- '*:package file:_files -g "*.pkg.tar.gz"' -+ '*:package file:_files -g "*.pkg.tar.*"' - ;; - -Q*) _pacman_action_query ;; - -R*) _pacman_action_remove ;; --- -cgit v0.8.3.1-3-ga650 diff --git a/core/pacman/pacman.install b/core/pacman/pacman.install old mode 100644 new mode 100755 diff --git a/core/pacman/vercmp.patch b/core/pacman/vercmp.patch deleted file mode 100644 index e6cae4d1a..000000000 --- a/core/pacman/vercmp.patch +++ /dev/null @@ -1,191 +0,0 @@ ---- src/util/vercmp.c 2009-09-30 03:38:22.000000000 +0200 -+++ src/util/vercmp.c 2010-04-07 18:49:13.659173306 +0200 -@@ -18,17 +18,184 @@ - * along with this program. If not, see . - */ - --#include "config.h" -- - #include /* printf */ -+#include /* malloc/free */ - #include /* strncpy */ - --#include -- - #define BASENAME "vercmp" - - #define MAX_LEN 255 - -+/** Compare two version strings and determine which one is 'newer'. -+ * Returns a value comparable to the way strcmp works. Returns 1 -+ * if a is newer than b, 0 if a and b are the same version, or -1 -+ * if b is newer than a. -+ * -+ * This function has been adopted from the rpmvercmp function located -+ * at lib/rpmvercmp.c, and was most recently updated against rpm -+ * version 4.4.2.3. Small modifications have been made to make it more -+ * consistent with the libalpm coding style. -+ * -+ * Keep in mind that the pkgrel is only compared if it is available -+ * on both versions handed to this function. For example, comparing -+ * 1.5-1 and 1.5 will yield 0; comparing 1.5-1 and 1.5-2 will yield -+ * -1 as expected. This is mainly for supporting versioned dependencies -+ * that do not include the pkgrel. -+ */ -+static int alpm_pkg_vercmp(const char *a, const char *b) -+{ -+ char oldch1, oldch2; -+ char *str1, *str2; -+ char *ptr1, *ptr2; -+ char *one, *two; -+ int rc; -+ int isnum; -+ int ret = 0; -+ -+ /* libalpm added code. ensure our strings are not null */ -+ if(!a) { -+ if(!b) return(0); -+ return(-1); -+ } -+ if(!b) return(1); -+ -+ /* easy comparison to see if versions are identical */ -+ if(strcmp(a, b) == 0) return(0); -+ -+ str1 = strdup(a); -+ str2 = strdup(b); -+ -+ one = str1; -+ two = str2; -+ -+ /* loop through each version segment of str1 and str2 and compare them */ -+ while(*one && *two) { -+ while(*one && !isalnum((int)*one)) one++; -+ while(*two && !isalnum((int)*two)) two++; -+ -+ /* If we ran to the end of either, we are finished with the loop */ -+ if(!(*one && *two)) break; -+ -+ ptr1 = one; -+ ptr2 = two; -+ -+ /* grab first completely alpha or completely numeric segment */ -+ /* leave one and two pointing to the start of the alpha or numeric */ -+ /* segment and walk ptr1 and ptr2 to end of segment */ -+ if(isdigit((int)*ptr1)) { -+ while(*ptr1 && isdigit((int)*ptr1)) ptr1++; -+ while(*ptr2 && isdigit((int)*ptr2)) ptr2++; -+ isnum = 1; -+ } else { -+ while(*ptr1 && isalpha((int)*ptr1)) ptr1++; -+ while(*ptr2 && isalpha((int)*ptr2)) ptr2++; -+ isnum = 0; -+ } -+ -+ /* save character at the end of the alpha or numeric segment */ -+ /* so that they can be restored after the comparison */ -+ oldch1 = *ptr1; -+ *ptr1 = '\0'; -+ oldch2 = *ptr2; -+ *ptr2 = '\0'; -+ -+ /* this cannot happen, as we previously tested to make sure that */ -+ /* the first string has a non-null segment */ -+ if (one == ptr1) { -+ ret = -1; /* arbitrary */ -+ goto cleanup; -+ } -+ -+ /* take care of the case where the two version segments are */ -+ /* different types: one numeric, the other alpha (i.e. empty) */ -+ /* numeric segments are always newer than alpha segments */ -+ /* XXX See patch #60884 (and details) from bugzilla #50977. */ -+ if (two == ptr2) { -+ ret = isnum ? 1 : -1; -+ goto cleanup; -+ } -+ -+ if (isnum) { -+ /* this used to be done by converting the digit segments */ -+ /* to ints using atoi() - it's changed because long */ -+ /* digit segments can overflow an int - this should fix that. */ -+ -+ /* throw away any leading zeros - it's a number, right? */ -+ while (*one == '0') one++; -+ while (*two == '0') two++; -+ -+ /* whichever number has more digits wins */ -+ if (strlen(one) > strlen(two)) { -+ ret = 1; -+ goto cleanup; -+ } -+ if (strlen(two) > strlen(one)) { -+ ret = -1; -+ goto cleanup; -+ } -+ } -+ -+ /* strcmp will return which one is greater - even if the two */ -+ /* segments are alpha or if they are numeric. don't return */ -+ /* if they are equal because there might be more segments to */ -+ /* compare */ -+ rc = strcmp(one, two); -+ if (rc) { -+ ret = rc < 1 ? -1 : 1; -+ goto cleanup; -+ } -+ -+ /* restore character that was replaced by null above */ -+ *ptr1 = oldch1; -+ one = ptr1; -+ *ptr2 = oldch2; -+ two = ptr2; -+ -+ /* libalpm added code. check if version strings have hit the pkgrel -+ * portion. depending on which strings have hit, take correct action. -+ * this is all based on the premise that we only have one dash in -+ * the version string, and it separates pkgver from pkgrel. */ -+ if(*ptr1 == '-' && *ptr2 == '-') { -+ /* no-op, continue comparing since we are equivalent throughout */ -+ } else if(*ptr1 == '-') { -+ /* ptr1 has hit the pkgrel and ptr2 has not. continue version -+ * comparison after stripping the pkgrel from ptr1. */ -+ *ptr1 = '\0'; -+ } else if(*ptr2 == '-') { -+ /* ptr2 has hit the pkgrel and ptr1 has not. continue version -+ * comparison after stripping the pkgrel from ptr2. */ -+ *ptr2 = '\0'; -+ } -+ } -+ -+ /* this catches the case where all numeric and alpha segments have */ -+ /* compared identically but the segment separating characters were */ -+ /* different */ -+ if ((!*one) && (!*two)) { -+ ret = 0; -+ goto cleanup; -+ } -+ -+ /* the final showdown. we never want a remaining alpha string to -+ * beat an empty string. the logic is a bit weird, but: -+ * - if one is empty and two is not an alpha, two is newer. -+ * - if one is an alpha, two is newer. -+ * - otherwise one is newer. -+ * */ -+ if ( ( !*one && !isalpha((int)*two) ) -+ || isalpha((int)*one) ) { -+ ret = -1; -+ } else { -+ ret = 1; -+ } -+ -+cleanup: -+ free(str1); -+ free(str2); -+ return(ret); -+} -+ -+ - static void usage() - { - fprintf(stderr, "usage: %s \n\n", BASENAME);