Merge branch 'maint'
Conflicts: lib/libalpm/trans.c src/pacman/query.c
This commit is contained in:
commit
11fb9c7674
9 changed files with 80 additions and 24 deletions
|
@ -265,7 +265,7 @@ static void unlink_file(pmpkg_t *info, char *filename, alpm_list_t *skip_remove,
|
||||||
FREE(pkghash);
|
FREE(pkghash);
|
||||||
} else {
|
} else {
|
||||||
char *filehash = alpm_compute_md5sum(file);
|
char *filehash = alpm_compute_md5sum(file);
|
||||||
int cmp = strcmp(filehash,pkghash);
|
int cmp = filehash ? strcmp(filehash, pkghash) : 0;
|
||||||
FREE(filehash);
|
FREE(filehash);
|
||||||
FREE(pkghash);
|
FREE(pkghash);
|
||||||
if(cmp != 0) {
|
if(cmp != 0) {
|
||||||
|
|
|
@ -116,15 +116,6 @@ int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check database version */
|
|
||||||
db_version = _alpm_db_version(handle->db_local);
|
|
||||||
if(db_version < required_db_version) {
|
|
||||||
_alpm_log(PM_LOG_ERROR,
|
|
||||||
_("%s database version is too old\n"), handle->db_local->treename);
|
|
||||||
remove_lock(handle);
|
|
||||||
RET_ERR(PM_ERR_DB_VERSION, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
trans = _alpm_trans_new();
|
trans = _alpm_trans_new();
|
||||||
if(trans == NULL) {
|
if(trans == NULL) {
|
||||||
RET_ERR(PM_ERR_MEMORY, -1);
|
RET_ERR(PM_ERR_MEMORY, -1);
|
||||||
|
@ -138,6 +129,16 @@ int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
|
||||||
|
|
||||||
handle->trans = trans;
|
handle->trans = trans;
|
||||||
|
|
||||||
|
/* check database version */
|
||||||
|
db_version = _alpm_db_version(handle->db_local);
|
||||||
|
if(db_version < required_db_version) {
|
||||||
|
_alpm_log(PM_LOG_ERROR,
|
||||||
|
_("%s database version is too old\n"), handle->db_local->treename);
|
||||||
|
remove_lock(handle);
|
||||||
|
_alpm_trans_free(trans);
|
||||||
|
RET_ERR(PM_ERR_DB_VERSION, -1);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
15
po/fi.po
15
po/fi.po
|
@ -8,9 +8,10 @@ msgstr ""
|
||||||
"Project-Id-Version: Arch Linux Pacman package manager\n"
|
"Project-Id-Version: Arch Linux Pacman package manager\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
|
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
|
||||||
"POT-Creation-Date: 2011-04-18 11:23-0500\n"
|
"POT-Creation-Date: 2011-04-18 11:23-0500\n"
|
||||||
"PO-Revision-Date: 2011-04-15 17:59+0000\n"
|
"PO-Revision-Date: 2011-05-11 14:51+0000\n"
|
||||||
"Last-Translator: apuasi <kaannokset.hellberg@gmail.com>\n"
|
"Last-Translator: Larso <larso@gmx.com>\n"
|
||||||
"Language-Team: Finnish <None>\n"
|
"Language-Team: Finnish (http://www.transifex.net/projects/p/archlinux-pacman/"
|
||||||
|
"team/fi/)\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -349,7 +350,7 @@ msgstr " -c, --cascade poista paketit ja kaikki niiden riippuvuudet\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " -n, --nosave remove configuration files\n"
|
msgid " -n, --nosave remove configuration files\n"
|
||||||
msgstr ""
|
msgstr " -n, --nosave poista myös asetustiedostot\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -359,7 +360,7 @@ msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " -u, --unneeded remove unneeded packages\n"
|
msgid " -u, --unneeded remove unneeded packages\n"
|
||||||
msgstr ""
|
msgstr " -u, --unneeded poista tarpeettomat paketit\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " -c, --changelog view the changelog of a package\n"
|
msgid " -c, --changelog view the changelog of a package\n"
|
||||||
|
@ -550,7 +551,7 @@ msgstr ""
|
||||||
msgid ""
|
msgid ""
|
||||||
" --print print the targets instead of performing the "
|
" --print print the targets instead of performing the "
|
||||||
"operation\n"
|
"operation\n"
|
||||||
msgstr ""
|
msgstr " --print listaa paketit, mutta älä suorita operaatiota\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -950,7 +951,7 @@ msgstr "paketti %s ei ole kelvollinen tai se on vahingoittunut\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Errors occurred, no packages were upgraded.\n"
|
msgid "Errors occurred, no packages were upgraded.\n"
|
||||||
msgstr "Yhtään pakettia ei ole päivitetty tapahtuneiden virheiden vuoksi.\n"
|
msgstr "Yhtään pakettia ei päivitetty tapahtuneiden virheiden vuoksi.\n"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ":: Synchronizing package databases...\n"
|
msgid ":: Synchronizing package databases...\n"
|
||||||
|
|
|
@ -732,8 +732,9 @@ static void cl_to_log(int argc, char* argv[])
|
||||||
size += strlen(argv[i]) + 1;
|
size += strlen(argv[i]) + 1;
|
||||||
}
|
}
|
||||||
char *cl_text = malloc(size);
|
char *cl_text = malloc(size);
|
||||||
if(!cl_text)
|
if(!cl_text) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
char *p = cl_text;
|
char *p = cl_text;
|
||||||
for(i = 0; i<argc-1; i++) {
|
for(i = 0; i<argc-1; i++) {
|
||||||
strcpy(p, argv[i]);
|
strcpy(p, argv[i]);
|
||||||
|
@ -884,7 +885,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set up the print operations */
|
/* set up the print operations */
|
||||||
if(config->print) {
|
if(config->print && !config->op_s_clean) {
|
||||||
config->noconfirm = 1;
|
config->noconfirm = 1;
|
||||||
config->flags |= PM_TRANS_FLAG_NOCONFLICTS;
|
config->flags |= PM_TRANS_FLAG_NOCONFLICTS;
|
||||||
config->flags |= PM_TRANS_FLAG_NOLOCK;
|
config->flags |= PM_TRANS_FLAG_NOLOCK;
|
||||||
|
|
|
@ -77,6 +77,10 @@ static int search_path(char **filename, struct stat *bufptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
fullname = malloc(plen + flen + 2);
|
fullname = malloc(plen + flen + 2);
|
||||||
|
if(!fullname) {
|
||||||
|
free(envpath);
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
sprintf(fullname, "%s/%s", path, *filename);
|
sprintf(fullname, "%s/%s", path, *filename);
|
||||||
|
|
||||||
if(lstat(fullname, bufptr) == 0) {
|
if(lstat(fullname, bufptr) == 0) {
|
||||||
|
|
|
@ -103,7 +103,7 @@ class pmpkg(object):
|
||||||
# Generate package file system
|
# Generate package file system
|
||||||
for f in self.files:
|
for f in self.files:
|
||||||
util.mkfile(f, f)
|
util.mkfile(f, f)
|
||||||
self.size += os.stat(util.getfilename(f))[stat.ST_SIZE]
|
self.size += os.lstat(util.getfilename(f))[stat.ST_SIZE]
|
||||||
|
|
||||||
# .PKGINFO
|
# .PKGINFO
|
||||||
data = ["pkgname = %s" % self.name]
|
data = ["pkgname = %s" % self.name]
|
||||||
|
|
|
@ -146,6 +146,14 @@ class pmrule(object):
|
||||||
else:
|
else:
|
||||||
print "FILE rule '%s' not found" % case
|
print "FILE rule '%s' not found" % case
|
||||||
success = -1
|
success = -1
|
||||||
|
elif kind == "LINK":
|
||||||
|
filename = os.path.join(test.root, key)
|
||||||
|
if case == "EXIST":
|
||||||
|
if not os.path.islink(filename):
|
||||||
|
success = 0
|
||||||
|
else:
|
||||||
|
print "LINK rule '%s' not found" % case
|
||||||
|
success = -1
|
||||||
elif kind == "CACHE":
|
elif kind == "CACHE":
|
||||||
cachedir = os.path.join(test.root, util.PM_CACHEDIR)
|
cachedir = os.path.join(test.root, util.PM_CACHEDIR)
|
||||||
if case == "EXISTS":
|
if case == "EXISTS":
|
||||||
|
|
43
test/pacman/tests/symlink002.py
Normal file
43
test/pacman/tests/symlink002.py
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
self.description = "Dead backed-up symlink when removing package (FS#24230)"
|
||||||
|
|
||||||
|
# symlink file is changed
|
||||||
|
lp = pmpkg("dummy")
|
||||||
|
lp.files = ["etc/brokenlink -> nonexistent",
|
||||||
|
"etc/exists"]
|
||||||
|
lp.backup = ["etc/brokenlink*"]
|
||||||
|
self.addpkg2db("local", lp)
|
||||||
|
|
||||||
|
# symlink file is not changed
|
||||||
|
lp2 = pmpkg("dummy2")
|
||||||
|
lp2.files = ["etc/brokenlink2 -> nonexistent2",
|
||||||
|
"etc/exists2"]
|
||||||
|
lp2.backup = ["etc/brokenlink2"]
|
||||||
|
self.addpkg2db("local", lp2)
|
||||||
|
|
||||||
|
# package is left alone, not uninstalled
|
||||||
|
lp3 = pmpkg("dummy3")
|
||||||
|
lp3.files = ["etc/brokenlink3 -> nonexistent3",
|
||||||
|
"etc/exists3"]
|
||||||
|
self.addpkg2db("local", lp3)
|
||||||
|
|
||||||
|
self.args = "-R %s %s" % (lp.name, lp2.name)
|
||||||
|
#self.args = "-R"
|
||||||
|
|
||||||
|
self.addrule("PACMAN_RETCODE=0")
|
||||||
|
|
||||||
|
self.addrule("!PKG_EXIST=dummy")
|
||||||
|
self.addrule("!LINK_EXIST=etc/brokenlink")
|
||||||
|
self.addrule("!FILE_EXIST=etc/nonexistent")
|
||||||
|
self.addrule("!FILE_EXIST=etc/exists")
|
||||||
|
|
||||||
|
self.addrule("!PKG_EXIST=dummy2")
|
||||||
|
self.addrule("!LINK_EXIST=etc/brokenlink2")
|
||||||
|
self.addrule("!FILE_EXIST=etc/nonexistent2")
|
||||||
|
self.addrule("!FILE_EXIST=etc/exists2")
|
||||||
|
|
||||||
|
self.addrule("PKG_EXIST=dummy3")
|
||||||
|
self.addrule("LINK_EXIST=etc/brokenlink3")
|
||||||
|
self.addrule("!FILE_EXIST=etc/nonexistent")
|
||||||
|
self.addrule("FILE_EXIST=etc/exists3")
|
||||||
|
self.addrule("FILE_TYPE=etc/brokenlink3|link")
|
||||||
|
self.addrule("FILE_TYPE=etc/exists3|file")
|
|
@ -150,7 +150,6 @@ def getmd5sum(filename):
|
||||||
"""
|
"""
|
||||||
"""
|
"""
|
||||||
if not os.path.isfile(filename):
|
if not os.path.isfile(filename):
|
||||||
print "file %s does not exist!" % filename
|
|
||||||
return ""
|
return ""
|
||||||
fd = open(filename, "rb")
|
fd = open(filename, "rb")
|
||||||
checksum = hashlib.md5()
|
checksum = hashlib.md5()
|
||||||
|
@ -178,9 +177,8 @@ def getmtime(filename):
|
||||||
"""
|
"""
|
||||||
"""
|
"""
|
||||||
if not os.path.exists(filename):
|
if not os.path.exists(filename):
|
||||||
print "path %s does not exist!" % filename
|
return None, None, None
|
||||||
return 0, 0, 0
|
st = os.lstat(filename)
|
||||||
st = os.stat(filename)
|
|
||||||
return st[stat.ST_ATIME], st[stat.ST_MTIME], st[stat.ST_CTIME]
|
return st[stat.ST_ATIME], st[stat.ST_MTIME], st[stat.ST_CTIME]
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Add table
Reference in a new issue