On Sun, Nov 07, 2021 at 06:35:50PM +0200, Nir Soffer wrote: > Add make-dist.sh script, creating a distribution tree for a proxy > server[1]. The created tree must be served by the web server serving the > libnbd module, for example: > > https://download.libguestfs.org/libnbd-golang > > The Go tools will find this URL by looking at: > > https://libguestfs.org/linbd
* libnbd > Which serve html document with the "go-import" meta tag, pointing to > the server serving the module. > > When the module is available, we need to register the package here: > https://pkg.go.dev/libguestfs.org/libnbd > > [1] https://golang.org/ref/mod#serving-from-proxy > > Signed-off-by: Nir Soffer <[email protected]> > --- > golang/make-dist.sh | 123 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 123 insertions(+) > create mode 100755 golang/make-dist.sh > > diff --git a/golang/make-dist.sh b/golang/make-dist.sh > new file mode 100755 > index 0000000..634e306 > --- /dev/null > +++ b/golang/make-dist.sh > @@ -0,0 +1,123 @@ > +#!/bin/sh -e > +# nbd client library in userspace > +# Copyright (C) 2021 Red Hat Inc. > +# > +# This library is free software; you can redistribute it and/or > +# modify it under the terms of the GNU Lesser General Public > +# License as published by the Free Software Foundation; either > +# version 2 of the License, or (at your option) any later version. > +# > +# This library is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > +# Lesser General Public License for more details. > +# > +# You should have received a copy of the GNU Lesser General Public > +# License along with this library; if not, write to the Free Software > +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > + > +# Create a distribution tree for serving the libnbd Go module. > +# > +# The web server must serve tree: > +# > +# libguestfs.org > +# └── libnbd > +# ├── @latest > +# └── @v > +# ├── list > +# ├── v1.11.4.info > +# ├── v1.11.4.mod > +# └── v1.11.4.zip > +# > +# For example: > +# > +# > https://download.libguestfs.org/libnbd-golang/libguestfs.org/libnbd/@v/list > +# > +# To test the web server use: > +# > +# GOPROXY=https://download.libguestfs.org go get libguestfs.org/libnbd > +# > +# This should download the module and add it to the local cache, by > +# default in: > +# > +# ~/go/pkg/mod/libguestfs.org/[email protected]/ > +# > +# The Go tools will find the web server by looking at: > +# > +# https://libguestfs.org/libnbd > +# > +# Which must serve html document with this meta tag: > +# > +# <meta name="go-import" content="libguestfs.org/libnbd mod > https://download.libguestfs.org/libnbd-golang"> > +# > +# With this, users can consume the libnbd Go bindings using: > +# > +# go get libguestfs.org/libnbd > +# > + > +version=$(git describe) > + > +# Create module zip file > +# > +# libguestfs.org > +# └── [email protected] > +# ├── go.mod > +# ├── handle.go > +# ... > +# > +# See https://golang.org/ref/mod#zip-files > + > +version_dir="libguestfs.org/libnbd@v$version" > + > +echo "## Creating module zip file: $version.zip" > + > +mkdir -p $version_dir > + > +tar cf - \ > + --exclude examples \ > + --exclude configure \ > + --exclude "*_test.go" \ > + go.mod README.md LICENSE *.go *.h \ > + | tar xvf - -C $version_dir > + > +zip -rv $version.zip $version_dir/* > + > +rm -rf libguestfs.org > + > +# Create web server tree. > +# > +# libguestfs.org > +# └── libnbd > +# ├── @latest > +# └── @v > +# ├── list > +# ├── v1.11.4.info > +# ├── v1.11.4.mod > +# └── v1.11.4.zip > +# > +# See https://golang.org/ref/mod#serving-from-proxy > + > +echo "## Creating a tarball: libnbd-golang-$version.tar.gz" > + > +module_dir=libguestfs.org/libnbd > +v_dir=$module_dir/@v > + > +mkdir -p $v_dir > + > +echo "{\"Version\": \"$version\"}" > $module_dir/@latest > +echo "{\"Version\": \"$version\"}" > $v_dir/$version.info > + > +# This is not entirely corect. This file should have a list of all > +# version avaialable, here we create only single version. This should > +# really be done on the server by appending the new version to the list > +# file. > +echo $version > $v_dir/list > + > +cp go.mod $v_dir/$version.mod > +mv $version.zip $v_dir > + > +# Create tarball to upload and extract on the webserver. It should be > +# extracted in the directory pointed by the "go-import" meta tag. > +tar cvzf libnbd-golang-$version.tar.gz libguestfs.org > + > +rm -rf libguestfs.org > -- > 2.31.1 -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
