On Tue, Nov 2, 2021 at 10:16 PM Nir Soffer <[email protected]> wrote:
>
> Move the libnbd module to the golang directory to make it easier to work
> with the source, and to match other bindings.
>
> I think that src/libguestfs.org/libnbd/ tree is left over from older Go
> versions using GOPATH. Modern Go uses modules so it does not matter
> where you put your source.
>
> With this change, we can add a nice tag for every release:
>
> golang/v1.11.2
>
> This exposes the package version to "go get".
>
> This will also fix:
>
> https://pkg.go.dev/github.com/libguestfs/libnbd/golang
This change fixes some of the problems (missing go.mod, license, readme)
But this page expects the package name:
import "github.com/libguestfs/libnbd/golang"
But we use:
import "libguestfs.org/libnbd"
This issue can be solve by returning the right metadata at:
https://libguestfs.org/libnbd/
And requesting this URL:
https://pkg.go.dev/libguestfs.org/libnbd
But turns out that the go proxy protocol does *not* support modules which
are not at the root of the repo:
https://github.com/golang/go/issues/34055
The proposal was accepted:
https://github.com/golang/go/issues/34055#issuecomment-785279844
but it is planned for Go 1.19.
Nir
> This is not enough to consume the module directly from the source, we
> still have to solve the issue of the generated files, and returning the
> right metadata from https://libguestfs.org/libnbd.
>
> Signed-off-by: Nir Soffer <[email protected]>
> ---
> generator/generator.ml | 12 +--
> .../libguestfs.org/libnbd => }/.gitignore | 0
> .../{src/libguestfs.org/libnbd => }/LICENSE | 0
> golang/Makefile.am | 83 +++++++++----------
> .../{src/libguestfs.org/libnbd => }/README.md | 17 ++--
> .../libguestfs.org/libnbd => }/aio_buffer.go | 0
> .../libguestfs.org/libnbd => }/callbacks.go | 0
> golang/examples/get_size/go.mod | 2 +-
> golang/examples/read_first_sector/go.mod | 2 +-
> golang/{src/libguestfs.org/libnbd => }/go.mod | 0
> .../{src/libguestfs.org/libnbd => }/handle.go | 0
> .../libnbd => }/libnbd_010_load_test.go | 0
> .../libnbd => }/libnbd_100_handle_test.go | 0
> .../libnbd => }/libnbd_110_defaults_test.go | 0
> .../libnbd_120_set_non_defaults_test.go | 0
> .../libnbd_200_connect_command_test.go | 0
> .../libnbd => }/libnbd_210_opt_abort_test.go | 0
> .../libnbd => }/libnbd_220_opt_list_test.go | 0
> .../libnbd => }/libnbd_230_opt_info_test.go | 0
> .../libnbd_240_opt_list_meta_test.go | 0
> .../libnbd => }/libnbd_300_get_size_test.go | 0
> .../libnbd => }/libnbd_400_pread_test.go | 0
> .../libnbd_405_pread_structured_test.go | 0
> .../libnbd => }/libnbd_410_pwrite_test.go | 0
> .../libnbd_460_block_status_test.go | 0
> .../libnbd => }/libnbd_500_aio_pread_test.go | 0
> .../libnbd => }/libnbd_510_aio_pwrite_test.go | 0
> .../libnbd => }/libnbd_590_aio_copy_test.go | 0
> .../libnbd_600_debug_callback_test.go | 0
> .../libnbd => }/libnbd_610_error_test.go | 0
> golang/run-tests.sh | 2 -
> 31 files changed, 55 insertions(+), 63 deletions(-)
> rename golang/{src/libguestfs.org/libnbd => }/.gitignore (100%)
> rename golang/{src/libguestfs.org/libnbd => }/LICENSE (100%)
> rename golang/{src/libguestfs.org/libnbd => }/README.md (71%)
> rename golang/{src/libguestfs.org/libnbd => }/aio_buffer.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/callbacks.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/go.mod (100%)
> rename golang/{src/libguestfs.org/libnbd => }/handle.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_010_load_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_100_handle_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_110_defaults_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_120_set_non_defaults_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_200_connect_command_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_210_opt_abort_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_220_opt_list_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_230_opt_info_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_240_opt_list_meta_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_300_get_size_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_400_pread_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_405_pread_structured_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_410_pwrite_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_460_block_status_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_500_aio_pread_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_510_aio_pwrite_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_590_aio_copy_test.go
> (100%)
> rename golang/{src/libguestfs.org/libnbd =>
> }/libnbd_600_debug_callback_test.go (100%)
> rename golang/{src/libguestfs.org/libnbd => }/libnbd_610_error_test.go (100%)
>
> diff --git a/generator/generator.ml b/generator/generator.ml
> index 804d9ea..4192815 100644
> --- a/generator/generator.ml
> +++ b/generator/generator.ml
> @@ -57,11 +57,7 @@ let () =
> output_to "ocaml/NBD.ml" OCaml.generate_ocaml_nbd_ml;
> output_to "ocaml/nbd-c.c" OCaml.generate_ocaml_nbd_c;
>
> - output_to "golang/src/libguestfs.org/libnbd/bindings.go"
> - GoLang.generate_golang_bindings_go;
> - output_to "golang/src/libguestfs.org/libnbd/closures.go"
> - GoLang.generate_golang_closures_go;
> - output_to "golang/src/libguestfs.org/libnbd/wrappers.go"
> - GoLang.generate_golang_wrappers_go;
> - output_to "golang/src/libguestfs.org/libnbd/wrappers.h"
> - GoLang.generate_golang_wrappers_h;
> + output_to "golang/bindings.go" GoLang.generate_golang_bindings_go;
> + output_to "golang/closures.go" GoLang.generate_golang_closures_go;
> + output_to "golang/wrappers.go" GoLang.generate_golang_wrappers_go;
> + output_to "golang/wrappers.h" GoLang.generate_golang_wrappers_h;
> diff --git a/golang/src/libguestfs.org/libnbd/.gitignore b/golang/.gitignore
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/.gitignore
> rename to golang/.gitignore
> diff --git a/golang/src/libguestfs.org/libnbd/LICENSE b/golang/LICENSE
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/LICENSE
> rename to golang/LICENSE
> diff --git a/golang/Makefile.am b/golang/Makefile.am
> index 397cae7..1ceef1f 100644
> --- a/golang/Makefile.am
> +++ b/golang/Makefile.am
> @@ -17,59 +17,56 @@
>
> include $(top_srcdir)/subdir-rules.mk
>
> -# http://golang.org/doc/code.html#Organization
> -pkg = libguestfs.org/libnbd
> -
> source_files = \
> - src/$(pkg)/aio_buffer.go \
> - src/$(pkg)/bindings.go \
> - src/$(pkg)/callbacks.go \
> - src/$(pkg)/closures.go \
> - src/$(pkg)/handle.go \
> - src/$(pkg)/wrappers.go \
> - src/$(pkg)/wrappers.h \
> - src/$(pkg)/libnbd_010_load_test.go \
> - src/$(pkg)/libnbd_100_handle_test.go \
> - src/$(pkg)/libnbd_110_defaults_test.go \
> - src/$(pkg)/libnbd_120_set_non_defaults_test.go \
> - src/$(pkg)/libnbd_200_connect_command_test.go \
> - src/$(pkg)/libnbd_210_opt_abort_test.go \
> - src/$(pkg)/libnbd_220_opt_list_test.go \
> - src/$(pkg)/libnbd_230_opt_info_test.go \
> - src/$(pkg)/libnbd_240_opt_list_meta_test.go \
> - src/$(pkg)/libnbd_300_get_size_test.go \
> - src/$(pkg)/libnbd_400_pread_test.go \
> - src/$(pkg)/libnbd_405_pread_structured_test.go \
> - src/$(pkg)/libnbd_410_pwrite_test.go \
> - src/$(pkg)/libnbd_460_block_status_test.go \
> - src/$(pkg)/libnbd_500_aio_pread_test.go \
> - src/$(pkg)/libnbd_510_aio_pwrite_test.go \
> - src/$(pkg)/libnbd_590_aio_copy_test.go \
> - src/$(pkg)/libnbd_600_debug_callback_test.go \
> - src/$(pkg)/libnbd_610_error_test.go \
> + aio_buffer.go \
> + bindings.go \
> + callbacks.go \
> + closures.go \
> + handle.go \
> + wrappers.go \
> + wrappers.h \
> + libnbd_010_load_test.go \
> + libnbd_100_handle_test.go \
> + libnbd_110_defaults_test.go \
> + libnbd_120_set_non_defaults_test.go \
> + libnbd_200_connect_command_test.go \
> + libnbd_210_opt_abort_test.go \
> + libnbd_220_opt_list_test.go \
> + libnbd_230_opt_info_test.go \
> + libnbd_240_opt_list_meta_test.go \
> + libnbd_300_get_size_test.go \
> + libnbd_400_pread_test.go \
> + libnbd_405_pread_structured_test.go \
> + libnbd_410_pwrite_test.go \
> + libnbd_460_block_status_test.go \
> + libnbd_500_aio_pread_test.go \
> + libnbd_510_aio_pwrite_test.go \
> + libnbd_590_aio_copy_test.go \
> + libnbd_600_debug_callback_test.go \
> + libnbd_610_error_test.go \
> $(NULL)
>
> generator_built = \
> - src/$(pkg)/bindings.go \
> - src/$(pkg)/closures.go \
> - src/$(pkg)/wrappers.go \
> - src/$(pkg)/wrappers.h \
> + bindings.go \
> + closures.go \
> + wrappers.go \
> + wrappers.h \
> $(NULL)
>
> EXTRA_DIST = \
> $(generator_built) \
> + .gitignore \
> + LICENSE \
> + README.md \
> + aio_buffer.go \
> + callbacks.go \
> configure/go.mod \
> configure/test.go \
> + go.mod \
> + handle.go \
> libnbd-golang.pod \
> + libnbd_*_test.go \
> run-tests.sh \
> - src/$(pkg)/.gitignore \
> - src/$(pkg)/LICENSE \
> - src/$(pkg)/README.md \
> - src/$(pkg)/aio_buffer.go \
> - src/$(pkg)/callbacks.go \
> - src/$(pkg)/go.mod \
> - src/$(pkg)/handle.go \
> - src/$(pkg)/libnbd_*_test.go \
> $(NULL)
>
> if HAVE_POD
> @@ -87,13 +84,11 @@ endif HAVE_POD
> if HAVE_GOLANG
>
> all-local: $(source_files)
> - cd src/$(pkg) && \
> $(abs_top_builddir)/run $(GOLANG) build
>
> TESTS_ENVIRONMENT = \
> LIBNBD_DEBUG=1 \
> $(MALLOC_CHECKS) \
> - pkg=$(pkg) \
> abs_top_srcdir=$(abs_top_srcdir) \
> $(NULL)
> LOG_COMPILER = $(top_builddir)/run
> @@ -101,4 +96,4 @@ TESTS = run-tests.sh
>
> endif
>
> -CLEANFILES += src/$(pkg)/*~
> +CLEANFILES += *~
> diff --git a/golang/src/libguestfs.org/libnbd/README.md b/golang/README.md
> similarity index 71%
> rename from golang/src/libguestfs.org/libnbd/README.md
> rename to golang/README.md
> index be32e6a..aeadcf6 100644
> --- a/golang/src/libguestfs.org/libnbd/README.md
> +++ b/golang/README.md
> @@ -18,18 +18,21 @@ extract it from the tarball.
>
> wget
> https://download.libguestfs.org/libnbd/1.10-stable/libnbd-1.10.1.tar.gz
>
> -2. Extract the go binding directory
> +2. Extract the sources from the golang directory
>
> - tar xvf libnbd-1.10.1.tar.gz \
> - --directory pkg \
> - --strip 3 \
> + mkdir pkg/libnbd
> +
> + tar xvf libnbd-1.11.1.tar.gz \
> + --directory pkg/libnbd \
> + --strip 2 \
> --exclude "*_test.go" \
> - --exclude ".gitignore" \
> - libnbd-1.10.1/golang/src/libguestfs.org/libnbd
> + --exclude "examples" \
> + --exclude "configure" \
> + libnbd-1.11.1/golang/{go.mod,README.md,LICENSE,*.go,*.h}
>
> 3. Edit your go mode file to use the local copy
>
> - go mod edit -replace
> libguestfs.org/libnbd=./pkg/libguestfs.org/libnbd
> + go mod edit -replace libguestfs.org/libnbd=./pkg/libnbd
>
> 4. Install the libnbd development package
>
> diff --git a/golang/src/libguestfs.org/libnbd/aio_buffer.go
> b/golang/aio_buffer.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/aio_buffer.go
> rename to golang/aio_buffer.go
> diff --git a/golang/src/libguestfs.org/libnbd/callbacks.go
> b/golang/callbacks.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/callbacks.go
> rename to golang/callbacks.go
> diff --git a/golang/examples/get_size/go.mod b/golang/examples/get_size/go.mod
> index 077ff31..3559751 100644
> --- a/golang/examples/get_size/go.mod
> +++ b/golang/examples/get_size/go.mod
> @@ -1,4 +1,4 @@
> module main
>
> -replace libguestfs.org/libnbd => ../../src/libguestfs.org/libnbd
> +replace libguestfs.org/libnbd => ../../
> require libguestfs.org/libnbd v1.0.0
> diff --git a/golang/examples/read_first_sector/go.mod
> b/golang/examples/read_first_sector/go.mod
> index 077ff31..3559751 100644
> --- a/golang/examples/read_first_sector/go.mod
> +++ b/golang/examples/read_first_sector/go.mod
> @@ -1,4 +1,4 @@
> module main
>
> -replace libguestfs.org/libnbd => ../../src/libguestfs.org/libnbd
> +replace libguestfs.org/libnbd => ../../
> require libguestfs.org/libnbd v1.0.0
> diff --git a/golang/src/libguestfs.org/libnbd/go.mod b/golang/go.mod
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/go.mod
> rename to golang/go.mod
> diff --git a/golang/src/libguestfs.org/libnbd/handle.go b/golang/handle.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/handle.go
> rename to golang/handle.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_010_load_test.go
> b/golang/libnbd_010_load_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_010_load_test.go
> rename to golang/libnbd_010_load_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_100_handle_test.go
> b/golang/libnbd_100_handle_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_100_handle_test.go
> rename to golang/libnbd_100_handle_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go
> b/golang/libnbd_110_defaults_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_110_defaults_test.go
> rename to golang/libnbd_110_defaults_test.go
> diff --git
> a/golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go
> b/golang/libnbd_120_set_non_defaults_test.go
> similarity index 100%
> rename from
> golang/src/libguestfs.org/libnbd/libnbd_120_set_non_defaults_test.go
> rename to golang/libnbd_120_set_non_defaults_test.go
> diff --git
> a/golang/src/libguestfs.org/libnbd/libnbd_200_connect_command_test.go
> b/golang/libnbd_200_connect_command_test.go
> similarity index 100%
> rename from
> golang/src/libguestfs.org/libnbd/libnbd_200_connect_command_test.go
> rename to golang/libnbd_200_connect_command_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_210_opt_abort_test.go
> b/golang/libnbd_210_opt_abort_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_210_opt_abort_test.go
> rename to golang/libnbd_210_opt_abort_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_220_opt_list_test.go
> b/golang/libnbd_220_opt_list_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_220_opt_list_test.go
> rename to golang/libnbd_220_opt_list_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_230_opt_info_test.go
> b/golang/libnbd_230_opt_info_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_230_opt_info_test.go
> rename to golang/libnbd_230_opt_info_test.go
> diff --git
> a/golang/src/libguestfs.org/libnbd/libnbd_240_opt_list_meta_test.go
> b/golang/libnbd_240_opt_list_meta_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_240_opt_list_meta_test.go
> rename to golang/libnbd_240_opt_list_meta_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_300_get_size_test.go
> b/golang/libnbd_300_get_size_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_300_get_size_test.go
> rename to golang/libnbd_300_get_size_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_400_pread_test.go
> b/golang/libnbd_400_pread_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_400_pread_test.go
> rename to golang/libnbd_400_pread_test.go
> diff --git
> a/golang/src/libguestfs.org/libnbd/libnbd_405_pread_structured_test.go
> b/golang/libnbd_405_pread_structured_test.go
> similarity index 100%
> rename from
> golang/src/libguestfs.org/libnbd/libnbd_405_pread_structured_test.go
> rename to golang/libnbd_405_pread_structured_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_410_pwrite_test.go
> b/golang/libnbd_410_pwrite_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_410_pwrite_test.go
> rename to golang/libnbd_410_pwrite_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_460_block_status_test.go
> b/golang/libnbd_460_block_status_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_460_block_status_test.go
> rename to golang/libnbd_460_block_status_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_500_aio_pread_test.go
> b/golang/libnbd_500_aio_pread_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_500_aio_pread_test.go
> rename to golang/libnbd_500_aio_pread_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_510_aio_pwrite_test.go
> b/golang/libnbd_510_aio_pwrite_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_510_aio_pwrite_test.go
> rename to golang/libnbd_510_aio_pwrite_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_590_aio_copy_test.go
> b/golang/libnbd_590_aio_copy_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_590_aio_copy_test.go
> rename to golang/libnbd_590_aio_copy_test.go
> diff --git
> a/golang/src/libguestfs.org/libnbd/libnbd_600_debug_callback_test.go
> b/golang/libnbd_600_debug_callback_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_600_debug_callback_test.go
> rename to golang/libnbd_600_debug_callback_test.go
> diff --git a/golang/src/libguestfs.org/libnbd/libnbd_610_error_test.go
> b/golang/libnbd_610_error_test.go
> similarity index 100%
> rename from golang/src/libguestfs.org/libnbd/libnbd_610_error_test.go
> rename to golang/libnbd_610_error_test.go
> diff --git a/golang/run-tests.sh b/golang/run-tests.sh
> index 6857047..f83fa18 100755
> --- a/golang/run-tests.sh
> +++ b/golang/run-tests.sh
> @@ -23,8 +23,6 @@ set -x
>
> requires nbdkit --version
>
> -cd src/$pkg
> -
> # The -count=1 parameter is the "idiomatic way to bypass test caching".
> # https://golang.org/doc/go1.10#test
> # The -v option enables verbose output.
> --
> 2.31.1
>
_______________________________________________
Libguestfs mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/libguestfs