Compare commits

..

7 commits

Author SHA1 Message Date
7b1f8fc8be
gomod: fix the project name
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
2023-02-16 14:44:50 +00:00
Matthew Arnold
8b11b56685 Update latest nbdkit bindings. 2021-04-05 14:19:09 +00:00
Matthew Arnold
8112e93376
Try to not fail job on empty directories. 2021-01-18 14:22:38 -05:00
Matthew Arnold
fd424f6985
Update README.md 2020-11-23 20:23:28 -05:00
Matthew Arnold
710be3402d Update latest nbdkit bindings. 2020-09-28 20:01:35 +00:00
Matthew Arnold
9d15554eb8
Add automatic update workflow. 2020-09-28 15:59:35 -04:00
Matthew Arnold
79817a4a3f Add license and README. 2020-09-28 14:43:50 -04:00
5 changed files with 150 additions and 2 deletions

108
.github/workflows/update.yml vendored Normal file
View file

@ -0,0 +1,108 @@
name: Update
on:
schedule:
- cron: '0 14 * * 1'
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install xmllint
run: |
sudo apt-get update
sudo apt-get install libxml2-utils
- name: Update nbdkit bindings from libguestfs.org releases
run: |
#!/usr/bin/env bash
RELEASES=$(curl --silent https://download.libguestfs.org/nbdkit/ | xmllint --html --noblanks --xpath "/html/body/table/tr[td/img/@alt = '[DIR]']/td[a/.]/a/text()" -)
git config --global user.email "marnold@redhat.com"
git config --global user.name "Matthew Arnold"
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git pull --all --set-upstream
for release in ${RELEASES}
do
release=${release%?}
TARBALLS=$(curl --silent https://download.libguestfs.org/nbdkit/$release/ | xmllint --html --noblanks --xpath "/html/body/table/tr/td[contains(a/@href, '.tar.gz') and not(contains(a/@href, '.tar.gz.sig'))]/a/@href" -) || true
for tarball in ${TARBALLS}
do
IFS=\"$IFS read href tarball suffix <<< $tarball # Intentionally overwrite tarball
IFS="-.$IFS" read nbdkit major minor build suffix <<< $tarball
if (($major \* 100000000 + $minor \* 10000 + $build \< 100190009))
then # Go bindings added in 1.19.9
echo Ignoring release older than 1.19.9: $release/$tarball
echo
continue
fi
latestrelease=$release
version=$major.$minor.$build
tag=v$major.$minor.$build
echo Branch: $release Tar: $tarball Tag: $tag
if git rev-parse --verify $tag
then
echo Already present in repository: $tag
else
if ! (git rev-parse --verify $release || git rev-parse --verify origin/$release)
then
echo Creating new branch: $release
root=$(git rev-list --max-parents=0 HEAD)
git checkout $root
git checkout -b $release
else
echo Checking out existing branch: $release
git checkout $release
fi
echo Updating $release branch with new version $version
curl --silent https://download.libguestfs.org/nbdkit/$release/$tarball | tar -xzv --strip-components=6 nbdkit-$version/plugins/golang/src/libguestfs.org/nbdkit/
rm -f .gitignore
git add --all
git diff-index --quiet HEAD || git commit -m "Import nbdkit-$version"
git tag $tag
fi
if git rev-parse --verify $tag-cdi
then
echo Already present in repository: $tag-cdi
else
if ! (git rev-parse --verify $release-cdi || git rev-parse --verify origin/$release-cdi)
then
echo Creating new branch: $release-cdi
root=$(git rev-list --max-parents=0 HEAD)
git checkout $root
git checkout -b $release-cdi
else
echo Checking out existing branch: $release-cdi
git checkout $release-cdi
fi
git checkout $tag ./
find . -type f -name '*.go' -exec sed -i 's/#cgo pkg-config: nbdkit/#cgo LDFLAGS: -lnbdkit/g' {} +
git add --all
git diff-index --quiet HEAD || git commit -m "Tweak nbdkit-$version for CDI build"
git tag $tag-cdi
fi
echo
echo
done
done
latest=$(tail -n 1 <<< $latestrelease)
git checkout main
if git rev-parse --verify $latestrelease
then
echo Copy newest bindings from local $latest
git checkout $latest ./
elif git rev-parse --verify origin/$latestrelease
then
echo Copy newest bindings from remote $latest
git checkout origin/$latest ./
else
echo Latest branch not present in local or remote? Check libguestfs.org for unpopulated directory.
fi
git diff-index --quiet HEAD || git commit -m "Update latest nbdkit bindings."
git push --all -u
git push --tags

30
LICENSE Normal file
View file

@ -0,0 +1,30 @@
nbdkit
Copyright (C) 2013-2020 Red Hat Inc.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Red Hat nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

6
README.md Normal file
View file

@ -0,0 +1,6 @@
# go-nbdkit
Importable Golang bindings for nbdkit, extracted from official libguestfs.org releases.
This repository includes all the auto-generated golang files from the official libguestfs.org releases of nbdkit, so that the bindings can be imported with `go.mod` or `go get`. This is intended as a temporary measure to allow [CDI](https://github.com/kubevirt/containerized-data-importer) to make use of nbdkit plugins for functional tests.
Requires a minimum of nbdkit version 1.20.

4
go.mod Normal file
View file

@ -0,0 +1,4 @@
module git.batts.cloud/vbatts/go-nbdkit
// First version of golang with working module support.
go 1.13

View file

@ -529,7 +529,7 @@ func PluginInitialize(name string, impl PluginInterface) unsafe.Pointer {
// Set up the hidden plugin fields as for C. // Set up the hidden plugin fields as for C.
struct_size := C.ulong(unsafe.Sizeof(plugin)) struct_size := C.ulong(unsafe.Sizeof(plugin))
plugin._struct_size = struct_size plugin._struct_size = C.uint64_t(struct_size)
plugin._api_version = C.NBDKIT_API_VERSION plugin._api_version = C.NBDKIT_API_VERSION
plugin._thread_model = C.NBDKIT_THREAD_MODEL_PARALLEL plugin._thread_model = C.NBDKIT_THREAD_MODEL_PARALLEL
@ -563,7 +563,7 @@ func PluginInitialize(name string, impl PluginInterface) unsafe.Pointer {
// Return a newly malloced copy of the struct. This must be // Return a newly malloced copy of the struct. This must be
// globally available to the C code in the server, so it is // globally available to the C code in the server, so it is
// never freed. // never freed.
p := (*C.struct_nbdkit_plugin)(C.malloc(struct_size)) p := (*C.struct_nbdkit_plugin)(C.malloc(C.size_t(struct_size)))
*p = plugin *p = plugin
return unsafe.Pointer(p) return unsafe.Pointer(p)
} }