Can't figure out github syntax

Paul Schmehl pschmehl_lists at tx.rr.com
Fri Feb 28 22:24:41 UTC 2014


--On February 28, 2014 at 4:02:16 PM -0600 Paul Schmehl 
<pschmehl_lists at tx.rr.com> wrote:

> --On February 28, 2014 at 11:21:24 PM +0200 Kozlov Sergey
> <kozlov.sergey.404 at gmail.com> wrote:
>
>> On 28.02.2014 20:43, Paul Schmehl wrote:
>>> I'm working on a new port that's fetched from github.
>>>
>>> This works:
>>>
>>> MASTER_SITES=
>>> https://github.com/collectiveintel/cif-v1/releases/download/v1.0.2-FINA
>>> L/ DISTNAME=       libcif-v1.0.2-FINAL
>>>
>>> But I cannot for the life of me figure out how to convert that to the
>>> more normal USE_GITHUB syntax.
>>>
>>> Is there a doc on the GITHUB syntax that explains it for dummies?
>>>
>> Hi!
>>
>> Check out the (/usr/ports)/Mk/bsd.sites.mk file, It's pretty well
>> documented.
>
> i wish that were true.  It might be for developers, but it's not for me.
>
>>
>> I think the right combination of GH_ACCOUNT, GH_PROJECT, GH_TAGNAME and
>> GH_COMMIT would do the trick.
>>
>
> I would think so too, however...
>
> Here's my Makefile:
>
># cat Makefile
># $FreeBSD$
>
> PORTNAME=       cif
> PORTVERSION=    1.0.2
> MASTER_SITES=	GH GHC
> CATEGORIES=     www perl5
>
> MAINTAINER=     pauls at utdallas.edu
> COMMENT=        Collective intelligence framework tool
>
> LICENSE=        LGPL3
>
> BUILD_DEPENDS=	p5-Net-SSLeay>=1.43:${PORTSDIR}/security/p5-Net-SSLeay \
> 		p5-Config-Simple>=4.59:${PORTSDIR}/devel/p5-Config-Simple \
>
> 	p5-DateTime-Format-DateParse>=0.05:${PORTSDIR}/devel/p5-DateTime-Format-
> DateParse \
>
> 	p5-Google-ProtocolBuffers>=0.08:${PORTSDIR}/devel/p5-Google-ProtocolBuff
> ers \
> 		p5-Regexp-Common>=2.122:${PORTSDIR}/textproc/p5-Regexp-Common \
> 		p5-URI>=1.56:${PORTSDIR}/net/p5-URI \
> 		p5-LWP-Protocol-https>=6.02:${PORTSDIR}/www/p5-LWP-Protocol-https \
> 		p5-Digest-SHA1>=2.10:${PORTSDIR}/security/p5-Digest-SHA1 \
> 		p5-Net-Patricia>=1.16:${PORTSDIR}/net/p5-Net-Patricia \
> 		p5-Module-Pluggable>=3.8:${PORTSDIR}/devel/p5-Module-Pluggable \
> 		p5-Try-Tiny>=0.04:${PORTSDIR}/lang/p5-Try-Tiny \
> 		p5-MIME-Base64>=3.06:${PORTSDIR}/converters/p5-MIME-Base64 \
> 		p5-Iodef-Pb-Simple>=0.21:${PORTSDIR}/devel/p5-Iodef-Pb-Simple \
>
> 	p5-Regexp-Common-net-CIDR>=0.02:${PORTSDIR}/textproc/p5-Regexp-Common-ne
> t-CIDR \
> 		p5-Compress-Snappy>=0.18:${PORTSDIR}/archivers/p5-Compress-Snappy \
> 		p5-Log-Dispatch>=2.32:${PORTSDIR}/devel/p5-Log-Dispatch \
> 		p5-JSON-XS>=3.0.0:${PORTSDIR}/converters/p5-JSON-XS
>
> USE_GITHUB=	yes
> GH_ACCOUNT=	collectiveintel
> GH_PROJECT=	cif-v1
> GH_TAGNAME=	libcif-v${PORTVERSION}-FINAL
> GH_COMMIT=	d86ca6c
>
># https://github.com/collectiveintel/cif-v1/releases/download/v1.0.2-FINAL
># /libcif-v1.0.2-FINAL.tar.gz
>
> HAS_CONFIGURE=	yes
> CONFIGURE_ARGS=	--prefix=${STAGEDIR}/${PREFIX}
>
> .include <bsd.port.mk>
>
> The commented out url is what I want to pull down.  The TAGNAME does not
> do that.  If I call the url MASTER_SITES it works fine, but that's
> obviously not the right way to do it.
>
> I don't understand how to get these macros to do what I need.
>
> Attempting to fetch
> https://codeload.github.com/collectiveintel/cif-v1/legacy.tar.gz/libcif-v
> 1.0.2-FINAL?dummy=/cif-1.0.2.tar.gz
> fetch:
> https://codeload.github.com/collectiveintel/cif-v1/legacy.tar.gz/libcif-v
> 1.0.2-FINAL?dummy=/cif-1.0.2.tar.gz: Not Found
> => Attempting to fetch
> http://codeload.github.com/collectiveintel/cif-v1/legacy.tar.gz/libcif-v1
> .0.2-FINAL?dummy=/cif-1.0.2.tar.gz
>
> Obviously it's not descending into the releases/download folder to find
> the tarball.  The question is, why isn't it, and how do I get it to do
> that?

So, I go to github, click on releases and click on tags.  I find the 
tagname I want - 	
v1.0.2-FINAL, which has the commit has of d86ca6c.  I put that in my 
Makefile and run make makesum.  The system pulls down the 
cif-v1.0.2-FINAL.tar.gz file.  Not really what I want (I only want 
libcif-v1.0.2-FINAL.tar.gz), but OK, I can work around that.

So I run make install, and what happens? can't cd to 
/usr/ports/www/cif/work/collectiveintel-cif-v1-d86ca6c: No such file or 
directory

WTF???

So I ls work:

ls work/
.extract_done.cif._usr_local    .license-catalog.mk 
.license-report                 .license_done.cif._usr_local 
collectiveintel-cif-v1-ebd850d/

WTF??  Why is the commit hash different than the one I specified?

I"ve run into this time and time again trying to build ports that use 
GITHUB.  I HATE it.  Drives me batty.  It at least doubles the time it 
takes me to figure out how to get a damn port working.

I've considered just saying fuck it, you put your software on github, I 
will no longer maintain the damn port.

Why is this so frickin' hard to do?

-- 
Paul Schmehl, Senior Infosec Analyst
As if it wasn't already obvious, my opinions
are my own and not those of my employer.
*******************************************
"It is as useless to argue with those who have
renounced the use of reason as to administer
medication to the dead." Thomas Jefferson
"There are some ideas so wrong that only a very
intelligent person could believe in them." George Orwell



More information about the freebsd-ports mailing list