New Pacman PKGBUILD

This commit is contained in:
Mike Staszel 2010-04-26 20:52:11 -05:00
parent 68ba91363f
commit e07543b785
8 changed files with 295 additions and 38 deletions

View file

@ -2,7 +2,7 @@
pkgname=filesystem
pkgver=2010.02
pkgrel=2
pkgrel=4
pkgdesc="Base filesystem"
arch=('arm')
license=('GPL')
@ -24,13 +24,13 @@ md5sums=('75c7e1770305e1f3b75c52785c137611'
'6e488ffecc8ba142c0cf7e2d7aeb832e'
'8a9042a2cedf6b6b47eb8973f14289cb'
'46bc1c4b941f19c1505102bb5bbddb8c'
'b8e469965028271eeb533d723b028cf0'
'ef40305da5803ca69d22e428ffc2ab9b'
'e5d8323a4dbee7a6d0d2a19cbf4b819f'
'81b3cb42a6ddabc2ed2310511ee9c859'
'd41d8cd98f00b204e9800998ecf8427e'
'6f48288b6fcaf0065fcb7b0e525413e0'
'40dac0de4c6b99c8ca97effbd7527c84'
'ab9c2a40eba287b2918589ab8e0b2fbf'
'5340b9287b71ffe9d4d99510bffe933f'
'f436d2e0ed02b7b73bd10c6693e95ac3'
'65d78e621ed69eed69f854c3ee2e5942'
'f7ba22b78c5d2b53f86227aa2447e7ea'
@ -90,4 +90,8 @@ build()
# Add ld.so.conf.d
mkdir -p $pkgdir/etc/ld.so.conf.d
# Prevent pacman from removing directory (FS#16886)
mkdir ${pkgdir}/var/empty
touch ${pkgdir}/var/empty/.keep
}

View file

@ -57,4 +57,11 @@ post_upgrade() {
echo "adding new group: scanner"
usr/sbin/groupadd -g 96 scanner >/dev/null
fi
if [ ! "`grep ^rfkill: etc/group`" ]; then
echo "adding new group: rfkill"
usr/sbin/groupadd -g 24 rfkill >/dev/null
fi
grep -q '^include /etc/ld.so.conf.d/\*.conf$' etc/ld.so.conf \
|| echo 'include /etc/ld.so.conf.d/*.conf' >> etc/ld.so.conf
}

View file

@ -2,5 +2,5 @@
# /etc/fstab: static file system information
#
# <file system> <dir> <type> <options> <dump> <pass>
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs nodev,nosuid 0 0
devpts /dev/pts devpts defaults 0 0
shm /dev/shm tmpfs nodev,nosuid 0 0

View file

@ -11,7 +11,9 @@ kmem:::
wheel:::root
ftp:::
mail:::
uucp:::
log:::root
locate:::
smmsp:::
http:::
games:::

View file

@ -1,9 +1,8 @@
# Maintainer: Aaron Griffin <aaron@archlinux.org>
# Maintainer: Dan McGee <dan@archlinux.org>
# Maintainer: Mike Staszel <mikestaszel@plugboxlinux.org>
pkgname=pacman
pkgver=3.3.3
pkgrel=2
pkgrel=5
pkgdesc="A library-based package manager with dependency support"
arch=('arm')
url="http://www.archlinux.org/pacman/"
@ -12,19 +11,29 @@ 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')
backup=(etc/makepkg.conf)
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)
makepkg.conf
vercmp.patch
completion.patch)
md5sums=('a8cef73d68e2a4c3a46fb46c33210719'
'8a1eea46c9af940a8812dfb4bbbd159d'
'ce00f190714c02ef26117ecfdf5fa296')
'ce00f190714c02ef26117ecfdf5fa296'
'84129116c61c8a7cad03a5ae5d80aee5'
'7eddda58bf55809e6bde14b446e41a15')
# 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
make || return 1
}

View file

@ -0,0 +1,68 @@
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

191
core/pacman/vercmp.patch Normal file
View file

@ -0,0 +1,191 @@
--- 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);

View file

@ -1,22 +1,12 @@
# Maintainer: Ian Botley <ianjb@pluapps.com>
# Maintainer: Ian Botley <ianjb@plugboxlinux.org>
pkgname=u-boot
pkgver=2010.03
pkgrel=1
pkgdesc=""
pkgdesc="u-Boot for Pogoplug devices"
arch=('arm')
url="ftp://ftp.denx.de/pub/u-boot/"
license=('GPL')
groups=()
depends=()
makedepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
source=(ftp://ftp.denx.de/pub/u-boot/$pkgname-$pkgver.tar.bz2
0001-DockStar-Change-RAM-definitions-to-one-bank-128-MB.patch
0002-DockStar-environment-is-at-0xa0000.patch
@ -32,7 +22,6 @@ source=(ftp://ftp.denx.de/pub/u-boot/$pkgname-$pkgver.tar.bz2
0012-DockStar-Boot-from-USB-and-netconsole.-CHANGE-THIS-T.patch
0013-DockStar-Workaround-to-get-the-kernel-loaded-after-a.patch
)
noextract=()
md5sums=('2bf5ebf497dddc52440b1ea386cc1332'
'ec91fd91674c43f87d8495bb6ecc60f3'
'2f1002f146b2bdf971ddac8de89136ad'
@ -50,31 +39,18 @@ md5sums=('2bf5ebf497dddc52440b1ea386cc1332'
build() {
cd $srcdir/$pkgname-$pkgver
echo 1
patch -p1 -i $srcdir/0001-DockStar-Change-RAM-definitions-to-one-bank-128-MB.patch || return 1
echo 2
patch -p1 -i $srcdir/0002-DockStar-environment-is-at-0xa0000.patch || return 1
echo 3
patch -p1 -i $srcdir/0003-DockStar-MTD-partitions.patch || return 1
echo 4
patch -p1 -i $srcdir/0004-DockStar-Change-prompt-and-ident-string.patch || return 1
echo 5
patch -p1 -i $srcdir/0005-DockStar-Disable-environment-in-NAND.-We-don-t-want-.patch || return 1
echo 6
patch -p1 -i $srcdir/0006-DockStar-Add-support-for-ext2.patch || return 1
echo 7
patch -p1 -i $srcdir/0007-DockStar-Include-long-help-messages.patch || return 1
echo 8
patch -p1 -i $srcdir/0008-DockStar-Change-TEXT_BASE-from-0x600000-to-0xc00000-.patch || return 1
echo 9
patch -p1 -i $srcdir/0009-DockStar-Small-build-script.patch || return 1
echo 10
patch -p1 -i $srcdir/0010-DockStar-Definition-for-the-MAC.-CHANGE-THIS-TO-THE-.patch || return 1
echo 11
patch -p1 -i $srcdir/0011-DockStar-CONFIG_PREBOOT-kernel-and-netconsole-CHANGE.patch || return 1
echo 12
patch -p1 -i $srcdir/0012-DockStar-Boot-from-USB-and-netconsole.-CHANGE-THIS-T.patch || return 1
echo 13
patch -p1 -i $srcdir/0013-DockStar-Workaround-to-get-the-kernel-loaded-after-a.patch || return 1
make sheevaplug_config || return 1