diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e45da98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/gpg-117E8C168EFE3A7F.key +SOURCES/weldr-client-35.3.tar.gz diff --git a/.weldr-client.metadata b/.weldr-client.metadata new file mode 100644 index 0000000..2d077e8 --- /dev/null +++ b/.weldr-client.metadata @@ -0,0 +1,2 @@ +9a95f2c777b4fca2c9c5705ed330cafcf1b09555 SOURCES/gpg-117E8C168EFE3A7F.key +f95b17a5cd86a460a24159f11fbee39c93f07e7b SOURCES/weldr-client-35.3.tar.gz diff --git a/SOURCES/weldr-client-35.3.tar.gz.asc b/SOURCES/weldr-client-35.3.tar.gz.asc new file mode 100644 index 0000000..9ab0f1b --- /dev/null +++ b/SOURCES/weldr-client-35.3.tar.gz.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- + +iQEzBAABCgAdFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmFbaz0ACgkQEX6MFo7+ +On+dJggAnqHXnES3vnUdQl8mvQspCJOLab4WPnl+DZnq4UsYEjM3IQo56uyU4UQt +eUMQ+N7/YGG5B5Uo2vZdujCs0eoRpEKa1vVEvD6+EE4KWlOQh9bQmiECTb7qClEv +1PP8XWrw16p4etDwObj5joSCheoUw8A9t9CS+dQ52RZAnvTMF+sbYlON51GguvQe +7HlbKf/xPMzWqBVXXjXt1TssAOReGHy6wCmY5ElhnIB5EuMGHi8VqCmAowBZk2Vh +chS+i60ebZm7XfbHwCgR406VFrpLEfeBn/jUFxND0faxiK571RJ7/43L7+Ffqnkn +azi+sdGDmHQ9KTXyL3OGOhZ59ZPy1Q== +=jQtK +-----END PGP SIGNATURE----- diff --git a/SPECS/weldr-client.spec b/SPECS/weldr-client.spec new file mode 100644 index 0000000..166beba --- /dev/null +++ b/SPECS/weldr-client.spec @@ -0,0 +1,174 @@ +# Pass --with tests to rpmbuild to build composer-cli-tests +%bcond_with tests +# Pass --without signed to skip gpg signed tar.gz (DO NOT DO THAT IN PRODUCTION) +%bcond_without signed + +%global goipath github.com/osbuild/weldr-client/v2 + +Name: weldr-client +Version: 35.3 +Release: 2%{?dist} +# Upstream license specification: Apache-2.0 +License: ASL 2.0 +Summary: Command line utility to control osbuild-composer +Url: %{gourl} +Source0: https://github.com/osbuild/weldr-client/releases/download/v%{version}/%{name}-%{version}.tar.gz +%if %{with signed} +Source1: https://github.com/osbuild/weldr-client/releases/download/v%{version}/%{name}-%{version}.tar.gz.asc +Source2: https://keys.openpgp.org/vks/v1/by-fingerprint/117E8C168EFE3A7F#/gpg-117E8C168EFE3A7F.key +%endif + +Obsoletes: composer-cli < 35.0 +Provides: composer-cli = %{version}-%{release} + +%gometa + +BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} +%if 0%{?fedora} +BuildRequires: golang(github.com/BurntSushi/toml) +BuildRequires: golang(github.com/spf13/cobra) +# Required for tests and %check +BuildRequires: golang(github.com/stretchr/testify/assert) +BuildRequires: golang(github.com/stretchr/testify/require) +%endif + +BuildRequires: git-core +BuildRequires: make +BuildRequires: gnupg2 + + +%description +Command line utility to control osbuild-composer + +%prep +%if %{with signed} +%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' +%endif +%if 0%{?rhel} +%forgeautosetup -p1 +%else +%goprep +%endif + +%build +export LDFLAGS="-X %{goipath}/cmd/composer-cli/root.Version=%{version} " + +%if 0%{?rhel} +GO_BUILD_PATH=$PWD/_build +install -m 0755 -vd $(dirname $GO_BUILD_PATH/src/%{goipath}) +ln -fs $PWD $GO_BUILD_PATH/src/%{goipath} +cd $GO_BUILD_PATH/src/%{goipath} +install -m 0755 -vd _bin +export PATH=$PWD/_bin${PATH:+:$PATH} +export GOPATH=$GO_BUILD_PATH:%{gopath} +export GOFLAGS=-mod=vendor +%gobuild -o composer-cli %{goipath}/cmd/composer-cli +%else +export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}" +export GO111MODULE=off +make GOBUILDFLAGS="%{gobuildflags}" build +%endif + + +## TODO +##make man + +%if %{with tests} || 0%{?rhel} +export BUILDTAGS="integration" + +# Build test binaries with `go test -c`, so that they can take advantage of +# golang's testing package. The RHEL golang rpm macros don't support building them +# directly. Thus, do it manually, taking care to also include a build id. +# +# On Fedora, also turn off go modules and set the path to the one into which +# the golang-* packages install source code. +%if 0%{?rhel} +export LDFLAGS="${LDFLAGS:-} -linkmode=external -compressdwarf=false -B 0x$(od -N 20 -An -tx1 -w100 /dev/urandom | tr -d ' ')" +go test -c -tags=integration -buildmode pie -compiler gc -ldflags="${LDFLAGS}" -o composer-cli-tests %{goipath}/weldr +%else +make GOBUILDFLAGS="%{gobuildflags}" integration +%endif +%endif + +%install +make DESTDIR=%{buildroot} install + +%if %{with tests} || 0%{?rhel} +make DESTDIR=%{buildroot} install-tests +%endif + +%check +%if 0%{?fedora} +export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}" +export GO111MODULE=off +%endif + +# Run the unit tests +export LDFLAGS="-X %{goipath}/cmd/composer-cli/root.Version=%{version} " +make test + + +%files +%license LICENSE +%doc examples HACKING.md README.md +%{_bindir}/composer-cli +%dir %{_sysconfdir}/bash_completion.d +%{_sysconfdir}/bash_completion.d/composer-cli +%{_mandir}/man1/composer-cli* + +%if %{with tests} || 0%{?rhel} +%package tests +Summary: Integration tests for composer-cli + +%description tests +Integration tests to be run on a pristine-dedicated system to test the +composer-cli package. + +%files tests +%license LICENSE +%{_libexecdir}/tests/composer-cli/ +%endif + + +%changelog +* Mon Oct 04 2021 Brian C. Lane - 35.3-1 +- New release: 35.3 (bcl) +- spec: Adjust build methods for RHEL 8 (bcl) +- github: Run build-in-podman to test building package (bcl) +- spec: Use v2 module (bcl) +- Makefile: Use v2 module (bcl) +- Makefile: Add a build-in-podman target (bcl) +- tests: Add JSON and error result testing to status (bcl) +- tests: Add JSON and error result testing to sources (bcl) +- tests: Add JSON and error result testing to projects (bcl) +- tests: Add JSON and error result testing to modules (bcl) +- tests: Add JSON and error result testing to distros (bcl) +- tests: Add JSON and error result testing to compose (bcl) +- tests: Add JSON and error result testing to blueprints (bcl) +- test: Fix test client setup and output capture code (bcl) +- test: Close output capture in printwrap_test (bcl) +- test: reset the root flags on every ExecuteTest call (bcl) +- status: Use ExecutionErrors for API errors (bcl) +- sources: Use ExecutionErrors for API errors (bcl) +- projects: Use ExecutionErrors for API errors (bcl) +- modules: Use ExecutionErrors for API errors (bcl) +- distros: Use ExecutionErrors for API errors (bcl) +- compose: Use ExecutionErrors for API errors (bcl) +- blueprints: Use ExecutionErrors for API errors (bcl) +- composer-cli: Turn off normal command Stdout when --json is used (bcl) +- weldr: Fix Stringer interface on API messages (bcl) +- weldr: Clean up error message return code (bcl) +- weldr: Move Unmarshal error to error position (bcl) +- root: Add a helper function to print a list of errors (bcl) +- Use GetFilePath for ComposeImage (bcl) +- Use GetFilePath for ComposeResults (bcl) +- Use GetFilePath for ComposerMetadata (bcl) +- Use GetFilePath for ComposeLogs (bcl) +- weldr: Add GetFilePath to download a file to a path (bcl) +- Creating v2 module for breaking API changes (bcl) +- Makefile: Add update-mods target (bcl) +- vendor: Update the modules and vendor directory (bcl) +- Bump go version to 1.15 (bcl) +- Limit dependabot to 1 PR (bcl) +- Enable Dependabot service (atodorov) +- tests: Fix integration tests (bcl)