mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-17 23:34:07 +00:00
New pacman
This commit is contained in:
parent
773c365ba8
commit
603d7de082
6 changed files with 71 additions and 273 deletions
BIN
core/pacman/.DS_Store
vendored
BIN
core/pacman/.DS_Store
vendored
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
From dc817a2061699cd1f33ca93f0d93a1fbc2f33ea1 Mon Sep 17 00:00:00 2001
|
||||
From: Allan McRae <allan@archlinux.org>
|
||||
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 <allan@archlinux.org>
|
||||
Signed-off-by: Dan McGee <dan@archlinux.org>
|
||||
---
|
||||
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
|
||||
|
53
core/pacman/PKGBUILD
Normal file → Executable file
53
core/pacman/PKGBUILD
Normal file → Executable file
|
@ -1,40 +1,44 @@
|
|||
# Maintainer: Mike Staszel <mikestaszel@plugboxlinux.org>
|
||||
# Maintainer: Aaron Griffin <aaron@archlinux.org>
|
||||
# Maintainer: Dan McGee <dan@archlinux.org>
|
||||
|
||||
# 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
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
From d85421ec62cdcd0b4b1f162b9908dc3eb0b704b4 Mon Sep 17 00:00:00 2001
|
||||
From: Pierre Schmitz <pierre@archlinux.de>
|
||||
Date: Thu, 18 Feb 2010 04:18:10 +0000
|
||||
Subject: contrib/*_completion: match *.pkg.tar.*
|
||||
|
||||
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
|
||||
Signed-off-by: Dan McGee <dan@archlinux.org>
|
||||
---
|
||||
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
|
0
core/pacman/pacman.install
Normal file → Executable file
0
core/pacman/pacman.install
Normal file → Executable file
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
-#include "config.h"
|
||||
-
|
||||
#include <stdio.h> /* printf */
|
||||
+#include <stdlib.h> /* malloc/free */
|
||||
#include <string.h> /* strncpy */
|
||||
|
||||
-#include <alpm.h>
|
||||
-
|
||||
#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 <ver1> <ver2>\n\n", BASENAME);
|
Loading…
Reference in a new issue