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
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 <nsoffer(a)redhat.com>
---
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/libnbd(a)v1.11.4/
+#
+# 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
+# └── libnbd(a)v1.11.4
+# ├── 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