diff options
Diffstat (limited to 'libre/pacman/pacman-5.0.1-roundup.patch')
-rw-r--r-- | libre/pacman/pacman-5.0.1-roundup.patch | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/libre/pacman/pacman-5.0.1-roundup.patch b/libre/pacman/pacman-5.0.1-roundup.patch new file mode 100644 index 000000000..ddb8ddb31 --- /dev/null +++ b/libre/pacman/pacman-5.0.1-roundup.patch @@ -0,0 +1,174 @@ +diff --git a/NEWS b/NEWS +index 07aa028..b7298bf 100644 +--- a/NEWS ++++ b/NEWS +@@ -1,5 +1,22 @@ + VERSION DESCRIPTION + ----------------------------------------------------------------------------- ++5.0.1 - fix alignment issues with wide character locales (FS#47980) ++ - fix removal of .pacnew files (FS#47993) ++ - fix triggering of Install hooks (FS#47996) ++ - fix handling of stdin scripts called by pacman ++ - hook activity is logged ++ - documentataion updates for alpm-hooks (FS#48080) ++ - makepkg: ++ - increase robustness of variable array checks ++ - makepkg -g does not perform current architecture checks ++ - do not run prepare() with --noextract ++ - all directories in the packaging directory are cleared ++ before each build ++ - fix translations issues (FS#48057, FS#48298) ++ - repo-add: ++ - fix checking for non-existent database ++ - contrib: ++ - zsh_completion: updated makepkg options + 5.0.0 - pacman can run hooks pre- and post-transaction. See the + alpm-hooks(5) man page for details and an example hook (FS#2985) + - pacman can now sync and read .files databases (-Fy) and do basic +diff --git a/doc/PKGBUILD.5.txt b/doc/PKGBUILD.5.txt +index e410481..4b4a22c 100644 +--- a/doc/PKGBUILD.5.txt ++++ b/doc/PKGBUILD.5.txt +@@ -52,10 +52,10 @@ similar to `$_basekernver`. + + + The `pkgver` variable can be automatically updated by providing a `pkgver()` + function in the PKGBUILD that outputs the new package version. +-This is run after downloading and extracting the sources so it can use those +-files in determining the new `pkgver`. +-This is most useful when used with sources from version control systems (see +-below). ++This is run after downloading and extracting the sources and running the ++`prepare()` function (if present), so it can use those files in determining the ++new `pkgver`. This is most useful when used with sources from version control ++systems (see below). + + *pkgrel*:: + This is the release number specific to the Arch Linux release. This +diff --git a/scripts/libmakepkg/tidy/emptydirs.sh.in b/scripts/libmakepkg/tidy/emptydirs.sh.in +index 32b8d8c..85ab39d 100644 +--- a/scripts/libmakepkg/tidy/emptydirs.sh.in ++++ b/scripts/libmakepkg/tidy/emptydirs.sh.in +@@ -33,6 +33,7 @@ tidy_remove+=('tidy_emptydirs') + tidy_emptydirs() { + if check_option "emptydirs" "n"; then + msg2 "$(gettext "Removing empty directories...")" +- find . -depth -type d -exec rmdir '{}' + 2>/dev/null ++ # we are unable to use '-empty' as it is non-POSIX and not support by all find variants ++ find . -depth -type d -exec rmdir '{}' \; 2>/dev/null + fi + } +diff --git a/scripts/libmakepkg/util/util.sh b/scripts/libmakepkg/util/util.sh +index 675e75d..f9f1c20 100644 +--- a/scripts/libmakepkg/util/util.sh ++++ b/scripts/libmakepkg/util/util.sh +@@ -46,7 +46,7 @@ is_array() { + local shellopts=$(shopt -p) + shopt -s extglob + +- if [[ $(declare -p "$i") == declare\ -*([[:alnum:]])a*([[:alnum:]])\ * ]]; then ++ if [[ $(declare -p "$v") == declare\ -*([[:alnum:]])a*([[:alnum:]])\ * ]]; then + ret=0 + fi + +diff --git a/scripts/pacman-key.sh.in b/scripts/pacman-key.sh.in +index 30d2704..0db0952 100644 +--- a/scripts/pacman-key.sh.in ++++ b/scripts/pacman-key.sh.in +@@ -483,7 +483,7 @@ verify_sig() { + local ret=0 + for sig; do + msg "Checking %s..." "$sig" +- if ! "${GPG_PACMAN[@]}" --status-fd 1 --verify "$sig" | grep -qE '^\[GNUPG:\] TRUST_(FULLY|ULTIMATE)$'; then ++ if ! "${GPG_PACMAN[@]}" --status-fd 1 --verify "$sig" | grep -qE '^\[GNUPG:\] TRUST_(FULLY|ULTIMATE).*$'; then + error "$(gettext "The signature identified by %s could not be verified.")" "$sig" + ret=1 + fi +diff --git a/src/pacman/check.c b/src/pacman/check.c +index 0fe74e8..d282cc2 100644 +--- a/src/pacman/check.c ++++ b/src/pacman/check.c +@@ -254,7 +254,6 @@ int check_pkg_full(alpm_pkg_t *pkg) + const char *root, *pkgname; + size_t errors = 0; + size_t rootlen; +- char filepath[PATH_MAX]; + struct archive *mtree; + struct archive_entry *entry = NULL; + size_t file_count = 0; +@@ -267,7 +266,6 @@ int check_pkg_full(alpm_pkg_t *pkg) + pm_printf(ALPM_LOG_ERROR, _("path too long: %s%s\n"), root, ""); + return 1; + } +- strcpy(filepath, root); + + pkgname = alpm_pkg_get_name(pkg); + mtree = alpm_pkg_mtree_open(pkg); +@@ -282,6 +280,8 @@ int check_pkg_full(alpm_pkg_t *pkg) + while(alpm_pkg_mtree_next(pkg, mtree, &entry) == ARCHIVE_OK) { + struct stat st; + const char *path = archive_entry_pathname(entry); ++ char filepath[PATH_MAX]; ++ int filepath_len; + mode_t type; + size_t file_errors = 0; + int backup = 0; +@@ -292,31 +292,37 @@ int check_pkg_full(alpm_pkg_t *pkg) + path += 2; + } + +- if(strcmp(path, ".INSTALL") == 0) { +- char filename[PATH_MAX]; +- snprintf(filename, PATH_MAX, "%slocal/%s-%s/install", +- alpm_option_get_dbpath(config->handle) + 1, +- pkgname, alpm_pkg_get_version(pkg)); +- archive_entry_set_pathname(entry, filename); +- path = archive_entry_pathname(entry); +- } else if(strcmp(path, ".CHANGELOG") == 0) { +- char filename[PATH_MAX]; +- snprintf(filename, PATH_MAX, "%slocal/%s-%s/changelog", +- alpm_option_get_dbpath(config->handle) + 1, +- pkgname, alpm_pkg_get_version(pkg)); +- archive_entry_set_pathname(entry, filename); +- path = archive_entry_pathname(entry); +- } else if(*path == '.') { +- continue; +- } ++ if(*path == '.') { ++ const char *dbfile = NULL; + +- file_count++; ++ if(strcmp(path, ".INSTALL") == 0) { ++ dbfile = "install"; ++ } else if(strcmp(path, ".CHANGELOG") == 0) { ++ dbfile = "changelog"; ++ } else { ++ continue; ++ } + +- if(rootlen + 1 + strlen(path) > PATH_MAX) { +- pm_printf(ALPM_LOG_WARNING, _("path too long: %s%s\n"), root, path); +- continue; ++ /* Do not append root directory as alpm_option_get_dbpath is already ++ * an absoute path */ ++ filepath_len = snprintf(filepath, PATH_MAX, "%slocal/%s-%s/%s", ++ alpm_option_get_dbpath(config->handle), ++ pkgname, alpm_pkg_get_version(pkg), dbfile); ++ if(filepath_len >= PATH_MAX) { ++ pm_printf(ALPM_LOG_WARNING, _("path too long: %slocal/%s-%s/%s\n"), ++ alpm_option_get_dbpath(config->handle), ++ pkgname, alpm_pkg_get_version(pkg), dbfile); ++ continue; ++ } ++ } else { ++ filepath_len = snprintf(filepath, PATH_MAX, "%s%s", root, path); ++ if(filepath_len >= PATH_MAX) { ++ pm_printf(ALPM_LOG_WARNING, _("path too long: %s%s\n"), root, path); ++ continue; ++ } + } +- strcpy(filepath + rootlen, path); ++ ++ file_count++; + + exists = check_file_exists(pkgname, filepath, rootlen, &st); + if(exists == 1) { |