From f4744110e801e5fcbb1ee4af81882bc928982d03 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 7 Aug 2012 12:49:21 -0500
Subject: pacman 4.0.3

---
 ...flict-for-replacing-owned-empty-directory.patch | 152 +++++++++++++++++++++
 .../0002-Check-empty-subdirectory-ownership.patch  |  61 +++++++++
 abs/core/pacman/PKGBUILD                           |  57 +++++---
 abs/core/pacman/__changelog                        |   2 -
 abs/core/pacman/makepkg.conf                       |  31 +++--
 ...lback-to-sane-defaults-for-library-stripp.patch |  32 -----
 abs/core/pacman/old/PKGBUILD                       |  74 ----------
 abs/core/pacman/old/makepkg.conf                   | 115 ----------------
 abs/core/pacman/old/mirrorlist                     | 101 --------------
 abs/core/pacman/old/pacman.conf                    |  84 ------------
 abs/core/pacman/old/pacman.install                 |  53 -------
 abs/core/pacman/pacman-3.4.1-1-i686.pkg.tar.gz     |   1 -
 abs/core/pacman/pacman.conf                        |  72 ++++------
 abs/core/pacman/pacman.conf.x86_64                 |  27 +++-
 abs/core/pacman/pacman.install                     |  31 ++---
 15 files changed, 325 insertions(+), 568 deletions(-)
 create mode 100644 abs/core/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch
 create mode 100644 abs/core/pacman/0002-Check-empty-subdirectory-ownership.patch
 delete mode 100644 abs/core/pacman/__changelog
 delete mode 100644 abs/core/pacman/old/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch
 delete mode 100644 abs/core/pacman/old/PKGBUILD
 delete mode 100644 abs/core/pacman/old/makepkg.conf
 delete mode 100644 abs/core/pacman/old/mirrorlist
 delete mode 100644 abs/core/pacman/old/pacman.conf
 delete mode 100644 abs/core/pacman/old/pacman.install
 delete mode 120000 abs/core/pacman/pacman-3.4.1-1-i686.pkg.tar.gz

diff --git a/abs/core/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch b/abs/core/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch
new file mode 100644
index 0000000..85622aa
--- /dev/null
+++ b/abs/core/pacman/0001-Add-conflict-for-replacing-owned-empty-directory.patch
@@ -0,0 +1,152 @@
+From 717fdb8ee0fd23cf72fc7d2832317f513caefa2c Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 21:36:36 +1000
+Subject: [PATCH 1/4] Add conflict for replacing owned empty directory
+
+When two packages own an empty directory, pacman finds no conflict when
+one of those packages wants to replace the directory with a file or a
+symlink.  When it comes to actually extracting the new file/symlink,
+pacman sees the directory is still there (we do not remove empty
+directories if they are owned by a package) and refuses to extract.
+
+Detect this potential conflict early and bail. Note that it is a
+_potential_ conflict and not a guaranteed one as the other package owning
+the directory could be updated or removed first which would remove
+the conflict.  However, pacman currently can not sort package installation
+order to ensure this, so this conflict requires manual upgrade ordering.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c               | 32 ++++++++++++++++++++++++++------
+ test/pacman/tests/fileconflict009.py | 20 ++++++++++++++++++++
+ test/pacman/tests/fileconflict010.py | 20 ++++++++++++++++++++
+ 3 files changed, 66 insertions(+), 6 deletions(-)
+ create mode 100644 test/pacman/tests/fileconflict009.py
+ create mode 100644 test/pacman/tests/fileconflict010.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index 32f6f30..efa1a87 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -328,15 +328,35 @@ const alpm_file_t *_alpm_filelist_contains(alpm_filelist_t *filelist,
+ 	return NULL;
+ }
+ 
+-static int dir_belongsto_pkg(const char *root, const char *dirpath,
++static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ 		alpm_pkg_t *pkg)
+ {
++	alpm_list_t *i;
+ 	struct stat sbuf;
+ 	char path[PATH_MAX];
+ 	char abspath[PATH_MAX];
+-	struct dirent *ent = NULL;
+ 	DIR *dir;
++	struct dirent *ent = NULL;
++	const char *root = handle->root;
++
++	/* TODO: this is an overly strict check but currently pacman will not
++	 * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
++	 * is not simple as even if the directory is being unowned by a conflicting
++	 * package, pacman does not sort this to ensure all required directory
++	 * "removals" happen before installation of file/symlink */
++
++	/* check that no other _installed_ package owns the directory */
++	for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
++		if(pkg == i->data) {
++			continue;
++		}
++
++		if(_alpm_filelist_contains(alpm_pkg_get_files(i->data), dirpath)) {
++			return 0;
++		}
++	}
+ 
++	/* check all files in directory are owned by the package */
+ 	snprintf(abspath, PATH_MAX, "%s%s", root, dirpath);
+ 	dir = opendir(abspath);
+ 	if(dir == NULL) {
+@@ -349,13 +369,13 @@ static int dir_belongsto_pkg(const char *root, const char *dirpath,
+ 		if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
+ 			continue;
+ 		}
+-		snprintf(path, PATH_MAX, "%s/%s", dirpath, name);
++		snprintf(path, PATH_MAX, "%s%s", dirpath, name);
+ 		snprintf(abspath, PATH_MAX, "%s%s", root, path);
+ 		if(stat(abspath, &sbuf) != 0) {
+ 			continue;
+ 		}
+ 		if(S_ISDIR(sbuf.st_mode)) {
+-			if(dir_belongsto_pkg(root, path, pkg)) {
++			if(dir_belongsto_pkg(handle, path, pkg)) {
+ 				continue;
+ 			} else {
+ 				closedir(dir);
+@@ -529,9 +549,9 @@ alpm_list_t *_alpm_db_find_fileconflicts(alpm_handle_t *handle,
+ 				sprintf(dir, "%s/", filestr);
+ 				if(_alpm_filelist_contains(alpm_pkg_get_files(dbpkg), dir)) {
+ 					_alpm_log(handle, ALPM_LOG_DEBUG,
+-							"check if all files in %s belongs to %s\n",
++							"check if all files in %s belong to %s\n",
+ 							dir, dbpkg->name);
+-					resolved_conflict = dir_belongsto_pkg(handle->root, filestr, dbpkg);
++					resolved_conflict = dir_belongsto_pkg(handle, dir, dbpkg);
+ 				}
+ 				free(dir);
+ 			}
+diff --git a/test/pacman/tests/fileconflict009.py b/test/pacman/tests/fileconflict009.py
+new file mode 100644
+index 0000000..904af4a
+--- /dev/null
++++ b/test/pacman/tests/fileconflict009.py
+@@ -0,0 +1,20 @@
++self.description = "dir->symlink change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir -> /usr/dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+diff --git a/test/pacman/tests/fileconflict010.py b/test/pacman/tests/fileconflict010.py
+new file mode 100644
+index 0000000..0a3ce83
+--- /dev/null
++++ b/test/pacman/tests/fileconflict010.py
+@@ -0,0 +1,20 @@
++self.description = "dir->file change during package upgrade (directory conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++lp2 = pmpkg("pkg2")
++lp2.files = ["dir/"]
++self.addpkg2db("local", lp2)
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("PKG_VERSION=pkg2|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+-- 
+1.7.11.1
+
diff --git a/abs/core/pacman/0002-Check-empty-subdirectory-ownership.patch b/abs/core/pacman/0002-Check-empty-subdirectory-ownership.patch
new file mode 100644
index 0000000..6cf496d
--- /dev/null
+++ b/abs/core/pacman/0002-Check-empty-subdirectory-ownership.patch
@@ -0,0 +1,61 @@
+From 44e9fdd0e848382337edb97d41e7317638a67bac Mon Sep 17 00:00:00 2001
+From: Allan McRae <allan@archlinux.org>
+Date: Sun, 8 Jul 2012 23:58:37 +1000
+Subject: [PATCH 2/4] Check empty subdirectory ownership
+
+When checking if a package owns a directory, it is important to check
+not only that all the files in the directory are part of the package,
+but also if the directory is part of a package.  This catches empty
+subdirectories during conflict checking for directory to file/symlink
+replacements.
+
+Signed-off-by: Allan McRae <allan@archlinux.org>
+Signed-off-by: Dan McGee <dan@archlinux.org>
+---
+ lib/libalpm/conflict.c               |  5 +++++
+ test/pacman/tests/fileconflict012.py | 17 +++++++++++++++++
+ 2 files changed, 22 insertions(+)
+ create mode 100644 test/pacman/tests/fileconflict012.py
+
+diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
+index efa1a87..d6e5d8c 100644
+--- a/lib/libalpm/conflict.c
++++ b/lib/libalpm/conflict.c
+@@ -339,6 +339,11 @@ static int dir_belongsto_pkg(alpm_handle_t *handle, const char *dirpath,
+ 	struct dirent *ent = NULL;
+ 	const char *root = handle->root;
+ 
++	/* check directory is actually in package - used for subdirectory checks */
++	if(!_alpm_filelist_contains(alpm_pkg_get_files(pkg), dirpath)) {
++		return 0;
++	}
++
+ 	/* TODO: this is an overly strict check but currently pacman will not
+ 	 * overwrite a directory with a file (case 10/11 in add.c). Adjusting that
+ 	 * is not simple as even if the directory is being unowned by a conflicting
+diff --git a/test/pacman/tests/fileconflict012.py b/test/pacman/tests/fileconflict012.py
+new file mode 100644
+index 0000000..421b739
+--- /dev/null
++++ b/test/pacman/tests/fileconflict012.py
+@@ -0,0 +1,17 @@
++self.description = "dir->file change during package upgrade (filesystem file conflict)"
++
++lp1 = pmpkg("pkg1")
++lp1.files = ["dir/"]
++self.addpkg2db("local", lp1)
++
++self.filesystem = ["dir/file"]
++
++p = pmpkg("pkg1", "1.0-2")
++p.files = ["dir"]
++self.addpkg2db("sync", p)
++
++self.args = "-S pkg1"
++
++self.addrule("PACMAN_RETCODE=1")
++self.addrule("PKG_VERSION=pkg1|1.0-1")
++self.addrule("DIR_EXIST=dir/")
+-- 
+1.7.11.1
+
diff --git a/abs/core/pacman/PKGBUILD b/abs/core/pacman/PKGBUILD
index 80dabe4..623f4cc 100644
--- a/abs/core/pacman/PKGBUILD
+++ b/abs/core/pacman/PKGBUILD
@@ -1,35 +1,52 @@
-# $Id$
+# vim: set ts=2 sw=2 et:
+# $Id: PKGBUILD 163493 2012-07-13 12:31:08Z allan $
 # Maintainer: Dan McGee <dan@archlinux.org>
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
 
 pkgname=pacman
-pkgver=3.5.3
-pkgrel=5
+pkgver=4.0.3
+pkgrel=3
 pkgdesc="A library-based package manager with dependency support"
 arch=('i686' 'x86_64')
 url="http://www.archlinux.org/pacman/"
 license=('GPL')
 groups=('base')
-depends=('bash' 'libarchive>=2.8.4' 'libfetch>=2.28' 'pacman-mirrorlist')
-optdepends=('fakeroot: for makepkg usage as normal user'
-            'curl: for rankmirrors usage')
+depends=('bash' 'glibc>=2.15' 'libarchive>=3.0.2' 'curl>=7.19.4'
+         'gpgme' 'pacman-mirrorlist' 'archlinux-keyring')
+makedepends=('asciidoc')
+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
+source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig}
+        0001-Add-conflict-for-replacing-owned-empty-directory.patch
+        0002-Check-empty-subdirectory-ownership.patch
         pacman.conf
         pacman.conf.x86_64
         makepkg.conf)
-
-# keep an upgrade path for older installations
-PKGEXT='.pkg.tar.gz'
+md5sums=('387965c7125e60e5f0b9ff3b427fe0f9'
+         '1a70392526c8768470da678b31905a6e'
+         '1a9b79788640907a2b34e8671cacc94a'
+         'a9ddd43891bed364e1e97d27b2887bf1'
+         '99734ea46795f466d41c503e9e23b6d4'
+         '556d49489e82b5750cf026d3b18c8f4f'
+         '589cd34eb9d5b678455e8289394f523e')
 
 build() {
   cd $srcdir/$pkgname-$pkgver
+
+  patch -p1 -i $srcdir/0001-Add-conflict-for-replacing-owned-empty-directory.patch
+  patch -p1 -i $srcdir/0002-Check-empty-subdirectory-ownership.patch
+
   ./configure --prefix=/usr --sysconfdir=/etc \
     --localstatedir=/var --enable-doc
   make
 }
 
+check() {
+  make -C "$pkgname-$pkgver" check
+}
+
 package() {
   cd $srcdir/$pkgname-$pkgver
   make DESTDIR=$pkgdir install
@@ -41,13 +58,13 @@ package() {
       install -m644 $srcdir/pacman.conf $pkgdir/etc/pacman.conf
       mycarch="i686"
       mychost="i686-pc-linux-gnu"
-      myflags="-march=i686 "
+      myflags="-march=i686"
       ;;
     x86_64)
       install -m644 $srcdir/pacman.conf.x86_64 $pkgdir/etc/pacman.conf
       mycarch="x86_64"
       mychost="x86_64-unknown-linux-gnu"
-      myflags="-march=x86-64 "
+      myflags="-march=x86-64"
       ;;
   esac
   install -m644 $srcdir/makepkg.conf $pkgdir/etc/
@@ -58,14 +75,10 @@ package() {
     -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
-  mkdir -p $pkgdir/usr/share/zsh/site-functions/
-  install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
-}
+  install -Dm644 contrib/bash_completion "$pkgdir/usr/share/bash-completion/completions/pacman"
+  for f in makepkg pacman-key; do
+    ln -s pacman "$pkgdir/usr/share/bash-completion/completions/$f"
+  done
 
-# vim: set ts=2 sw=2 et:
-md5sums=('c36c18ed4d8ec69c0ecb4f9684266901'
-         '8ec73ab08305cdbe3671aedbbb4ceede'
-         'ae905192b4bf71772173e8abbd53291e'
-         'a8684989d3dfad5a6e1bcf95af3e571b')
+  install -Dm644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
+}
diff --git a/abs/core/pacman/__changelog b/abs/core/pacman/__changelog
deleted file mode 100644
index f028169..0000000
--- a/abs/core/pacman/__changelog
+++ /dev/null
@@ -1,2 +0,0 @@
-make cache dir /data/var/cache/pacman/pkg
-add custom message to post_upgrade() of pacman.install
diff --git a/abs/core/pacman/makepkg.conf b/abs/core/pacman/makepkg.conf
index a655e93..25ca015 100644
--- a/abs/core/pacman/makepkg.conf
+++ b/abs/core/pacman/makepkg.conf
@@ -8,16 +8,16 @@
 #
 #-- The download utilities that makepkg should use to acquire sources
 #  Format: 'protocol::agent'
-DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
-          'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
-          'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
+DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
+          'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
+          'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
           'rsync::/usr/bin/rsync -z %u %o'
           'scp::/usr/bin/scp -C %u %o')
 
 # Other common tools:
 # /usr/bin/snarf
 # /usr/bin/lftpget -c
-# /usr/bin/curl
+# /usr/bin/wget
 
 #########################################################################
 # ARCHITECTURE, COMPILE FLAGS
@@ -26,12 +26,12 @@ DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
 CARCH="@CARCH@"
 CHOST="@CHOST@"
 
-#-- Exclusive: will only run on @CARCH@
+#-- Compiler and Linker Flags
 # -march (or -mcpu) builds exclusively for an architecture
 # -mtune optimizes for an architecture, but builds for whole processor family
-CFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
-CXXFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
-LDFLAGS="-Wl,--hash-style=gnu -Wl,--as-needed"
+CFLAGS="@CARCHFLAGS@ -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
+CXXFLAGS="@CARCHFLAGS@ -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2"
+LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro"
 #-- Make Flags: change this for DistCC/SMP systems
 #MAKEFLAGS="-j2"
 
@@ -39,7 +39,7 @@ LDFLAGS="-Wl,--hash-style=gnu -Wl,--as-needed"
 # BUILD ENVIRONMENT
 #########################################################################
 #
-# Defaults: BUILDENV=(fakeroot !distcc color !ccache check)
+# Defaults: BUILDENV=(fakeroot !distcc color !ccache check !sign)
 #  A negated environment option will do the opposite of the comments below.
 #
 #-- fakeroot: Allow building packages as a non-root user
@@ -47,19 +47,23 @@ LDFLAGS="-Wl,--hash-style=gnu -Wl,--as-needed"
 #-- color:    Colorize output messages
 #-- ccache:   Use ccache to cache compilation
 #-- check:    Run the check() function if present in the PKGBUILD
+#-- sign:     Generate PGP signature file
 #
-BUILDENV=(fakeroot !distcc color !ccache check)
+BUILDENV=(fakeroot !distcc color !ccache check !sign)
 #
 #-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
 #-- specify a space-delimited list of hosts running in the DistCC cluster.
 #DISTCC_HOSTS=""
+#
+#-- Specify a directory for package building.
+#BUILDDIR=/tmp/makepkg
 
 #########################################################################
 # GLOBAL PACKAGE OPTIONS
 #   These are default values for the options=() settings
 #########################################################################
 #
-# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
+# Default: OPTIONS=(strip docs libtool emptydirs zipman purge !upx)
 #  A negated option will do the opposite of the comments below.
 #
 #-- strip:     Strip symbols from binaries/libraries
@@ -68,8 +72,9 @@ BUILDENV=(fakeroot !distcc color !ccache check)
 #-- emptydirs: Leave empty directories in packages
 #-- zipman:    Compress manual (man and info) pages in MAN_DIRS with gzip
 #-- purge:     Remove files specified by PURGE_TARGETS
+#-- upx:       Compress binary executable files using UPX
 #
-OPTIONS=(strip docs libtool emptydirs zipman purge)
+OPTIONS=(strip docs libtool emptydirs zipman purge !upx)
 
 #-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
 INTEGRITY_CHECK=(md5)
@@ -100,6 +105,8 @@ PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
 #SRCPKGDEST=/home/srcpackages
 #-- Packager: name/email of the person or organization building packages
 #PACKAGER="John Doe <john@doe.com>"
+#-- Specify a key to use for package signing
+#GPGKEY=""
 
 #########################################################################
 # EXTENSION DEFAULTS
diff --git a/abs/core/pacman/old/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch b/abs/core/pacman/old/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch
deleted file mode 100644
index 8baa35e..0000000
--- a/abs/core/pacman/old/0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-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
-
diff --git a/abs/core/pacman/old/PKGBUILD b/abs/core/pacman/old/PKGBUILD
deleted file mode 100644
index a138950..0000000
--- a/abs/core/pacman/old/PKGBUILD
+++ /dev/null
@@ -1,74 +0,0 @@
-# $Id: PKGBUILD 83376 2010-06-21 12:52:09Z dan $
-# Maintainer: Aaron Griffin <aaron@archlinux.org>
-# Maintainer: Dan McGee <dan@archlinux.org>
-
-pkgname=pacman
-pkgver=3.4.0
-pkgrel=3
-pkgdesc="A library-based package manager with dependency support"
-arch=('i686' 'x86_64')
-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')
-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
-        0001-makepkg-fallback-to-sane-defaults-for-library-stripp.patch)
-md5sums=('50ad71be1faaad84842c576e239d1bb5'
-         '80f5bb2a606553512d0db857f78d9ac2'
-         'aef317285c7d16ac495b0e53deeb948d'
-         'f8c4a3cc7702a7a70d177659441495c5')
-sha256sums=('cd80e206ee653ce337555c73b7064088e672e9341245317fe09dc52d06bff3c3'
-            '97fb68536c1179a7de52dfb8a107c6e9bf3a71eaa6a98d6ae74dc224d4ca5838'
-            '3a60e1f895c90c8e74f5ca389fa05fb3328745e9873c5452b8cd1b2e68bee418'
-            '99f1d108f930b134cfb4c1ca8c86cd282fe9efb69de39cd747218f3d448dda44')
-
-# keep an upgrade path for older installations
-PKGEXT='.pkg.tar.gz'
-
-build() {
-  cd $srcdir/$pkgname-$pkgver
-  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
-}
-
-package() {
-  cd $srcdir/$pkgname-$pkgver
-  make DESTDIR=$pkgdir install || return 1
-
-  # install Arch specific stuff
-  mkdir -p $pkgdir/etc
-  install -m644 $srcdir/pacman.conf $pkgdir/etc/
-  install -m644 $srcdir/makepkg.conf $pkgdir/etc/
-  # 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
-  mkdir -p $pkgdir/usr/share/zsh/site-functions/
-  install -m644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
-}
-
-# vim: set ts=2 sw=2 et:
diff --git a/abs/core/pacman/old/makepkg.conf b/abs/core/pacman/old/makepkg.conf
deleted file mode 100644
index ff08a0f..0000000
--- a/abs/core/pacman/old/makepkg.conf
+++ /dev/null
@@ -1,115 +0,0 @@
-#
-# /etc/makepkg.conf
-#
-
-#########################################################################
-# SOURCE ACQUISITION
-#########################################################################
-#
-#-- The download utilities that makepkg should use to acquire sources
-#  Format: 'protocol::agent'
-DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
-          'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
-          'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
-          'rsync::/usr/bin/rsync -z %u %o'
-          'scp::/usr/bin/scp -C %u %o')
-
-# Other common tools:
-# /usr/bin/snarf
-# /usr/bin/lftpget -c
-# /usr/bin/curl
-
-#########################################################################
-# ARCHITECTURE, COMPILE FLAGS
-#########################################################################
-#
-CARCH="@CARCH@"
-CHOST="@CHOST@"
-
-#-- Exclusive: will only run on @CARCH@
-# -march (or -mcpu) builds exclusively for an architecture
-# -mtune optimizes for an architecture, but builds for whole processor family
-CFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
-CXXFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
-LDFLAGS="-Wl,--hash-style=gnu -Wl,--as-needed"
-#-- Make Flags: change this for DistCC/SMP systems
-#MAKEFLAGS="-j2"
-
-#########################################################################
-# BUILD ENVIRONMENT
-#########################################################################
-#
-# Defaults: BUILDENV=(fakeroot !distcc color !ccache)
-#  A negated environment option will do the opposite of the comments below.
-#
-#-- fakeroot: Allow building packages as a non-root user
-#-- distcc:   Use the Distributed C/C++/ObjC compiler
-#-- color:    Colorize output messages
-#-- ccache:   Use ccache to cache compilation
-#
-BUILDENV=(fakeroot !distcc color !ccache)
-#
-#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
-#-- specify a space-delimited list of hosts running in the DistCC cluster.
-#DISTCC_HOSTS=""
-
-#########################################################################
-# GLOBAL PACKAGE OPTIONS
-#   These are default values for the options=() settings
-#########################################################################
-#
-# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
-#  A negated option will do the opposite of the comments below.
-#
-#-- strip:     Strip symbols from binaries/libraries in STRIP_DIRS
-#-- docs:      Save doc directories specified by DOC_DIRS
-#-- libtool:   Leave libtool (.la) files in packages
-#-- emptydirs: Leave empty directories in packages
-#-- zipman:    Compress manual (man and info) pages in MAN_DIRS with gzip
-#-- purge:     Remove files specified by PURGE_TARGETS
-#
-OPTIONS=(strip docs libtool emptydirs zipman purge)
-
-#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
-INTEGRITY_CHECK=(md5)
-#-- Options to be used when stripping binaries. See `man strip' for details.
-STRIP_BINARIES="--strip-all"
-#-- Options to be used when stripping shared libraries. See `man strip' for details.
-STRIP_SHARED="--strip-unneeded"
-#-- Options to be used when stripping static libraries. See `man strip' for details.
-STRIP_STATIC="--strip-debug"
-#-- Manual (man and info) directories to compress (if zipman is specified)
-MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
-#-- Doc directories to remove (if !docs is specified)
-DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
-#-- Directories to be searched for the strip option (if strip is specified)
-STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,sbin})
-#-- Files to be removed from all packages (if purge is specified)
-PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
-
-#########################################################################
-# PACKAGE OUTPUT
-#########################################################################
-#
-# Default: put built package and cached source in build directory
-#
-#-- Destination: specify a fixed directory where all packages will be placed
-#PKGDEST=/home/packages
-#-- Source cache: specify a fixed directory where source files will be cached
-#SRCDEST=/home/sources
-#-- Source packages: specify a fixed directory where all src packages will be placed
-#SRCPKGDEST=/home/srcpackages
-#-- Packager: name/email of the person or organization building packages
-#PACKAGER="John Doe <john@doe.com>"
-
-#########################################################################
-# EXTENSION DEFAULTS
-#########################################################################
-#
-# WARNING: Do NOT modify these variables unless you know what you are
-#          doing.
-#
-PKGEXT='.pkg.tar.xz'
-SRCEXT='.src.tar.gz'
-
-# vim: set ft=sh ts=2 sw=2 et:
diff --git a/abs/core/pacman/old/mirrorlist b/abs/core/pacman/old/mirrorlist
deleted file mode 100644
index 83e75ae..0000000
--- a/abs/core/pacman/old/mirrorlist
+++ /dev/null
@@ -1,101 +0,0 @@
-#
-# Arch Linux repository mirrorlist
-#
-
-# North America
-# - United States
-Server = ftp://ftp.archlinux.org/$repo/os/@carch@
-Server = ftp://locke.suu.edu/linux/dist/archlinux/$repo/os/@carch@
-Server = http://archlinux.unixheads.org/$repo/os/@carch@
-Server = ftp://ftp.gtlib.gatech.edu/pub/linux/distributions/archlinux/$repo/os/@carch@
-Server = ftp://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/@carch@
-Server = http://mirrors.easynews.com/linux/archlinux/$repo/os/@carch@
-Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/$repo/os/@carch@
-Server = http://holmes.umflint.edu/archlinux/$repo/os/@carch@
-Server = http://mirror.neotuli.net/arch/$repo/os/@carch@
-Server = http://mirror.rit.edu/archlinux/$repo/os/@carch@
-Server = http://mirror.umoss.org/archlinux/$repo/os/@carch@
-Server = http://schlunix.org/archlinux/$repo/os/@carch@
-# - Canada
-Server = ftp://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/@carch 
-
-# South America
-# - Brazil
-Server = http://archlinux.c3sl.ufpr.br/$repo/os/@carch@
-Server = ftp://archlinux.c3sl.ufpr.br/archlinux/$repo/os/@carch@
-Server = ftp://ftp.las.ic.unicamp.br/pub/archlinux/$repo/os/@carch@
-
-# Europe
-# - Austria
-Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/$repo/os/@carch@
-# - Belgium
-Server = ftp://ftp.belnet.be/mirror/archlinux.org/$repo/os/@carch@
-# - Czech Republic
-Server = ftp://ftp.sh.cvut.cz/MIRRORS/arch/$repo/os/@carch@
-# - Estonia
-Server = ftp://ftp.estpak.ee/pub/archlinux/$repo/os/@carch@
-# - France
-Server = ftp://mir1.archlinuxfr.org/archlinux/$repo/os/@carch@
-Server = ftp://mir2.archlinuxfr.org/archlinux/$repo/os/@carch@
-Server = ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/archlinux/$repo/os/@carch@
-Server = http://mir.archlinux.fr/$repo/os/@carch@
-Server = ftp://ftp.free.fr/mirrors/ftp.archlinux.org/$repo/os/@carch@
-Server = ftp://ftp.rez-gif.supelec.fr/Linux/archlinux/$repo/os/@carch@
-# - Germany
-Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/@carch@
-Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/@carch@
-Server = ftp://ftp.uni-bayreuth.de/pub/linux/archlinux/$repo/os/@carch@
-Server = ftp://ftp.archlinuxppc.org/@carch@/$repo/os/@carch@
-Server = ftp://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/@carch@
-Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/@carch@
-# - Great Britain
-Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/@carch@
-Server = ftp://mirrors.uk2.net/pub/archlinux/$repo/os/@carch@
-Server = http://archlinux.mirrors.uk2.net/$repo/os/@carch@
-# - Greece
-Server = ftp://ftp.ntua.gr/pub/linux/archlinux/$repo/os/@carch@
-# - Hungary
-Server = ftp://ftp.mfa.kfki.hu/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@
-# - Ireland
-Server = ftp://ftp.heanet.ie/mirrors/ftp.archlinux.org/$repo/os/@carch@
-# - Italy
-Server = ftp://mi.mirror.garr.it/mirrors/archlinux/$repo/os/@carch@
-# - Netherlands
-Server = ftp://ftp.nluug.nl/pub/metalab/distributions/archlinux/$repo/os/@carch@
-Server = ftp://ftp.surfnet.nl/pub/os/Linux/distr/archlinux/$repo/os/@carch@
-# - Norway
-Server = http://arch.likbilen.com/$repo/os/@carch
-# - Poland
-Server = ftp://mirror.icis.pcz.pl/archlinux/$repo/os/@carch@
-Server = http://piotrkosoft.net/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@
-Server = ftp://ftp.piotrkosoft.net/pub/mirrors/ftp.archlinux.org/$repo/os/@carch@
-Server = http://unix.net.pl/archlinux.org/$repo/os/@carch@
-# - Portugal
-Server = ftp://cesium.di.uminho.pt/pub/archlinux/$repo/os/@carch@
-# - Romania
-Server = ftp://ftp.iasi.roedu.net/mirrors/archlinux.org/$repo/os/@carch@
-# - Russia
-Server = ftp://mirror.yandex.ru/archlinux/$repo/os/@carch@
-Server = http://archlinux.freeside.ru/$repo/os/@carch@
-# - Sweden
-Server = ftp://ftp.ds.hj.se/pub/os/linux/archlinux/$repo/os/@carch@
-Server = ftp://ftp.gigabit.nu/$repo/os/@carch@
-# - Switzerland
-Server = http://archlinux.puzzle.ch/$repo/os/@carch@
-# - Turkey
-Server = http://server.elsistech.com/archlinux/$repo/os/@carch@
-# - Ukraine
-Server = ftp://hell.org.ua/archlinux/$repo/os/@carch@
-Server = ftp://ftp.linux.kiev.ua/pub/Linux/ArchLinux/$repo/os/@carch@
-
-# Asia
-# - Israel
-Server = http://mirror.isoc.org.il/pub/archlinux/$repo/os/@carch@
-# - Vietnam
-# Domain name is ftp.indochinalinux.com but there are frequent DNS problems
-Server = ftp://202.78.230.5/archlinux/$repo/os/@carch@
-
-# Australia
-Server = ftp://mirror.pacific.net.au/linux/archlinux/$repo/os/@carch@
-Server = ftp://mirror.aarnet.edu.au/pub/archlinux/$repo/os/@carch@
-
diff --git a/abs/core/pacman/old/pacman.conf b/abs/core/pacman/old/pacman.conf
deleted file mode 100644
index 911c23d..0000000
--- a/abs/core/pacman/old/pacman.conf
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# /etc/pacman.conf
-#
-# See the pacman.conf(5) manpage for option and repository directives
-
-#
-# GENERAL OPTIONS
-#
-[options]
-# The following paths are commented out with their default values listed.
-# If you wish to use different paths, uncomment and update the paths.
-#RootDir     = /
-#DBPath      = /var/lib/pacman/
-#CacheDir    = /var/cache/pacman/pkg/
-#LogFile     = /var/log/pacman.log
-HoldPkg     = pacman glibc
-# If upgrades are available for these packages they will be asked for first
-SyncFirst   = pacman
-#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
-#XferCommand = /usr/bin/curl -C - %u > %o
-#CleanMethod = KeepInstalled
-Architecture = auto
-
-# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
-#IgnorePkg   =
-#IgnoreGroup =
-
-#NoUpgrade   =
-#NoExtract   =
-
-# Misc options (all disabled by default)
-#UseSyslog
-#ShowSize
-#UseDelta
-#TotalDownload
-
-#
-# REPOSITORIES
-#   - can be defined here or included from another file
-#   - pacman will search repositories in the order defined here
-#   - local/custom mirrors can be added here or in separate files
-#   - repositories listed first will take precedence when packages
-#     have identical names, regardless of version number
-#   - URLs will have $repo replaced by the name of the current repo
-#   - URLs will have $arch replaced by the name of the architecture
-#
-# Repository entries are of the format:
-#       [repo-name]
-#       Server = ServerName
-#       Include = IncludePath
-#
-# The header [repo-name] is crucial - it must be present and
-# uncommented to enable the repo.
-#
-
-# The testing repositories are disabled by default. To enable, uncomment the
-# repo name header and Include lines. You can add preferred servers immediately
-# after the header, and they will be used before the default mirrors.
-
-#[testing]
-## Add your preferred servers here, they will be used first
-#Include = /etc/pacman.d/mirrorlist
-
-[core]
-# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/mirrorlist
-
-[extra]
-# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/mirrorlist
-
-#[community-testing]
-## Add your preferred servers here, they will be used first
-#Include = /etc/pacman.d/mirrorlist
-
-[community]
-# Add your preferred servers here, they will be used first
-Include = /etc/pacman.d/mirrorlist
-
-# An example of a custom package repository.  See the pacman manpage for
-# tips on creating your own repositories.
-#[custom]
-#Server = file:///home/custompkgs
-
diff --git a/abs/core/pacman/old/pacman.install b/abs/core/pacman/old/pacman.install
deleted file mode 100644
index 294222e..0000000
--- a/abs/core/pacman/old/pacman.install
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-# arg 1:  the new package version
-# arg 2:  the old package version
-post_upgrade() {
-	# one time stuff for md5sum issue with older pacman versions
-	if [ "$(vercmp $2 3.0.2)" -lt 0 ]; then
-		_resetbackups
-	fi
-}
-
-_resetbackups() {
-	echo ">>> Performing one-time reset of NoUpgrade md5sums. After this reset"
-	echo ">>> you are able to remove all NoUpgrade lines of already protected"
-	echo ">>> files from pacman.conf."
-	echo ">>>"
-
-	# path variables
-    pacconf="/etc/pacman.conf"
-    dbpath="/var/lib/pacman/local"
-
-    # get a list of NoUpgrade files from the user's pacman.conf
-    echo ">>> Retrieving pacman.conf NoUpgrade list..."
-    config=$(grep "^NoUpgrade" $pacconf | cut -d'=' -f2)
-    # add the standard list of files, even if they are already above
-    config="$config \
-    etc/passwd etc/group etc/shadow etc/sudoers \
-    etc/fstab etc/raidtab etc/ld.so.conf \
-    etc/rc.conf etc/rc.local \
-    etc/modprobe.conf etc/modules.conf \
-    etc/lilo.conf boot/grub/menu.lst"
-
-    # blank md5sum for use in sed expression
-    zeroes='00000000000000000000000000000000'
-
-    for file in $config; do
-        echo ">>> -> finding owner of /$file..."
-        line=$(LC_ALL=C LANG=C pacman -Qo /$file 2>/dev/null)
-        # if file is owned by a package, go find its incorrectly stored sum
-        if [ ! -z "$line" ]; then
-            # get the name and version of the package owning file
-            name=$(echo $line | awk '{print $5}')
-            version=$(echo $line | awk '{print $6}')
-            # set the path to the backup array holding the md5sum
-            path="$dbpath/$name-$version/files"
-            # run a sed on the path to reset the line containing $file
-            # NOTE: literal tab characters in sed expression after $file
-            echo ">>> -> resetting sum of /$file..."
-            sed -i "s#$file [0-9a-fA-F]*#$file  $zeroes#" $path
-        else
-            echo ">>> -> $file is unowned."
-        fi
-    done
-}
diff --git a/abs/core/pacman/pacman-3.4.1-1-i686.pkg.tar.gz b/abs/core/pacman/pacman-3.4.1-1-i686.pkg.tar.gz
deleted file mode 120000
index 5d96387..0000000
--- a/abs/core/pacman/pacman-3.4.1-1-i686.pkg.tar.gz
+++ /dev/null
@@ -1 +0,0 @@
-/data/pkg_repo/packages/pacman-3.4.1-1-i686.pkg.tar.gz
\ No newline at end of file
diff --git a/abs/core/pacman/pacman.conf b/abs/core/pacman/pacman.conf
index 25ab6b6..0596b7a 100644
--- a/abs/core/pacman/pacman.conf
+++ b/abs/core/pacman/pacman.conf
@@ -11,13 +11,14 @@
 # If you wish to use different paths, uncomment and update the paths.
 #RootDir     = /
 #DBPath      = /var/lib/pacman/
-CacheDir    = /data/var/cache/pacman/pkg/
+#CacheDir    = /var/cache/pacman/pkg/
 #LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
 HoldPkg     = pacman glibc
 # If upgrades are available for these packages they will be asked for first
 SyncFirst   = pacman
-#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 #XferCommand = /usr/bin/curl -C - -f %u > %o
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 #CleanMethod = KeepInstalled
 Architecture = auto
 
@@ -26,16 +27,22 @@ Architecture = auto
 #IgnoreGroup =
 
 #NoUpgrade   =
-NoUpgrade   = data/srv/hobbit/etc/bb-hosts
-NoUpgrade   = etc/func/minion.conf
 #NoExtract   =
 
-# Misc options (all disabled by default)
+# Misc options
 #UseSyslog
-#ShowSize
 #UseDelta
 #TotalDownload
-#CheckSpace
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+#SigLevel = Optional TrustedOnly
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
 
 #
 # REPOSITORIES
@@ -60,56 +67,29 @@ NoUpgrade   = etc/func/minion.conf
 # repo name header and Include lines. You can add preferred servers immediately
 # after the header, and they will be used before the default mirrors.
 
-[core]
-Server = http://linhes.org/repo/$arch/$repo
-
-[extra]
-Server = http://linhes.org/repo/$arch/$repo
-
-#[chroot-devel]
-#Server = http://linhes.org/repo/$arch/$repo
-
-#[core-testing]
-#Server = http://linhes.org/repo/$arch/$repo
-
-#[extra-testing]
-#Server = http://linhes.org/repo/$arch/$repo
-
 #[testing]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
-#[core]
-#Include = /etc/pacman.d/mirrorlist
+[core]
+SigLevel = PackageRequired
+Include = /etc/pacman.d/mirrorlist
 
-#[extra]
-#Include = /etc/pacman.d/mirrorlist
+[extra]
+SigLevel = PackageRequired
+Include = /etc/pacman.d/mirrorlist
 
 #[community-testing]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
-#[community]
-#Include = /etc/pacman.d/mirrorlist
+[community]
+SigLevel = PackageRequired
+Include = /etc/pacman.d/mirrorlist
 
 # An example of a custom package repository.  See the pacman manpage for
 # tips on creating your own repositories.
 #[custom]
+#SigLevel = Optional TrustAll
 #Server = file:///home/custompkgs
 
-########################ARCH DEFAULTS#############
-#[ARCH-core]
-# Add your preferred servers here, they will be used first
-#Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/$repo/os/i686
-
-#[ARCH-extra]
-# Add your preferred servers here, they will be used first
-#Server = ftp://ftp.ibiblio.org/pub/linux/distributions/archlinux/$repo/os/i686
-
-#[community]
-# Add your preferred servers here, they will be used first
-#Include = /etc/pacman.d/mirrorlist
-
-# Unstable is disabled by default.  To enable, uncomment the following
-# two lines.  You can add preferred servers immediately after the header,
-# and they will be used before the default mirrors.
-#[unstable]
-#Include = /etc/pacman.d/mirrorlist
diff --git a/abs/core/pacman/pacman.conf.x86_64 b/abs/core/pacman/pacman.conf.x86_64
index f76dba2..42321bb 100644
--- a/abs/core/pacman/pacman.conf.x86_64
+++ b/abs/core/pacman/pacman.conf.x86_64
@@ -12,13 +12,13 @@
 #RootDir     = /
 #DBPath      = /var/lib/pacman/
 #CacheDir    = /var/cache/pacman/pkg/
-CacheDir    = /data/var/cache/pacman/pkg/
 #LogFile     = /var/log/pacman.log
+#GPGDir      = /etc/pacman.d/gnupg/
 HoldPkg     = pacman glibc
 # If upgrades are available for these packages they will be asked for first
 SyncFirst   = pacman
-#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 #XferCommand = /usr/bin/curl -C - -f %u > %o
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
 #CleanMethod = KeepInstalled
 Architecture = auto
 
@@ -29,12 +29,20 @@ Architecture = auto
 #NoUpgrade   =
 #NoExtract   =
 
-# Misc options (all disabled by default)
+# Misc options
 #UseSyslog
-#ShowSize
 #UseDelta
 #TotalDownload
-#CheckSpace
+CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+#SigLevel = Optional TrustedOnly
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
 
 #
 # REPOSITORIES
@@ -60,30 +68,39 @@ Architecture = auto
 # after the header, and they will be used before the default mirrors.
 
 #[testing]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
 [core]
+SigLevel = PackageRequired
 Include = /etc/pacman.d/mirrorlist
 
 [extra]
+SigLevel = PackageRequired
 Include = /etc/pacman.d/mirrorlist
 
 #[community-testing]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
 [community]
+SigLevel = PackageRequired
 Include = /etc/pacman.d/mirrorlist
 
 # If you want to run 32 bit applications on your x86_64 system,
 # enable the multilib repositories as required here.
 
 #[multilib-testing]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
 #[multilib]
+#SigLevel = PackageRequired
 #Include = /etc/pacman.d/mirrorlist
 
 # An example of a custom package repository.  See the pacman manpage for
 # tips on creating your own repositories.
 #[custom]
+#SigLevel = Optional TrustAll
 #Server = file:///home/custompkgs
+
diff --git a/abs/core/pacman/pacman.install b/abs/core/pacman/pacman.install
index c066733..487819a 100644
--- a/abs/core/pacman/pacman.install
+++ b/abs/core/pacman/pacman.install
@@ -9,33 +9,22 @@ post_upgrade() {
     if [ "$(vercmp $2 3.5.0)" -lt 0 ]; then
         _warnupgrade
     fi
-    _updateconf
-    echo ">>>"
-    echo ">>> ATTENTION! ATTENTION! ATTENTION!"
-    echo ">>> /etc/pacman.conf has changed. If you have customized your"
-    echo ">>> pacman.conf file, please merge your changes into"
-    echo ">>> /etc/pacman.conf.pacnew.  Backup your old pacman.conf and"
-    echo ">>> then move pacman.conf.pacnew to pacman.conf"
-    echo ">>>"
-}
-
-_updateconf() {
-    pacconf="/etc/pacman.conf"
-    #add SyncFirst
-    grep -q SyncFirst $pacconf
-    if [ $? -eq 1 ]
-    then
-        sed -i '/\[options\]/  a\SyncFirst = pacman ' $pacconf
+    if [ ! -f "etc/pacman.d/gnupg/pubring.gpg" ] || [ "$(vercmp $2 4.0.3-2)" -lt 0 ]; then
+        _check_pubring
     fi
-    #remove larch
-    sed -i '/larch/d' $pacconf
+}
 
+post_install() {
+    _check_pubring
 }
-    
 
+_check_pubring() {
+    echo " >>> Run  \`pacman-key --init; pacman-key --populate archlinux\`"
+    echo " >>> to import the data required by pacman for package verification."
+    echo " >>> See: https://www.archlinux.org/news/having-pacman-verify-packages"
+}
 
 _warnupgrade() {
-    echo ">>>"
     echo ">>> The pacman database format has changed as of pacman 3.5.0."
     echo ">>> You will need to run \`pacman-db-upgrade\` as root."
     echo ">>>"
-- 
cgit v0.12