diff --git a/pacman/PKGBUILD b/pacman/PKGBUILD index c35e984e..ea94bafd 100644 --- a/pacman/PKGBUILD +++ b/pacman/PKGBUILD @@ -4,7 +4,7 @@ pkgname=pacman pkgver=6.0.0 -pkgrel=3 +pkgrel=4 pkgdesc="A library-based package manager with dependency support (MSYS2 port)" arch=('i686' 'x86_64') url="https://www.archlinux.org/pacman/" @@ -42,6 +42,7 @@ source=(pacman-${pkgver}::git+https://git.archlinux.org/pacman.git#commit=${_com "makepkg.conf" "makepkg_mingw.conf" "makepkg-mingw" + "fix-sig-download-name.patch" 0001-Msysize.patch 0002-More-debugging-info.patch 0003-Core-update.patch @@ -67,6 +68,7 @@ sha256sums=('SKIP' 'ee9f8a5ec60a1334725adb102f531f38badfe1bb66bde82c4aeb3131a2becc2f' '49452621003656e5ad09c5ed38d37f62187ede8b6456a2ba2919846b430dfb74' '2bd27c3fc5443b367e5025c9b9a35670b02202e48e92eead90755fef8d08fa83' + '3687b6ed122d607fc549c0ec2fc29b61e7da246fd42443680e442e8526a18ab2' '6dd930f5da349959deb128b0fa875da11184df90afe250a51862b39beffd1240' '4986792235e02c62316d974e47059bcf1223c4a2d86efa1eb56d8ef6993988ad' 'd35854bf5a14984ddb57a36be6f4e9ac62748fa2bf10c8f844a8eb17402e8839' @@ -101,6 +103,9 @@ prepare() { git config core.symlinks true git reset HEAD --hard + # https://bugs.archlinux.org/task/71274#comment200612 + patch -Np1 -i "${srcdir}/fix-sig-download-name.patch" + apply_git_am_with_msg 0001-Msysize.patch \ 0002-More-debugging-info.patch \ 0003-Core-update.patch \ diff --git a/pacman/fix-sig-download-name.patch b/pacman/fix-sig-download-name.patch new file mode 100644 index 00000000..3d9d7a8a --- /dev/null +++ b/pacman/fix-sig-download-name.patch @@ -0,0 +1,43 @@ +diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c +index 2c14841f..ca6be7b6 100644 +--- a/lib/libalpm/dload.c ++++ b/lib/libalpm/dload.c +@@ -614,6 +614,7 @@ static int curl_check_finished_download(CURLM *curlm, CURLMsg *msg, + if(!payload->signature && payload->download_signature && curlerr == CURLE_OK && payload->respcode < 400) { + struct dload_payload *sig = NULL; + ++ const char* realname = payload->destfile_name ? payload->destfile_name : payload->tempfile_name; + int len = strlen(effective_url) + 5; + CALLOC(sig, 1, sizeof(*sig), GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup)); + MALLOC(sig->fileurl, len, FREE(sig); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup)); +@@ -623,13 +624,18 @@ static int curl_check_finished_download(CURLM *curlm, CURLMsg *msg, + /* In this case server might provide a new name for the main payload. + * Choose *.sig filename based on this new name. + */ +- const char* realname = payload->destfile_name ? payload->destfile_name : payload->tempfile_name; + const char *final_file = get_filename(realname); + int remote_name_len = strlen(final_file) + 5; + MALLOC(sig->remote_name, remote_name_len, FREE(sig->fileurl); FREE(sig); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup)); + snprintf(sig->remote_name, remote_name_len, "%s.sig", final_file); + } + ++ /* force the filename to be realname + ".sig" */ ++ int destfile_name_len = strlen(realname) + 5; ++ MALLOC(sig->destfile_name, destfile_name_len, FREE(sig->remote_name); ++ FREE(sig->fileurl); FREE(sig); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup)); ++ snprintf(sig->destfile_name, destfile_name_len, "%s.sig", realname); ++ + sig->signature = 1; + sig->handle = handle; + sig->force = payload->force; +@@ -762,7 +768,9 @@ static int curl_add_payload(alpm_handle_t *handle, CURLM *curlm, + } + + if(payload->remote_name && strlen(payload->remote_name) > 0) { +- payload->destfile_name = get_fullpath(localpath, payload->remote_name, ""); ++ if(!payload->destfile_name) { ++ payload->destfile_name = get_fullpath(localpath, payload->remote_name, ""); ++ } + payload->tempfile_name = get_fullpath(localpath, payload->remote_name, ".part"); + if(!payload->destfile_name || !payload->tempfile_name) { + goto cleanup; \ No newline at end of file