diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..33232ab
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+SOURCES/gpg-117E8C168EFE3A7F.key
+SOURCES/weldr-client-35.2.tar.gz
diff --git a/.weldr-client.metadata b/.weldr-client.metadata
new file mode 100644
index 0000000..72b268e
--- /dev/null
+++ b/.weldr-client.metadata
@@ -0,0 +1,2 @@
+9a95f2c777b4fca2c9c5705ed330cafcf1b09555 SOURCES/gpg-117E8C168EFE3A7F.key
+fd9aaab62c5ee5c44704b815b8690fbb5d2db199 SOURCES/weldr-client-35.2.tar.gz
diff --git a/SOURCES/0001-tests-Fix-integration-tests.patch b/SOURCES/0001-tests-Fix-integration-tests.patch
new file mode 100644
index 0000000..7d838d2
--- /dev/null
+++ b/SOURCES/0001-tests-Fix-integration-tests.patch
@@ -0,0 +1,74 @@
+From edeafc1b677eb0f362fdb60fbb624ad8e1632c21 Mon Sep 17 00:00:00 2001
+From: "Brian C. Lane" <bcl@redhat.com>
+Date: Wed, 25 Aug 2021 09:00:48 -0700
+Subject: [PATCH] tests: Fix integration tests
+
+osbuild-composer v31 returns a more detailed error for
+TestStartComposeBadType, so that has been changed.
+
+The number of image types returned depends on the distribution being
+used, so change to looking for >= 6 of them.
+
+The source type depends on the first repo in the list, so it could be
+any of the supported types. They all start with "yum-" so change the
+test to look for that instead.
+---
+ weldr/compose_test.go | 6 +++---
+ weldr/sources_test.go | 3 ++-
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/weldr/compose_test.go b/weldr/compose_test.go
+index 7479edf..fda6953 100644
+--- a/weldr/compose_test.go
++++ b/weldr/compose_test.go
+@@ -30,7 +30,7 @@ func TestGetComposeTypes(t *testing.T) {
+ 	require.Nil(t, err)
+ 	require.Nil(t, r)
+ 	require.NotNil(t, types)
+-	assert.Equal(t, 6, len(types))
++	assert.GreaterOrEqual(t, len(types), 6)
+ 	assert.Contains(t, types, "openstack")
+ }
+ 
+@@ -44,7 +44,7 @@ func TestGetComposeTypesDistro(t *testing.T) {
+ 	require.Nil(t, err)
+ 	require.Nil(t, r)
+ 	require.NotNil(t, types)
+-	assert.Equal(t, 6, len(types))
++	assert.GreaterOrEqual(t, len(types), 6)
+ 	assert.Contains(t, types, "openstack")
+ }
+ 
+@@ -141,7 +141,7 @@ func TestStartComposeBadType(t *testing.T) {
+ 	require.Nil(t, err)
+ 	require.NotNil(t, r)
+ 	assert.False(t, r.Status)
+-	assert.Equal(t, APIErrorMsg{"UnknownComposeType", "Unknown compose type for architecture: punchcard"}, r.Errors[0])
++	assert.Equal(t, APIErrorMsg{"ComposeError", "Failed to get compose type \"punchcard\": invalid image type: punchcard"}, r.Errors[0])
+ }
+ 
+ func TestStartComposeBadDepsolve(t *testing.T) {
+diff --git a/weldr/sources_test.go b/weldr/sources_test.go
+index 77eb357..18b00f1 100644
+--- a/weldr/sources_test.go
++++ b/weldr/sources_test.go
+@@ -7,6 +7,7 @@
+ package weldr
+ 
+ import (
++	"strings"
+ 	"testing"
+ 
+ 	"github.com/stretchr/testify/assert"
+@@ -40,7 +41,7 @@ func TestGetSourcesJSON(t *testing.T) {
+ 	assert.Equal(t, names[0], id)
+ 	sourceType, ok := sources[names[0]].(map[string]interface{})["type"].(string)
+ 	require.True(t, ok)
+-	assert.Equal(t, "yum-metalink", sourceType)
++	assert.True(t, strings.HasPrefix(sourceType, "yum-"))
+ }
+ 
+ func TestGetSourcesJSONError(t *testing.T) {
+-- 
+2.31.1
+
diff --git a/SOURCES/weldr-client-35.2.tar.gz.asc b/SOURCES/weldr-client-35.2.tar.gz.asc
new file mode 100644
index 0000000..63971f2
--- /dev/null
+++ b/SOURCES/weldr-client-35.2.tar.gz.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQEzBAABCgAdFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmEj7bEACgkQEX6MFo7+
+On92OQf/R5g0eRQd0eiDY7jiq+5j1WIVK1OaVTFduo8RhqaK08gfwW8Z51wi3bu4
+yyO6MriYN230x5ZBcEgbnVmjDQIl2HLqTEFpGAyNEuh/bHVNNeNT6dAkcexoUb8N
+Rwe6KWm/0vwxkD2X7WI+WlCLp0cNJ+foLbkZ1sMeNaHekuJCRAPDQkdEN/nwFn5M
+ZPgH1bSS2XBkg8JbNwEFfWcjGlPfmPHJMv1+1i/W0EAp7/uYbPz+FEX0W/aXQ7fI
+l/KxFq8Tt+Zk2qIw+XN9dzV2E2ngayvsM3Vm5igTl+HMRIe5Ro3RuFHp3HbFmZ8M
+xqXZS0aSbMBqv4TQEtsnnXku9SusVQ==
+=8+eY
+-----END PGP SIGNATURE-----
diff --git a/SPECS/weldr-client.spec b/SPECS/weldr-client.spec
new file mode 100644
index 0000000..733870d
--- /dev/null
+++ b/SPECS/weldr-client.spec
@@ -0,0 +1,187 @@
+# 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
+
+Name:      weldr-client
+Version:   35.2
+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
+
+Patch0001: 0001-tests-Fix-integration-tests.patch
+
+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
+%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
+%else
+export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}"
+export GO111MODULE=off
+%endif
+
+export LDFLAGS="-X github.com/osbuild/weldr-client/cmd/composer-cli/root.Version=%{version} "
+make GOBUILDFLAGS="%{gobuildflags}" build
+
+## TODO
+##make man
+
+%if %{with tests} || 0%{?rhel}
+# Build test binaries with `go test -c`, so that they can take advantage of
+# golang's testing package. The 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%{?fedora}
+export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}"
+export GO111MODULE=off
+%endif
+
+export LDFLAGS="-X github.com/osbuild/weldr-client/cmd/composer-cli/root.Version=%{version} "
+export BUILDTAGS="integration"
+make GOBUILDFLAGS="%{gobuildflags}" integration
+%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
+
+export LDFLAGS="-X github.com/osbuild/weldr-client/cmd/composer-cli/root.Version=%{version} "
+make GOBUILDFLAGS="%{gotestflags}" 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
+* Wed Aug 25 2021 Brian C. Lane <bcl@redhat.com> - 35.2-2
+- gating: Add gating tests
+  Resolves: rhbz#1996788
+- gating: Workaround to install latest packages
+- Fix integration tests
+
+* Mon Aug 23 2021 Brian C. Lane <bcl@redhat.com> - 35.2-1
+- New release: 35.2 (bcl)
+  Resolves: rhbz#1996762
+- weldr: Use assert.Contains instead of IsStringInSlice (bcl)
+- Add missing projects depsolve command (bcl)
+- Add support for projects info --distro=DISTRO-NAME (bcl)
+- Add support for projects list --distro=DISTRO-NAME (bcl)
+- Add support for modules info --distro=DISTRO-NAME (bcl)
+- weldr: Add distros to testState (bcl)
+- Add support for modules list --distro=DISTRO-NAME (bcl)
+- weldr: Add AppendQuery helper function (bcl)
+- Add support for compose types --distro=DISTRO-NAME (bcl)
+- composer-cli: Add distros list command (bcl)
+- weldr: Add ListDistros function and tests (bcl)
+- Makefile: Add scratch-srpm and scratch-rpm targets (bcl)
+- Print filename for compose results (bcl)
+- ExcuteTests - return the correct error variables in case of errors (atodorov)
+- The rpm package should obsolete composer-cli from lorax (bcl)
+- tests: Enable CodeCov.io (atodorov)
+- actions: Install lint using GOPATH (bcl)
+
+* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 35.1-4
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Tue Jun 22 2021 Mohan Boddu <mboddu@redhat.com> - 35.1-3
+- Rebuilt for RHEL 9 BETA for openssl 3.0
+  Related: rhbz#1971065
+
+* Thu Apr 22 2021 Brian C. Lane <bcl@redhat.com> - 35.1-2
+- Obsolete composer-cli < 35.0 instead of 34.0
+  Patch until next upstream release
+
+* Mon Apr 12 2021 Brian C. Lane <bcl@redhat.com> - 35.1-1
+- New release: 35.1 (bcl)
+- spec: Change release back to 1 (bcl)
+- spec: Move testify BuildRequires into fedora block (bcl)
+- vendor: Add vendored dependencies for RHEL (bcl)
+- tools: Add prepare-source.sh vendoring helper script (bcl)
+- Makefile: skip vendor directory for check target (bcl)
+- spec: Bump release to 2 (bcl)
+- spec: Fix BuildRequires for tests (bcl)
+- Makefile: Remove executable from bash completion (bcl)
+- Makefile: Only use GOBUILDFLAGS (bcl)
+- spec: Bump release to 2 (bcl)
+- spec: Add doc files (bcl)
+- spec: Add gpg signature verification (bcl)
+- spec: Use git-core instead of git (bcl)
+- spec: Set License to Apache 2.0 (bcl)
+- spec: Update Source urls with new project location (bcl)