Frédéric Fauberteau <frederic.fauberteau%devinci.fr@localhost> writes:
> Imagine we would package the foo program hosted by the jsmith github
> account. Unfortunately, the repository is named foo-dev. I would to
> write:
> DISTNAME= foo-dev-1.2.3
> PKGNAME= ${DISTNAME:S/-dev//}
> MASTER_SITES= ${MASTER_SITE_GITHUB:=jsmith/}
>
> But it doesn't work because GITHUB_PROJECT?= ${PKGBASE}:
> Requesting https://github.com/jsmith/foo/archive/1.2.3.tar.gz
> ftp: Error retrieving file `404 Not Found'
There are a few issues wrapped up in here.
One is that for a DISTNAME of foo-bar-x.y.z, what should be the PKGNAME?
Arguably it should be foo-bar, by default. I don't really follow the
what -dev means here, but I think it normally would belong in PKGNAME.
A package with a DISTNAME of foo-bar-x.y.z should unpack into a WRKSRC
of foo-bar-x.y.z.
> If I write the followings:
> DISTNAME= foo-1.2.3
> MASTER_SITES= ${MASTER_SITE_GITHUB:=jsmith/}
> GITHUB_PROJECT= ${PKGBASE}-dev
> It doesn't work because WRKSRC?=
> ${WRKDIR}/${DISTNAME:U${PKGNAME_NOREV}}. WRKSRC=work/foo-1.2.3 but
> actually, the extraction of archive produces work/foo-dev-1.2.3:
> patch: **** can't cd to /usr/pkgsrc/xxx/foo/work/foo-1.2.3: No such
> file or directory
It seems like asking for trouble to retrieve a file from github (that
should be an actual file, but probably isn't) and rename it when storing
it locally. So I advise against DISTNAME not matching GITHUB_PROJECT
in the obvious way.
> A working solution is:
> DISTNAME= foo-dev-1.2.3
> PKGNAME= ${DISTNAME:S/-dev//}
In other words, PKGNAME=foo?
> MASTER_SITES= ${MASTER_SITE_GITHUB:=jsmith/}
> GITHUB_PROJECT= ${PKGBASE}-dev
That seems like a good solution, but you left out the comment explaining
that upsream is doing things wrong, specifically how, and how you are
working around it :-) I'm serious about the comment, because it will
help the next maintainer.
You are having to set PKGNAME because the upstream is configured
incorrectly (PKGNAME != repo name), and GITHUB_PROJECT to compensate for
that prior accomodation. What's the problem (other than upstream)?
Have you filed a bug with upstream about their naming?
> What about the following solution?
> +++ fetch/github.mk 2018-05-24 12:56:25.000000000 +0200
> @@ -39,7 +39,7 @@
>
> .if defined(_USE_GITHUB) && !empty(_USE_GITHUB:M[yY][eE][sS])
>
> -GITHUB_PROJECT?= ${PKGBASE}
> +GITHUB_PROJECT?= ${DISTNAME:C/-[^-]*$//}
> GITHUB_TAG?= ${PKGVERSION_NOREV}
>
> . if !empty(GITHUB_TAG:Mmaster)
That seems like a kludge for one package with an incorrectly setup
upstream, duplicating the PKGBASE logic in a way that happens to work
with this package.
What I tend to do when running into upstreams with naming bugs is to
define a few variables and build up the PKGSRC variables I need from
them explicitly. Often this is a baseneme foo-1.0 and then another
variable RC1 so that RC1 is treated as follows:
DISTNAME: included
PKGNAME: included
WRKSRC: not included
Your case is different in details, but is similarly working around a
violation of the usual convention that DISTNAME==WRKSRC and DISTNAME
minus the version is PKGNAME.
So I too am opposed to the general change you are proposing.
Attachment:
signature.asc
Description: PGP signature