From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 63C7D138334 for ; Mon, 16 Sep 2019 18:46:55 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id B68A4E09B6; Mon, 16 Sep 2019 18:46:51 +0000 (UTC) Received: from smtp.gentoo.org (mail.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 6778AE0997 for ; Mon, 16 Sep 2019 18:46:51 +0000 (UTC) Received: from whubbs1.gaikai.biz (unknown [100.42.103.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: williamh) by smtp.gentoo.org (Postfix) with ESMTPSA id 9382E34B25B; Mon, 16 Sep 2019 18:46:49 +0000 (UTC) Received: (nullmailer pid 27998 invoked by uid 1000); Mon, 16 Sep 2019 18:46:46 -0000 Date: Mon, 16 Sep 2019 13:46:46 -0500 From: William Hubbs To: gentoo-dev@lists.gentoo.org Cc: mgorny@gentoo.org Subject: Re: [gentoo-dev] [PATCH 1/1] go-module.eclass: introduce new eclass to handle go modules Message-ID: <20190916184646.GC27855@whubbs1.dev.av1.gaikai.org> Mail-Followup-To: gentoo-dev@lists.gentoo.org, mgorny@gentoo.org References: <20190916141719.12922-1-williamh@gentoo.org> <20190916141719.12922-2-williamh@gentoo.org> <9a93cbef4883b37a53ffa0003ca53a8deb393a96.camel@gentoo.org> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-dev@lists.gentoo.org Reply-to: gentoo-dev@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="UPT3ojh+0CqEDtpF" Content-Disposition: inline In-Reply-To: <9a93cbef4883b37a53ffa0003ca53a8deb393a96.camel@gentoo.org> User-Agent: Mutt/1.10.1 (2018-07-13) X-Archives-Salt: 5ece0c5f-6906-4ef7-8f06-2195d8f3df21 X-Archives-Hash: beda7fc6353e2d3329af456232032b33 --UPT3ojh+0CqEDtpF Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Sep 16, 2019 at 08:05:50PM +0200, Micha=C5=82 G=C3=B3rny wrote: > On Mon, 2019-09-16 at 09:17 -0500, William Hubbs wrote: > > Signed-off-by: William Hubbs > > --- > > eclass/go-module.eclass | 117 ++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 117 insertions(+) > > create mode 100644 eclass/go-module.eclass > >=20 > > diff --git a/eclass/go-module.eclass b/eclass/go-module.eclass > > new file mode 100644 > > index 00000000000..7e16ec4e95c > > --- /dev/null > > +++ b/eclass/go-module.eclass > > @@ -0,0 +1,117 @@ > > +# Copyright 2019 gentoo authors > > +# Distributed under the terms of the GNU General Public License v2 > > + > > +# @ECLASS: go-module.eclass > > +# @MAINTAINER: > > +# William Hubbs > > +# @SUPPORTED_EAPIS: 7 > > +# @BLURB: basic eclass for building software written in the go > > +# programming language that uses go modules. > > +# @DESCRIPTION: > > +# This eclass provides some basic things needed by all software > > +# written in the go programming language that uses go modules. > > +# > > +# You will know the software you are packaging uses modules because > > +# it will have files named go.sum and go.mod in its top-level source > > +# directory. If it does not have these files, use the golang-* eclasse= s. >=20 > Please add a big fat warning around here somewhere that people need to > look through LICENSE files in all vendored modules, and list them > in LICENSE. They also need to watch out for license conflicts. >=20 > > +# > > +# If the software you are packaging uses modules, the next question is > > +# whether it has a directory named "vendor" at the top-level of the so= urce tree. > > +# > > +# If it doesn't, you need to create a tarball of what would be in the > > +# vendor directory and mirror it locally. > > +# If foo-1.0 is the name of your project and you have the tarball for = it > > +# in your current directory, this is done with the following commands: > > +# > > +# @CODE: > > +# > > +# tar -xf foo-1.0.tar.gz > > +# cd foo-1.0 > > +# go mod vendor > > +# cd .. > > +# tar -acf foo-1.0-vendor.tar.gz foo-1.0/vendor > > +# > > +# @CODE: > > + > > +# If we uncomment src_prepare below, the last two lines in the above > > +# code block are reduced to one: > > +# > > +# @CODE: > > +# > > +# tar -acf foo-1.0-vendor.tar.gz vendor > > +# > > +# @CODE: > > + > > +case ${EAPI:-0} in > > + 7) ;; > > + *) die "${ECLASS} API in EAPI ${EAPI} not yet established." > > +esac > > + > > +if [[ -z ${_GO_MODULE} ]]; then > > + > > +_GO_MODULE=3D1 > > + > > +BDEPEND=3D">=3Ddev-lang/go-1.12" > > + > > +# The following go flags should be used for all go builds. > > +# -mod=3Dvendor stopps downloading of dependencies from the internet. > > +# -v prints the names of packages as they are compiled > > +# -x prints commands as they are executed > > +export GOFLAGS=3D"-mod=3Dvendor -v -x" > > + > > +# Do not complain about CFLAGS etc since go projects do not use them. > > +QA_FLAGS_IGNORED=3D'.*' > > + > > +# Go packages should not be stripped with strip(1). > > +RESTRICT=3D"strip" > > + > > +# EXPORT_FUNCTIONS src_prepare pkg_postinst > > + EXPORT_FUNCTIONS pkg_postinst > > + > > +# @FUNCTION: go-module_src_prepare > > +# @DESCRIPTION: > > +# Run a default src_prepare then move our provided vendor directory to > > +# the appropriate spot if upstream doesn't provide a vendor directory. > > +# > > +# This is commented out because I want to see where the discussion on > > +# the ml leads. > > +# Commenting it out and following the above instructions means that you > > +# are forced to manually re-tar the vendored dependencies for every > > +# version bump. > > +# Using the previous method, it would be possible to decide if you need > > +# to do this by comparing the contents of go.mod in the previous and n= ew > > +# version. > > +# Also, note that we can generate a qa warning if a maintainer forgets > > +# to drop the vendor tarball and upstream starts vendoring. > > +# go-module_src_prepare() { > > +# default > > +# # If upstream vendors the dependencies and we provide a vendor > > +# # tarball, generate a qa warning. > > +# if [[ -d vendor ]] && [[ -d ../vendor ]] ; then > > +# eqawarn "This package's upstream source includes a vendor > > +# eqawarn "directory and the maintainer provides a vendor tarball." > > +# eqawarn "Please report this on https://bugs.gentoo.org" >=20 > Why aren't you making it fatal? I didn't make it fatal because it doesn't break the build. The build will ignore the ../vendor directory from the tarball since it is not under ${S}. Do you want it to be fatal? Thanks, William --UPT3ojh+0CqEDtpF Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQTVeuxEZo4uUHOkQAluVBb0MMRlOAUCXX/YkAAKCRBuVBb0MMRl OPDmAJ0cBV2UnZwFg2IlMEcaydqX44DvQQCgtDEbb+jlxjo/vK/bOK++jFhBWps= =gm+x -----END PGP SIGNATURE----- --UPT3ojh+0CqEDtpF--