Hi

On Sun, Jan 10, 2021 at 12:45 PM Anatol Pomozov
<[email protected]> wrote:
>
> Hi
>
> The commit description sounds like a duplicate of
> https://bugs.archlinux.org/task/33992
>
> Isn't it fixed by commit f3dfba73d22b7eca3810a8114f2aab63da488b4c ?

Current master works for me:

$ sudo rm /var/cache/pacman/pkg/zxing-cpp-1.1.1-1-x86_64.pkg.tar.zst.sig
$ sudo pacman -U https://archlinux.org/packages/extra/x86_64/zxing-cpp/download/
...
warning: zxing-cpp-1.1.1-1 is up to date -- reinstalling
...
$ ls -l /var/cache/pacman/pkg/zxing-cpp-1.1.1-1-x86_64.pkg.tar.zst.sig
-rw-r--r-- 1 root root 310 Sep 12 13:12
/var/cache/pacman/pkg/zxing-cpp-1.1.1-1-x86_64.pkg.tar.zst.sig



Could you please share a bit more information about the issue you are
trying to fix?

>
> On Sun, Jan 10, 2021 at 12:22 PM morganamilo <[email protected]> 
> wrote:
> >
> > ---
> >
> > Also, I think the way signature downloading is a bit weird. You can't
> > just download a signature. You have to say you want to download the
> > package then the downloader will download the sig after the package
> > finishes downloading.
>
> That's because the download URL can be redirected. And the final URL
> of the package is not known until the download starts.
>
> There is also a requirement that *.sig file should come from the same
> server as the package itself, i.e. *.sig file URL is unknown until the
> package download URL is resolved.
>
> > I think it would make more sense for signatures to be their own
> > payloads and then have a dlsigcb.
> >
> > This would go towards fixing FS#67813
> >
> > If totaldlcb reports 0 packages to download, then we can show the
> > progress bars for the sigs instead of the packages.
> > ---
> >  lib/libalpm/dload.c | 21 ++++++++++++++++++++-
> >  1 file changed, 20 insertions(+), 1 deletion(-)
> >
> > diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
> > index df5e8be7..66ebeae9 100644
> > --- a/lib/libalpm/dload.c
> > +++ b/lib/libalpm/dload.c
> > @@ -863,8 +863,27 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, 
> > const alpm_list_t *urls,
> >                 char *url = i->data;
> >
> >                 /* attempt to find the file in our pkgcache */
> > +
> >                 char *filepath = filecache_find_url(handle, url);
> > -               if(filepath) {
> > +               int need_download = !filepath;
> > +               /* even if the package file in the cache we need to check 
> > for
> > +                * accompanion *.sig file as well.
> > +                * If *.sig is not cached then force download the package + 
> > its signature file.
> > +                */
> > +               if(!need_download && (handle->siglevel & ALPM_SIG_PACKAGE)) 
> > {
> > +                       char *sig_filename = NULL;
> > +                       int len = strlen(filepath) + 5;
> > +
> > +                       MALLOC(sig_filename, len, RET_ERR(handle, 
> > ALPM_ERR_MEMORY, -1));
> > +                       snprintf(sig_filename, len, "%s.sig", filepath);
> > +
> > +                       need_download = !_alpm_filecache_exists(handle, 
> > sig_filename);
> > +
> > +                       FREE(sig_filename);
> > +               }
> > +
> > +
> > +               if(!need_download) {
> >                         /* the file is locally cached so add it to the 
> > output right away */
> >                         alpm_list_append(fetched, filepath);
> >                 } else {
> > --
> > 2.30.0

Reply via email to