Date: Mon, 25 May 2020 02:50:34 +0000 From: "Montgomery-Smith, Stephen" <stephen@missouri.edu> To: Matthew Seaman <matthew@FreeBSD.org>, "freebsd-ports@freebsd.org" <freebsd-ports@freebsd.org> Subject: Re: Ports from github Message-ID: <9694e545-167b-404f-fbd7-2e97f7cd9482@missouri.edu> In-Reply-To: <5bb5cc69-ef90-2285-324f-58e09399d3ef@FreeBSD.org> References: <3c6205ea-e589-769b-7b12-ee7e6d3fa8ff@missouri.edu> <5bb5cc69-ef90-2285-324f-58e09399d3ef@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--gXxJw8cLIty7ucupn13wVAteitqUafq2w Content-Type: multipart/mixed; boundary="2SmAL9rxqlkkEl4LlpKsrXmfwrWtzsU7a" --2SmAL9rxqlkkEl4LlpKsrXmfwrWtzsU7a Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 5/24/20 3:49 AM, Matthew Seaman wrote: > On 24/05/2020 03:39, Montgomery-Smith, Stephen wrote: >> Is there a "howto" that explains how to build a port from a project th= at >> is on github? The FreeBSD porters handbook seems to assume a lot of >> knowledge is already understood. >=20 > Well, the only thing "different" about porting something from Github, a= s > opposed to any other distfile location, occurs in the 'fetch' phase -- > actually pulling down the distfiles. Once you've got past that, the > rest of building the port is exactly the same as it would be if you got= > the distfiles from anywhere else. >=20 > So, minimally a Github using port will set the following variables: >=20 > PORTNAME=3D someport > PORTVERSION=3D 1.2.3 > DISTVERSIONPREFIX=3D v > USE_GITHUB=3D yes > GH_ACCOUNT=3D someone >=20 > and it won't set: >=20 > MASTER_SITES > DISTFILES >=20 > An example from amongst the ports I maintain is database/pg_citus: >=20 > PORTNAME=3D citus > PORTVERSION=3D 9.3.0 > DISTVERSIONPREFIX=3D v >=20 > USE_GITHUB=3D yes > GH_ACCOUNT=3D citusdata >=20 > From this, the ports can work out that the Github project is: >=20 > https://github.com/citusdata/citus/ > ^^^^^^^^^ > GH_ACCOUNT > ^^^^^ > PORTNAME >=20 > If you go to that project URL and look at their releases page: >=20 > https://github.com/citusdata/citus/releases >=20 > you'll see the list of versions like so: >=20 > v9.3.0 > ^ ^^^^ > | PORTVERSION > DISTVERSIONPREFIX >=20 > That's all that is needed for this port to be able to download a tarbal= l > of the project's sources. >=20 > Now, this is about the simplest possible example of what you might need= > when pulling sources from Github, and this pattern probably accounts fo= r > the largest fraction of the Github-using ports in the tree. >=20 > Beyond that, the next largest fraction will be projects where the > PORTNAME doesn't quite match the GH project URL, or their release tags > specify the version as (eg.) v1_2_3 rather than v1.2.3 -- all just mino= r > tweaks so the ports can put together the right URL to pull the distfile= s > from. >=20 > Beyond that is where it can start to get pretty complicated though. > Sometimes a project doesn't create formal releases, or you want to pull= > down a code base a few commits beyond the latest release, or the projec= t > uses a lot of different sub-projects linked into its tree from other > github repositories. Certain programs written in go are pretty > notorious for this, and can end up with huge lists of distfiles. See > www/gitlab-pages for an example. >=20 > Finally, and only if you really want to blow your mind: throw in an > unreasonable number of port options to the mix. www/nginx is the > pinnacle (or is it nadir?) here. >=20 > In general I'd offer the following three pieces of advice when trying t= o > get to grips with a new area in porting: >=20 > * Find a good example of a port that does something similar and > blatantly copy it[*]. > * Keep things as simple as possible (but no simpler). > * Work iteratively: start with something close, and make simple > minimal changes, one at a time and testing as you go, to get it spo= t > on. >=20 > [*] The trick here is not to copy a port that does things sub-optimally= =2E > Sods law has it that if there's a dozen good examples you might copy, > and one bad one, it's the bad one that will seem like the most enticing= > prospect. >=20 > If in doubt, ask. It helps if you can provide a concrete example or a > specific context for your questions, and indeed, trying to formulate > such a question will often lead you directly to the answer yourself. >=20 > Cheers, >=20 > Matthew Thank you. That really helped a lot. I was able to figure it out from this point. --2SmAL9rxqlkkEl4LlpKsrXmfwrWtzsU7a-- --gXxJw8cLIty7ucupn13wVAteitqUafq2w Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEcCMd3cXf2WTGWYmWK5cnauCP2YIFAl7LMnkACgkQK5cnauCP 2YLeqQf8CfHzyClOoYAd9hX3plrQ+Z9xiDP2mu/NXSh5JKaz0K7BtJoie4WIC145 YzDdc6+aFDnaZTuF1WqeSJtnNFFZCTGqs8PKQrzyxq/BQACWxf9sBeu83bZam4Ks qWZXUvPOu1AyX+GcRiQC1hSZzhGnBQ2BeF/rZcr+yxCzhKjygzE1NZLC+4KqKZJh svmI2NAS8T/C67Md8YLPm05UQ6gOGFEmFkGuJuBQFTISDicoN9YbbPnJT4PSlXUw tX0uEW6vr4ib+MNVZT7kvjlOjoghJv57g9BE4gIdel6wMEZkHnRS/1Zfik2MY7BN KBUsaaJ8/7VUOLbvqgmuOQJPYhpgTw== =UViT -----END PGP SIGNATURE----- --gXxJw8cLIty7ucupn13wVAteitqUafq2w--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9694e545-167b-404f-fbd7-2e97f7cd9482>