diff options
-rw-r--r-- | NEWS | 13 | ||||
-rw-r--r-- | TRANSLATORS | 6 | ||||
-rw-r--r-- | lib/libalpm/be_files.c | 4 | ||||
-rw-r--r-- | lib/libalpm/conflict.c | 14 | ||||
-rw-r--r-- | lib/libalpm/package.c | 7 | ||||
-rw-r--r-- | lib/libalpm/po/LINGUAS | 6 | ||||
-rw-r--r-- | lib/libalpm/po/cs.po (renamed from lib/libalpm/po/cs_CZ.po) | 0 | ||||
-rw-r--r-- | lib/libalpm/po/pl.po (renamed from lib/libalpm/po/pl_PL.po) | 0 | ||||
-rw-r--r-- | lib/libalpm/po/ru.po (renamed from lib/libalpm/po/ru_RU.po) | 0 | ||||
-rwxr-xr-x | pactest/pmdb.py | 1 | ||||
-rw-r--r-- | pactest/tests/upgrade011.py | 16 | ||||
-rw-r--r-- | pactest/tests/upgrade040.py | 1 | ||||
-rw-r--r-- | pactest/tests/upgrade041.py | 3 | ||||
-rw-r--r-- | pactest/tests/upgrade046.py | 31 | ||||
-rw-r--r-- | po/LINGUAS | 6 | ||||
-rw-r--r-- | po/cs.po (renamed from po/cs_CZ.po) | 0 | ||||
-rw-r--r-- | po/pl.po (renamed from po/pl_PL.po) | 0 | ||||
-rw-r--r-- | po/ru.po (renamed from po/ru_RU.po) | 0 | ||||
-rw-r--r-- | scripts/makepkg.sh.in | 6 | ||||
-rw-r--r-- | src/pacman/pacman.c | 16 |
20 files changed, 100 insertions, 30 deletions
@@ -1,5 +1,18 @@ VERSION DESCRIPTION ----------------------------------------------------------------------------- +3.1.2 - updates to proto.install, add ChangeLog.proto (FS#7231) + - add 'force' option to packages, and have repo-add respect it + - mark gensync and updatesync as deprecated + - fix pacman -Qo behavior on symlinks (FS#9473) + - fix segfault on a broken symlinks in backup code (FS#9235) + - fix chk_fileconflicts brokenness, ensure it reads entire list + - minor documentation and message updates + - moved some translations to their more generic lang codes + - makepkg: + - check to ensure we have non-URL sources (FS#9208) + - ensure we strip binaries in /opt/ dirs (FS#9342) + - check for VCS executable before using (FS#9230) + - set sane umask before source extraction (FS#9242, FS#9362) 3.1.1 - fix versioned provisions handling- use '=' instead of ' ' which differs from original spec but better in long run (FS#9171) - rename query --orphans to --unrequired (FS#9144) diff --git a/TRANSLATORS b/TRANSLATORS index d9dea891..249665dd 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -12,7 +12,7 @@ your language to the mix. * indicates the last active translator. -Czech (cs_CZ): +Czech (cs): * Vojtěch Gondžala <vogo@seznam.cz> German (de): * Matthias Gorissen <matthias@archlinux.de> @@ -30,7 +30,7 @@ Italian (it): * Giovanni 'voidnull' Scafora <linuxmania@gmail.com> Alessio 'mOLOk' Bolognino <themolok@gmail.com> Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com> -Polish (pl_PL): +Polish (pl): * Mateusz Jędrasik <m.jedrasik@gmail.com> Brazilian Portuguese (pt_BR): * João Felipe Santos <joao.eel@gmail.com> @@ -38,6 +38,6 @@ Brazilian Portuguese (pt_BR): Hugo Doria <hugodoria@archlinux-br.org> Lincoln de Sousa <lincoln@archlinux-br.org> Leandro Inácio <leandro@archlinux-br.org> -Russian (ru_RU): +Russian (ru): Vladimir Bayrakovskiy <4rayven@gmail.com> diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c index 724e3c8f..4cd0985e 100644 --- a/lib/libalpm/be_files.c +++ b/lib/libalpm/be_files.c @@ -297,10 +297,6 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) } _alpm_strtrim(line); if(!strcmp(line, "%FILENAME%")) { - /* filename is _new_ - it provides the real name of the package, on the - * server, to allow for us to not tie the name of the actual file to the - * data of the package - */ if(fgets(info->filename, sizeof(info->filename), fp) == NULL) { goto error; } diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c index c093705a..3442902c 100644 --- a/lib/libalpm/conflict.c +++ b/lib/libalpm/conflict.c @@ -251,10 +251,7 @@ static alpm_list_t *chk_filedifference(alpm_list_t *filesA, alpm_list_t *filesB) alpm_list_t *ret = NULL; alpm_list_t *pA = filesA, *pB = filesB; - if(pB == NULL) { - return(alpm_list_strdup(pA)); - } - + /* if both filesA and filesB have entries, do this loop */ while(pA && pB) { const char *strA = pA->data; const char *strB = pB->data; @@ -279,6 +276,15 @@ static alpm_list_t *chk_filedifference(alpm_list_t *filesA, alpm_list_t *filesB) } } } + /* ensure we have completely emptied pA */ + while(pA) { + const char *strA = pA->data; + /* skip directories */ + if(strA[strlen(strA)-1] != '/') { + ret = alpm_list_add(ret, strdup(strA)); + } + pA = pA->next; + } return(ret); } diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 937ee3e0..363cf313 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -162,11 +162,12 @@ const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg) ASSERT(handle != NULL, return(NULL)); ASSERT(pkg != NULL, return(NULL)); + if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { + _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); + } + if(!strlen(pkg->filename)) { /* construct the file name, it's not in the desc file */ - if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { - _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); - } if(pkg->arch && strlen(pkg->arch) > 0) { snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PKGEXT, pkg->name, pkg->version, pkg->arch); diff --git a/lib/libalpm/po/LINGUAS b/lib/libalpm/po/LINGUAS index bf816118..955e1fdb 100644 --- a/lib/libalpm/po/LINGUAS +++ b/lib/libalpm/po/LINGUAS @@ -1,11 +1,11 @@ # Set of available languages. -cs_CZ +cs de en_GB es fr hu it -pl_PL +pl pt_BR -ru_RU +ru diff --git a/lib/libalpm/po/cs_CZ.po b/lib/libalpm/po/cs.po index 79931f00..79931f00 100644 --- a/lib/libalpm/po/cs_CZ.po +++ b/lib/libalpm/po/cs.po diff --git a/lib/libalpm/po/pl_PL.po b/lib/libalpm/po/pl.po index 2126d6dd..2126d6dd 100644 --- a/lib/libalpm/po/pl_PL.po +++ b/lib/libalpm/po/pl.po diff --git a/lib/libalpm/po/ru_RU.po b/lib/libalpm/po/ru.po index 57add381..57add381 100644 --- a/lib/libalpm/po/ru_RU.po +++ b/lib/libalpm/po/ru.po diff --git a/pactest/pmdb.py b/pactest/pmdb.py index af392000..e0f328ef 100755 --- a/pactest/pmdb.py +++ b/pactest/pmdb.py @@ -261,6 +261,7 @@ class pmdb: if pkg.reason: data.append(_mksection("REASON", pkg.reason)) else: + data.append(_mksection("FILENAME", pkg.filename())) if pkg.replaces: data.append(_mksection("REPLACES", pkg.replaces)) if pkg.force: diff --git a/pactest/tests/upgrade011.py b/pactest/tests/upgrade011.py new file mode 100644 index 00000000..d8ed8734 --- /dev/null +++ b/pactest/tests/upgrade011.py @@ -0,0 +1,16 @@ +self.description = "Upgrade a package with a filesystem conflict" + +p = pmpkg("dummy", "2.0-1") +p.files = ["bin/dummy", "usr/share/file"] +self.addpkg(p) + +lp = pmpkg("dummy", "1.0-1") +lp.files = ["bin/dummy"] +self.addpkg2db("local", lp) + +self.filesystem = ["usr/share/file"] + +self.args = "-U %s" % p.filename() + +self.addrule("PACMAN_RETCODE=1") +self.addrule("PKG_VERSION=dummy|1.0-1") diff --git a/pactest/tests/upgrade040.py b/pactest/tests/upgrade040.py index bc40f337..e17c7176 100644 --- a/pactest/tests/upgrade040.py +++ b/pactest/tests/upgrade040.py @@ -27,4 +27,5 @@ for p in p1, p2: self.addrule("PKG_EXIST=%s" % p.name) self.addrule("FILE_MODIFIED=bin/dummy") self.addrule("FILE_MODIFIED=bin/foobar") +self.addrule("FILE_EXIST=usr/share/file") self.addrule("FILE_MODIFIED=usr/share/file") diff --git a/pactest/tests/upgrade041.py b/pactest/tests/upgrade041.py index 347c2c4b..20da4f14 100644 --- a/pactest/tests/upgrade041.py +++ b/pactest/tests/upgrade041.py @@ -4,7 +4,7 @@ lp1 = pmpkg("dummy") lp1.files = ["bin/dummy"] lp2 = pmpkg("foobar") -lp2.files = ["bin/foobar" +lp2.files = ["bin/foobar", "usr/share/file"] for p in lp1, lp2: @@ -27,4 +27,5 @@ for p in p1, p2: self.addrule("PKG_EXIST=%s" % p.name) self.addrule("FILE_MODIFIED=bin/dummy") self.addrule("FILE_MODIFIED=bin/foobar") +self.addrule("FILE_EXIST=usr/share/file") self.addrule("FILE_MODIFIED=usr/share/file") diff --git a/pactest/tests/upgrade046.py b/pactest/tests/upgrade046.py new file mode 100644 index 00000000..60164b72 --- /dev/null +++ b/pactest/tests/upgrade046.py @@ -0,0 +1,31 @@ +self.description = "File relocation between two packages (reverse order, --force)" + +lp1 = pmpkg("dummy") +lp1.files = ["bin/dummy"] + +lp2 = pmpkg("foobar") +lp2.files = ["bin/foobar", + "usr/share/file"] + +for p in lp1, lp2: + self.addpkg2db("local", p) + +p1 = pmpkg("dummy") +p1.files = ["bin/dummy", + "usr/share/file"] + +p2 = pmpkg("foobar") +p2.files = ["bin/foobar"] + +for p in p1, p2: + self.addpkg(p) + +self.args = "-Uf %s" % " ".join([p.filename() for p in p1, p2]) + +self.addrule("PACMAN_RETCODE=0") +for p in p1, p2: + self.addrule("PKG_EXIST=%s" % p.name) +self.addrule("FILE_MODIFIED=bin/dummy") +self.addrule("FILE_MODIFIED=bin/foobar") +self.addrule("FILE_EXIST=usr/share/file") +self.addrule("FILE_MODIFIED=usr/share/file") @@ -1,11 +1,11 @@ # Set of available languages. -cs_CZ +cs de en_GB es fr hu it -pl_PL +pl pt_BR -ru_RU +ru diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index cecda1d2..090ba5df 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -675,9 +675,6 @@ run_build() { msg "$(gettext "Starting build()...")" cd "$srcdir" - # ensure we have a sane umask set - umask 0022 - # ensure all necessary build variables are exported export CFLAGS CXXFLAGS MAKEFLAGS CHOST @@ -1417,6 +1414,9 @@ else warning "$(gettext "pacman was not found in PATH; skipping dependency checks.")" fi +# ensure we have a sane umask set +umask 0022 + # get back to our src directory so we can begin with sources mkdir -p "$srcdir" cd "$srcdir" diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 27130254..377ea3fe 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -227,11 +227,11 @@ static void cleanup(int signum) exit(signum); } -/** Sets all libalpm required paths in one go. Called after the command line and - * inital config file parsing. Once this is complete, we can see if any paths were - * defined. If a rootdir was defined and nothing else, we want all of our paths to - * live under the rootdir that was specified. Safe to call multiple times (will only - * do anything the first time). +/** Sets all libalpm required paths in one go. Called after the command line + * and inital config file parsing. Once this is complete, we can see if any + * paths were defined. If a rootdir was defined and nothing else, we want all + * of our paths to live under the rootdir that was specified. Safe to call + * multiple times (will only do anything the first time). */ static void setlibpaths(void) { @@ -240,6 +240,8 @@ static void setlibpaths(void) int ret = 0; pm_printf(PM_LOG_DEBUG, "setlibpaths() called\n"); + /* Configure root path first. If it is set and dbpath/logfile were not + * set, then set those as well to reside under the root. */ if(config->rootdir) { char path[PATH_MAX]; ret = alpm_option_set_root(config->rootdir); @@ -254,10 +256,12 @@ static void setlibpaths(void) } if(!config->logfile) { snprintf(path, PATH_MAX, "%s%s", alpm_option_get_root(), LOGFILE); - ret = alpm_option_set_dbpath(path); config->logfile = strdup(path); } } + /* Set other paths if they were configured. Note that unless rootdir + * was left undefined, these two paths (dbpath and logfile) will have + * been set locally above, so the if cases below will now trigger. */ if(config->dbpath) { ret = alpm_option_set_dbpath(config->dbpath); if(ret != 0) { |