Commit 93dc1250 authored by Fabian's avatar Fabian

Merge remote-tracking branch 'origin/testing' into testing

parents f56e886e 5e48f570
......@@ -2,12 +2,12 @@
pkgname=cmake
pkgver=2.8.10.2
pkgrel=1
pkgrel=2
pkgdesc="A cross-platform open-source make system"
arch=('x86_64')
license=('custom')
url="http://www.cmake.org"
depends=('curl' 'libarchive' 'shared-mime-info')
depends=('curl' 'libarchive>=2.3.1' 'shared-mime-info')
makedepends=('qt')
install=${pkgname}.install
source=("http://www.cmake.org/files/v2.8/${pkgname}-${pkgver}.tar.gz")
......
# Maintainer: abveritas[at]chakra-project[dot]org>
pkgname=guile
pkgver=1.8.8
pkgrel=3
......
#
# Chakra Packages for Chakra, part of chakra-project.org
#
# maintainer abveritas[at]chakra-project[dot]org>
pkgname=libarchive
pkgver=3.0.4
pkgver=3.1.2
pkgrel=1
pkgdesc="library that can create and read several streaming archive formats"
arch=('x86_64')
url="http://libarchive.googlecode.com/"
arch=('i686' 'x86_64')
url="http://libarchive.org/"
license=('BSD')
depends=('zlib' 'bzip2' 'xz>=5.0.2' 'acl' 'openssl>=1.0.0' 'expat')
source=("https://github.com/downloads/libarchive/libarchive/libarchive-${pkgver}.tar.gz")
md5sums=('af443ca9a10ddbcbf00f7ae34ca7fc16')
depends=('acl' 'attr' 'bzip2' 'expat' 'lzo2>=2.06' 'openssl' 'xz' 'zlib')
source=("http://libarchive.org/downloads/$pkgname-$pkgver.tar.gz"
'0001-mtree-fix-line-filename-length-calculation.patch')
md5sums=('efad5a503f66329bb9d2f4308b5de98a'
'fda89c145bbcd793a96b06b463ef6a72')
build() {
cd "$srcdir/$pkgname-$pkgver"
cd "$pkgname-$pkgver"
# https://code.google.com/p/libarchive/issues/detail?id=301
# upstream commit e65bf287f0133426b26611fe3e80b51267987106
patch -Np1 -i "$srcdir/0001-mtree-fix-line-filename-length-calculation.patch"
./configure --prefix=/usr --without-xml2
make
}
check() {
cd "$pkgname-$pkgver"
make check
}
package() {
cd "$srcdir/$pkgname-$pkgver"
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir" install
install -D -m644 COPYING "$pkgdir"/usr/share/licenses/libarchive/COPYING
......
Index: libarchive/archive_read_support_format_zip.c
===================================================================
--- libarchive/archive_read_support_format_zip.c (revision 4189)
+++ libarchive/archive_read_support_format_zip.c (revision 4190)
@@ -217,14 +217,13 @@
}
/*
- * TODO: This is a performance sink because it forces
- * the read core to drop buffered data from the start
- * of file, which will then have to be re-read again
- * if this bidder loses.
+ * TODO: This is a performance sink because it forces the read core to
+ * drop buffered data from the start of file, which will then have to
+ * be re-read again if this bidder loses.
*
- * Consider passing in the winning bid value to subsequent
- * bidders so that this bidder in particular can avoid
- * seeking if it knows it's going to lose anyway.
+ * We workaround this a little by passing in the best bid so far so
+ * that later bidders can do nothing if they know they'll never
+ * outbid. But we can certainly do better...
*/
static int
archive_read_format_zip_seekable_bid(struct archive_read *a, int best_bid)
@@ -311,19 +310,29 @@
external_attributes = archive_le32dec(p + 38);
zip_entry->local_header_offset = archive_le32dec(p + 42);
+ /* If we can't guess the mode, leave it zero here;
+ when we read the local file header we might get
+ more information. */
+ zip_entry->mode = 0;
if (zip_entry->system == 3) {
zip_entry->mode = external_attributes >> 16;
- } else {
- zip_entry->mode = AE_IFREG | 0777;
}
- /* Do we need to parse filename here? */
- /* Or can we wait until we read the local header? */
+ /* We don't read the filename until we get to the
+ local file header. Reading it here would speed up
+ table-of-contents operations (removing the need to
+ find and read local file header to get the
+ filename) at the cost of requiring a lot of extra
+ space. */
+ /* We don't read the extra block here. We assume it
+ will be duplicated at the local file header. */
__archive_read_consume(a,
46 + filename_length + extra_length + comment_length);
}
- /* TODO: Sort zip entries. */
+ /* TODO: Sort zip entries by file offset so that we
+ can optimize get_next_header() to use skip instead of
+ seek. */
return ARCHIVE_OK;
}
@@ -434,6 +443,11 @@
return (30);
}
+ /* TODO: It's worth looking ahead a little bit for a valid
+ * PK signature. In particular, that would make it possible
+ * to read some UUEncoded SFX files or SFX files coming from
+ * a network socket. */
+
return (0);
}
Index: libarchive/test/test_compat_zip_6.zip.uu
===================================================================
--- libarchive/test/test_compat_zip_6.zip.uu (revision 0)
+++ libarchive/test/test_compat_zip_6.zip.uu (revision 4190)
@@ -0,0 +1,10 @@
+begin 755 test_compat_zip_6.zip
+M4$L#!`H``````'@3-T`````````````````6````3F5W($9O;&1E<B].97<@
+M1F]L9&5R+U!+`P0*``````!\$S=`%4-8OPL````+````*P```$YE=R!&;VQD
+M97(O3F5W($9O;&1E<B].97<@5&5X="!$;V-U;65N="YT>'1S;VUE('1E>'0-
+M"E!+`0(4"PH``````'@3-T`````````````````6````````````$```````
+M``!.97<@1F]L9&5R+TYE=R!&;VQD97(O4$L!`A0+"@``````?!,W0!5#6+\+
+M````"P```"L``````````0`@````-````$YE=R!&;VQD97(O3F5W($9O;&1E
+M<B].97<@5&5X="!$;V-U;65N="YT>'102P4&``````(``@"=````B```````
+`
+end
Index: libarchive/test/test_compat_zip.c
===================================================================
--- libarchive/test/test_compat_zip.c (revision 4189)
+++ libarchive/test/test_compat_zip.c (revision 4190)
@@ -348,6 +348,53 @@
free(p);
}
+/*
+ * Issue 225: Errors extracting MSDOS Zip archives with directories.
+ */
+static void
+compat_zip_6_verify(struct archive *a)
+{
+ struct archive_entry *ae;
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("New Folder/New Folder/", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+ assertEqualInt(1327314468, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("New Folder/New Folder/New Text Document.txt", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ assertEqualInt(1327314476, archive_entry_mtime(ae));
+ assertEqualInt(11, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+}
+
+static void
+test_compat_zip_6(void)
+{
+ const char *refname = "test_compat_zip_6.zip";
+ struct archive *a;
+ void *p;
+ size_t s;
+
+ extract_reference_file(refname);
+ p = slurpfile(&s, refname);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 7));
+ compat_zip_6_verify(a);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, p, s, 7));
+ compat_zip_6_verify(a);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
DEFINE_TEST(test_compat_zip)
{
test_compat_zip_1();
@@ -355,6 +402,7 @@
test_compat_zip_3();
test_compat_zip_4();
test_compat_zip_5();
+ test_compat_zip_6();
}
Index: Makefile.am
===================================================================
--- Makefile.am (revision 4189)
+++ Makefile.am (revision 4190)
@@ -462,6 +462,7 @@
libarchive/test/test_compat_zip_3.zip.uu \
libarchive/test/test_compat_zip_4.zip.uu \
libarchive/test/test_compat_zip_5.zip.uu \
+ libarchive/test/test_compat_zip_6.zip.uu \
libarchive/test/test_fuzz_1.iso.Z.uu \
libarchive/test/test_fuzz.cab.uu \
libarchive/test/test_fuzz.lzh.uu \
From 293687358e2c52213a3f077bb3d8f860ea5bfda9 Mon Sep 17 00:00:00 2001
From: Michihiro NAKAJIMA <ggcueroad@gmail.com>
Date: Mon, 6 Feb 2012 04:51:16 +0900
Subject: [PATCH] Fix issue 238. Skip the setup sparse on linux without a
check of errno if ioctl(,FS_IOC_FIEMAP,) failed because the
errno is not fixed , for example, some file system returns
ENOTTY, another returns EOPNOTSUPP, or EINVAL and so on. We
cannot decide what errno exactly indicates an unsupported
error.
---
libarchive/archive_read_disk_entry_from_file.c | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/libarchive/archive_read_disk_entry_from_file.c b/libarchive/archive_read_disk_entry_from_file.c
index eef42ef74..6415008 100644
--- a/libarchive/archive_read_disk_entry_from_file.c
+++ b/libarchive/archive_read_disk_entry_from_file.c
@@ -859,16 +859,9 @@ setup_sparse(struct archive_read_disk *a,
r = ioctl(fd, FS_IOC_FIEMAP, fm);
if (r < 0) {
- /* When errno is ENOTTY, it is better we should
- * return ARCHIVE_OK because an earlier version
- *(<2.6.28) cannot perfom FS_IOC_FIEMAP.
- * We should also check if errno is EOPNOTSUPP,
- * it means "Operation not supported". */
- if (errno != ENOTTY && errno != EOPNOTSUPP) {
- archive_set_error(&a->archive, errno,
- "FIEMAP failed");
- exit_sts = ARCHIVE_FAILED;
- }
+ /* When something error happens, it is better we
+ * should return ARCHIVE_OK because an earlier
+ * version(<2.6.28) cannot perfom FS_IOC_FIEMAP. */
goto exit_setup_sparse;
}
if (fm->fm_mapped_extents == 0)
--
1.7.9.2
Index: libarchive/test/test_compat_zip.c
===================================================================
--- libarchive/test/test_compat_zip.c (revision 4197)
+++ libarchive/test/test_compat_zip.c (revision 4198)
@@ -359,12 +359,16 @@
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualString("New Folder/New Folder/", archive_entry_pathname(ae));
assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
- assertEqualInt(1327314468, archive_entry_mtime(ae));
+ /* Zip timestamps are local time, so vary by time zone. */
+ /* TODO: A more complex assert would work here; we could
+ verify that it's within +/- 24 hours of a particular value. */
+ /* assertEqualInt(1327314468, archive_entry_mtime(ae)); */
assertEqualInt(0, archive_entry_size(ae));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualString("New Folder/New Folder/New Text Document.txt", archive_entry_pathname(ae));
assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
- assertEqualInt(1327314476, archive_entry_mtime(ae));
+ /* Zip timestamps are local time, so vary by time zone. */
+ /* assertEqualInt(1327314476, archive_entry_mtime(ae)); */
assertEqualInt(11, archive_entry_size(ae));
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
}
pkgname=lzo2
pkgver=2.04
pkgrel=2
pkgver=2.06
pkgrel=1
pkgdesc="Portable lossless data compression library"
arch=('i686' 'x86_64')
arch=('x86_64')
url="http://www.oberhumer.com/opensource/lzo"
license=('GPL')
depends=('glibc')
source=(http://www.oberhumer.com/opensource/lzo/download/lzo-${pkgver}.tar.gz)
options=(!libtool)
sha1sums=('f5bf5c7ae4116e60513e5788d156ef78946677e7')
sha1sums=('a11768b8a168ec607750842bbef406f11547b904')
build() {
cd "${srcdir}/lzo-${pkgver}"
......
......@@ -5,12 +5,12 @@
pkgname=mkinitcpio
pkgver=0.11.0
pkgrel=2
pkgrel=3
pkgdesc="Modular initramfs image creation utility"
arch=('x86_64')
url="http://www.archlinux.org/"
license=('GPL')
depends=('awk' 'mkinitcpio-busybox>=1.19.4-2' 'kmod' 'util-linux>=2.21' 'libarchive' 'coreutils'
depends=('awk' 'mkinitcpio-busybox>=1.19.4-2' 'kmod' 'util-linux>=2.21' 'libarchive=3.1.2-1' 'coreutils'
'bash' 'findutils' 'grep' 'filesystem>=2011.10-1' 'file' 'gzip' 'systemd')
optdepends=('xz: Use lzma or xz compression for the initramfs image'
'bzip2: Use bzip2 compression for the initramfs image'
......@@ -21,7 +21,7 @@ source=("ftp://ftp.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"{,.sig}
install=mkinitcpio.install
sha256sums=('4d65ecb827b9c07955409cdfeab3b64ec2536306961f6050e1a4fbe7ea79d150'
'275afca3a4ac0cc5555b5a7d4b89c71ba14ea4a9fbf2dfce63eab6d6d70c831a'
'dcc41986dc719a4a46b05763aa8cf29f4368d6c2f1f4286b62b8a90688b59c33')
'078737f3b4d22ef905661e9c0e11f4704789d92cac3b25b414ef71f8cc7ff80e')
build() {
cd "$pkgname-$pkgver"
......
......@@ -4,40 +4,41 @@
# maintainer <manutortosa[at]chakra-project[dot]org>
pkgname=pacman
pkgver=4.0.2
pkgrel=10
pkgver=4.1.0
pkgrel=3
pkgdesc="A library-based package manager with dependency support"
arch=('x86_64')
url="http://www.archlinux.org/pacman/"
license=('GPL')
groups=('base')
depends=('bash' 'glibc' 'libarchive>=3.0.2' 'curl>=7.19.4'
'gpgme' 'pacman-mirrorlist' 'pacman-helpme')
groups=('base' 'base-devel')
depends=('bash>=4.2.042-1' 'glibc>=2.15-2' 'libarchive=3.1.2-1' 'curl>=7.28.1'
'gpgme' 'pacman-mirrorlist' )
checkdepends=('python2' 'fakechroot')
makedepends=('asciidoc')
optdepends=('fakeroot: for makepkg usage as normal user')
provides=('pacman-contrib')
conflicts=('pacman-contrib')
replaces=('pacman-contrib')
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.x86_64
source=(ftp://ftp.archlinux.org/other/pacman/$pkgname-$pkgver.tar.gz{,.sig}
pacman.conf
makepkg.conf
add_categories.patch)
md5sums=('289ba4a19a16393096e065cec1cb9b0a'
'5b4f1048875e50226071edf7d71ce0fa'
'898941a2b58152c45b00a139847606c3'
'5beebe36bfc1e1f677d5ae12fcff8083'
'a5d5c520ed75311d1875e0835563af33')
makepkg.conf)
md5sums=('a0f2b3148bee4784f21cf373cf59a0bc'
'4959b8d00056398195f4e549e7bdd346'
'bc17835d46a16c5946a85a40a47974d6'
'5beebe36bfc1e1f677d5ae12fcff8083')
build() {
cd $srcdir/$pkgname-$pkgver
# add categories array support
patch -Np1 -i ../add_categories.patch
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --enable-doc
--localstatedir=/var --enable-doc \
--with-scriptlet-shell=/bin/bash \
--with-ldconfig=/usr/bin/ldconfig
make
make -C contrib
}
check() {
......@@ -47,12 +48,15 @@ check() {
package() {
cd $srcdir/$pkgname-$pkgver
make DESTDIR=$pkgdir install
make DESTDIR=$pkgdir -C contrib install
mkdir -p $pkgdir/etc
install -m644 $srcdir/pacman.conf.x86_64 $pkgdir/etc/pacman.conf
# install Arch specific stuff
install -dm755 $pkgdir/etc
install -m644 $srcdir/pacman.conf $pkgdir/etc/pacman.conf
mycarch="x86_64"
mychost="x86_64-unknown-linux-gnu"
myflags="-march=x86-64 "
myflags="-march=x86-64"
install -m644 $srcdir/makepkg.conf $pkgdir/etc/
# set things correctly in the default conf file
......@@ -60,12 +64,14 @@ package() {
-e "s|@CARCH[@]|$mycarch|g" \
-e "s|@CHOST[@]|$mychost|g" \
-e "s|@CARCHFLAGS[@]|$myflags|g"
# put bash_completion in the right location
install -dm755 ${pkgdir}/usr/share/bash-completion/completions
mv ${pkgdir}/etc/bash_completion.d/pacman \
${pkgdir}/usr/share/bash-completion/completions
rmdir ${pkgdir}/etc/bash_completion.d
# install completion files
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
install -Dm644 contrib/zsh_completion $pkgdir/usr/share/zsh/site-functions/_pacman
}
This diff is collapsed.
......@@ -3,36 +3,54 @@
#
# 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 pacman-helpme
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman-helpme pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl -C - %u > %o
#CleanMethod = KeepInstalled
#UseDelta = 0.7
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
#Color
#TotalDownload
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 = Never
LocalFileSigLevel = Never
#RemoteFileSigLevel = Required
#
# REPOSITORIES
......@@ -53,12 +71,8 @@ Architecture = auto
# 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]
#Include = /etc/pacman.d/mirrorlist
[lib32]
Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
......@@ -75,6 +89,10 @@ Include = /etc/pacman.d/mirrorlist
[games]
Include = /etc/pacman.d/mirrorlist
#[unstable]
#Include = /etc/pacman.d/mirrorlist
# An example of a custom package repository. See the pacman manpage for
# tips on creating your own repositories.
#[custom]
......
#
# /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 pacman-helpme
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman-helpme 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]
#Include = /etc/pacman.d/mirrorlist
# If you want to run 32 bit applications on your x86_64 system,
# enable the lib32 repositories here.
#[lib32-testing]
#Include = /etc/pacman.d/mirrorlist
#[lib32]
#Include = /etc/pacman.d/mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[platform]
Include = /etc/pacman.d/mirrorlist
[desktop]
Include = /etc/pacman.d/mirrorlist
[apps]
Include = /etc/pacman.d/mirrorlist
[games]
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
\ No newline at end of file
#!/bin/sh
# tputcolors
# 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
# one time stuff for md5sum issue with older pacman versions
if [ "$(vercmp $2 3.0.2)" -lt 0 ]; then
_resetbackups
fi
if [ "$(vercmp $2 3.5.0)" -lt 0 ]; then
_warnupgrade
fi
}
_warnupgrade() {
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 ">>>"
}
_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 ">>>"
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
# path variables
pacconf="/etc/pacman.conf"
dbpath="/var/lib/pacman/local"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment