# Do not build with tests by default # Pass --with tests to rpmbuild to override %bcond_with tests # When --with relax_requires is specified osbuild-composer-tests # will require osbuild-composer only by name, excluding version/release # This is used internally during nightly pipeline testing! %bcond_with relax_requires # The minimum required osbuild version %global min_osbuild_version 120 %global goipath github.com/osbuild/osbuild-composer Version: 115 %gometa %global common_description %{expand: A service for building customized OS artifacts, such as VM images and OSTree commits, that uses osbuild under the hood. Besides building images for local usage, it can also upload images directly to cloud. It is compatible with composer-cli and cockpit-composer clients. } Name: osbuild-composer Release: 1.20240813204154793307.pr4154.65.g8d1cea168%{?dist} Summary: An image building service based on osbuild # osbuild-composer doesn't have support for building i686 and armv7hl images ExcludeArch: i686 armv7hl # Upstream license specification: Apache-2.0 License: Apache-2.0 URL: %{gourl} Source0: osbuild-composer-115.tar.gz BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} BuildRequires: systemd BuildRequires: krb5-devel BuildRequires: python3-docutils BuildRequires: make # Build requirements of 'theproglottis/gpgme' package BuildRequires: gpgme-devel BuildRequires: libassuan-devel # Build requirements of 'github.com/containers/storage' package BuildRequires: device-mapper-devel %if 0%{?fedora} BuildRequires: systemd-rpm-macros BuildRequires: git # Build requirements of 'github.com/containers/storage' package BuildRequires: btrfs-progs-devel # DO NOT REMOVE the BUNDLE_START and BUNDLE_END markers as they are used by 'tools/rpm_spec_add_provides_bundle.sh' to generate the Provides: bundled list # BUNDLE_START Provides: bundled(golang(cloud.google.com/go)) = 0.115.0 Provides: bundled(golang(cloud.google.com/go/auth)) = 0.8.0 Provides: bundled(golang(cloud.google.com/go/auth/oauth2adapt)) = 0.2.3 Provides: bundled(golang(cloud.google.com/go/compute)) = 1.27.5 Provides: bundled(golang(cloud.google.com/go/compute/metadata)) = 0.5.0 Provides: bundled(golang(cloud.google.com/go/iam)) = 1.1.12 Provides: bundled(golang(cloud.google.com/go/storage)) = 1.43.0 Provides: bundled(golang(dario.cat/mergo)) = 1.0.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go)) = 68.0.0+incompatible Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/azcore)) = 1.13.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/azidentity)) = 1.7.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/internal)) = 1.10.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5)) = 5.7.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources)) = 1.2.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage)) = 1.6.0 Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob)) = 1.4.0 Provides: bundled(golang(github.com/Azure/go-autorest)) = 14.2.0+incompatible Provides: bundled(golang(github.com/Azure/go-autorest/autorest)) = 0.11.29 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/adal)) = 0.9.22 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/azure/auth)) = 0.5.13 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/azure/cli)) = 0.4.6 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/date)) = 0.3.0 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/to)) = 0.4.0 Provides: bundled(golang(github.com/Azure/go-autorest/autorest/validation)) = 0.3.1 Provides: bundled(golang(github.com/Azure/go-autorest/logger)) = 0.2.1 Provides: bundled(golang(github.com/Azure/go-autorest/tracing)) = 0.6.0 Provides: bundled(golang(github.com/AzureAD/microsoft-authentication-library-for-go)) = 1.2.2 Provides: bundled(golang(github.com/BurntSushi/toml)) = 1.4.0 Provides: bundled(golang(github.com/Microsoft/go-winio)) = 0.6.2 Provides: bundled(golang(github.com/Microsoft/hcsshim)) = 0.12.5 Provides: bundled(golang(github.com/VividCortex/ewma)) = 1.2.0 Provides: bundled(golang(github.com/acarl005/stripansi)) = 5a71ef0 Provides: bundled(golang(github.com/asaskevich/govalidator)) = a9d515a Provides: bundled(golang(github.com/aws/aws-sdk-go)) = 1.55.5 Provides: bundled(golang(github.com/aymerick/douceur)) = 0.2.0 Provides: bundled(golang(github.com/beorn7/perks)) = 1.0.1 Provides: bundled(golang(github.com/cenkalti/backoff/v4)) = 4.2.1 Provides: bundled(golang(github.com/cespare/xxhash/v2)) = 2.2.0 Provides: bundled(golang(github.com/containerd/cgroups/v3)) = 3.0.3 Provides: bundled(golang(github.com/containerd/errdefs)) = 0.1.0 Provides: bundled(golang(github.com/containerd/stargz-snapshotter/estargz)) = 0.15.1 Provides: bundled(golang(github.com/containers/common)) = 0.60.0 Provides: bundled(golang(github.com/containers/image/v5)) = 5.32.0 Provides: bundled(golang(github.com/containers/libtrust)) = c1716e8 Provides: bundled(golang(github.com/containers/ocicrypt)) = 1.2.0 Provides: bundled(golang(github.com/containers/storage)) = 1.55.0 Provides: bundled(golang(github.com/coreos/go-semver)) = 0.3.1 Provides: bundled(golang(github.com/coreos/go-systemd)) = d3cd4ed Provides: bundled(golang(github.com/cyberphone/json-canonicalization)) = ba74d44 Provides: bundled(golang(github.com/cyphar/filepath-securejoin)) = 0.3.1 Provides: bundled(golang(github.com/davecgh/go-spew)) = d8f796a Provides: bundled(golang(github.com/deepmap/oapi-codegen)) = 1.8.2 Provides: bundled(golang(github.com/dimchansky/utfbom)) = 1.1.1 Provides: bundled(golang(github.com/distribution/reference)) = 0.6.0 Provides: bundled(golang(github.com/docker/distribution)) = 2.8.3+incompatible Provides: bundled(golang(github.com/docker/docker)) = 27.1.1+incompatible Provides: bundled(golang(github.com/docker/docker-credential-helpers)) = 0.8.2 Provides: bundled(golang(github.com/docker/go-connections)) = 0.5.0 Provides: bundled(golang(github.com/docker/go-units)) = 0.5.0 Provides: bundled(golang(github.com/dougm/pretty)) = 2ee9d74 Provides: bundled(golang(github.com/felixge/httpsnoop)) = 1.0.4 Provides: bundled(golang(github.com/getkin/kin-openapi)) = 0.93.0 Provides: bundled(golang(github.com/getsentry/sentry-go)) = 0.28.1 Provides: bundled(golang(github.com/ghodss/yaml)) = 1.0.0 Provides: bundled(golang(github.com/go-jose/go-jose/v4)) = 4.0.2 Provides: bundled(golang(github.com/go-logr/logr)) = 1.4.2 Provides: bundled(golang(github.com/go-logr/stdr)) = 1.2.2 Provides: bundled(golang(github.com/go-openapi/analysis)) = 0.23.0 Provides: bundled(golang(github.com/go-openapi/errors)) = 0.22.0 Provides: bundled(golang(github.com/go-openapi/jsonpointer)) = 0.21.0 Provides: bundled(golang(github.com/go-openapi/jsonreference)) = 0.21.0 Provides: bundled(golang(github.com/go-openapi/loads)) = 0.22.0 Provides: bundled(golang(github.com/go-openapi/runtime)) = 0.28.0 Provides: bundled(golang(github.com/go-openapi/spec)) = 0.21.0 Provides: bundled(golang(github.com/go-openapi/strfmt)) = 0.23.0 Provides: bundled(golang(github.com/go-openapi/swag)) = 0.23.0 Provides: bundled(golang(github.com/go-openapi/validate)) = 0.24.0 Provides: bundled(golang(github.com/gobwas/glob)) = 0.2.3 Provides: bundled(golang(github.com/gogo/protobuf)) = 1.3.2 Provides: bundled(golang(github.com/golang-jwt/jwt)) = 3.2.2+incompatible Provides: bundled(golang(github.com/golang-jwt/jwt/v4)) = 4.5.0 Provides: bundled(golang(github.com/golang-jwt/jwt/v5)) = 5.2.1 Provides: bundled(golang(github.com/golang/glog)) = 1.2.0 Provides: bundled(golang(github.com/golang/groupcache)) = 41bb18b Provides: bundled(golang(github.com/golang/protobuf)) = 1.5.4 Provides: bundled(golang(github.com/google/go-cmp)) = 0.6.0 Provides: bundled(golang(github.com/google/go-containerregistry)) = 0.20.0 Provides: bundled(golang(github.com/google/go-intervals)) = 0.0.2 Provides: bundled(golang(github.com/google/s2a-go)) = 0.1.8 Provides: bundled(golang(github.com/google/uuid)) = 1.6.0 Provides: bundled(golang(github.com/googleapis/enterprise-certificate-proxy)) = 0.3.2 Provides: bundled(golang(github.com/googleapis/gax-go/v2)) = 2.13.0 Provides: bundled(golang(github.com/gophercloud/gophercloud)) = 1.14.0 Provides: bundled(golang(github.com/gorilla/css)) = 1.0.0 Provides: bundled(golang(github.com/gorilla/mux)) = 1.8.1 Provides: bundled(golang(github.com/hashicorp/errwrap)) = 1.1.0 Provides: bundled(golang(github.com/hashicorp/go-cleanhttp)) = 0.5.2 Provides: bundled(golang(github.com/hashicorp/go-multierror)) = 1.1.1 Provides: bundled(golang(github.com/hashicorp/go-retryablehttp)) = 0.7.7 Provides: bundled(golang(github.com/hashicorp/go-version)) = 1.7.0 Provides: bundled(golang(github.com/inconshreveable/mousetrap)) = 1.1.0 Provides: bundled(golang(github.com/jackc/chunkreader/v2)) = 2.0.1 Provides: bundled(golang(github.com/jackc/pgconn)) = 1.14.3 Provides: bundled(golang(github.com/jackc/pgio)) = 1.0.0 Provides: bundled(golang(github.com/jackc/pgpassfile)) = 1.0.0 Provides: bundled(golang(github.com/jackc/pgproto3/v2)) = 2.3.3 Provides: bundled(golang(github.com/jackc/pgservicefile)) = 091c0ba Provides: bundled(golang(github.com/jackc/pgtype)) = 1.14.3 Provides: bundled(golang(github.com/jackc/pgx/v4)) = 4.18.3 Provides: bundled(golang(github.com/jackc/puddle)) = 1.3.0 Provides: bundled(golang(github.com/jmespath/go-jmespath)) = 0.4.0 Provides: bundled(golang(github.com/josharian/intern)) = 1.0.0 Provides: bundled(golang(github.com/json-iterator/go)) = 1.1.12 Provides: bundled(golang(github.com/julienschmidt/httprouter)) = 1.3.0 Provides: bundled(golang(github.com/klauspost/compress)) = 1.17.9 Provides: bundled(golang(github.com/klauspost/pgzip)) = 1.2.6 Provides: bundled(golang(github.com/kolo/xmlrpc)) = 38db28d Provides: bundled(golang(github.com/kr/text)) = 0.2.0 Provides: bundled(golang(github.com/kylelemons/godebug)) = 1.1.0 Provides: bundled(golang(github.com/labstack/echo/v4)) = 4.12.0 Provides: bundled(golang(github.com/labstack/gommon)) = 0.4.2 Provides: bundled(golang(github.com/letsencrypt/boulder)) = 89b07f4 Provides: bundled(golang(github.com/mailru/easyjson)) = 0.7.7 Provides: bundled(golang(github.com/mattn/go-colorable)) = 0.1.13 Provides: bundled(golang(github.com/mattn/go-isatty)) = 0.0.20 Provides: bundled(golang(github.com/mattn/go-runewidth)) = 0.0.15 Provides: bundled(golang(github.com/mattn/go-sqlite3)) = 1.14.22 Provides: bundled(golang(github.com/microcosm-cc/bluemonday)) = 1.0.23 Provides: bundled(golang(github.com/miekg/pkcs11)) = 1.1.1 Provides: bundled(golang(github.com/mistifyio/go-zfs/v3)) = 3.0.1 Provides: bundled(golang(github.com/mitchellh/go-homedir)) = 1.1.0 Provides: bundled(golang(github.com/mitchellh/mapstructure)) = 1.5.0 Provides: bundled(golang(github.com/moby/docker-image-spec)) = 1.3.1 Provides: bundled(golang(github.com/moby/sys/mountinfo)) = 0.7.2 Provides: bundled(golang(github.com/moby/sys/user)) = 0.2.0 Provides: bundled(golang(github.com/modern-go/concurrent)) = bacd9c7 Provides: bundled(golang(github.com/modern-go/reflect2)) = 1.0.2 Provides: bundled(golang(github.com/oklog/ulid)) = 1.3.1 Provides: bundled(golang(github.com/opencontainers/go-digest)) = 1.0.0 Provides: bundled(golang(github.com/opencontainers/image-spec)) = 1.1.0 Provides: bundled(golang(github.com/opencontainers/runtime-spec)) = 1.2.0 Provides: bundled(golang(github.com/opencontainers/selinux)) = 1.11.0 Provides: bundled(golang(github.com/openshift-online/ocm-sdk-go)) = 0.1.432 Provides: bundled(golang(github.com/oracle/oci-go-sdk/v54)) = 54.0.0 Provides: bundled(golang(github.com/osbuild/images)) = 0.77.0 Provides: bundled(golang(github.com/osbuild/osbuild-composer/pkg/splunk_logger)) = e969a9d Provides: bundled(golang(github.com/osbuild/pulp-client)) = 0.1.0 Provides: bundled(golang(github.com/ostreedev/ostree-go)) = 719684c Provides: bundled(golang(github.com/pkg/browser)) = 5ac0b6a Provides: bundled(golang(github.com/pkg/errors)) = 0.9.1 Provides: bundled(golang(github.com/pmezard/go-difflib)) = 5d4384e Provides: bundled(golang(github.com/proglottis/gpgme)) = 0.1.3 Provides: bundled(golang(github.com/prometheus/client_golang)) = 1.19.1 Provides: bundled(golang(github.com/prometheus/client_model)) = 0.6.0 Provides: bundled(golang(github.com/prometheus/common)) = 0.51.1 Provides: bundled(golang(github.com/prometheus/procfs)) = 0.15.1 Provides: bundled(golang(github.com/rivo/uniseg)) = 0.4.7 Provides: bundled(golang(github.com/secure-systems-lab/go-securesystemslib)) = 0.8.0 Provides: bundled(golang(github.com/segmentio/ksuid)) = 1.0.4 Provides: bundled(golang(github.com/sigstore/fulcio)) = 1.4.5 Provides: bundled(golang(github.com/sigstore/rekor)) = 1.3.6 Provides: bundled(golang(github.com/sigstore/sigstore)) = 1.8.4 Provides: bundled(golang(github.com/sirupsen/logrus)) = 1.9.3 Provides: bundled(golang(github.com/skratchdot/open-golang)) = eef8423 Provides: bundled(golang(github.com/sony/gobreaker)) = dd874f9 Provides: bundled(golang(github.com/spf13/cobra)) = 1.8.1 Provides: bundled(golang(github.com/spf13/pflag)) = 1.0.5 Provides: bundled(golang(github.com/stefanberger/go-pkcs11uri)) = 7828495 Provides: bundled(golang(github.com/stretchr/testify)) = 1.9.0 Provides: bundled(golang(github.com/sylabs/sif/v2)) = 2.18.0 Provides: bundled(golang(github.com/syndtr/gocapability)) = 42c35b4 Provides: bundled(golang(github.com/tchap/go-patricia/v2)) = 2.3.1 Provides: bundled(golang(github.com/titanous/rocacheck)) = afe7314 Provides: bundled(golang(github.com/ubccr/kerby)) = 201a958 Provides: bundled(golang(github.com/ulikunitz/xz)) = 0.5.12 Provides: bundled(golang(github.com/valyala/bytebufferpool)) = 1.0.0 Provides: bundled(golang(github.com/valyala/fasttemplate)) = 1.2.2 Provides: bundled(golang(github.com/vbatts/tar-split)) = 0.11.5 Provides: bundled(golang(github.com/vbauerster/mpb/v8)) = 8.7.4 Provides: bundled(golang(github.com/vmware/govmomi)) = 0.39.0 Provides: bundled(golang(go.mongodb.org/mongo-driver)) = 1.14.0 Provides: bundled(golang(go.mozilla.org/pkcs7)) = 33d0574 Provides: bundled(golang(go.opencensus.io)) = 0.24.0 Provides: bundled(golang(go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc)) = 0.49.0 Provides: bundled(golang(go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp)) = 0.49.0 Provides: bundled(golang(go.opentelemetry.io/otel)) = 1.24.0 Provides: bundled(golang(go.opentelemetry.io/otel/metric)) = 1.24.0 Provides: bundled(golang(go.opentelemetry.io/otel/trace)) = 1.24.0 Provides: bundled(golang(golang.org/x/crypto)) = 0.26.0 Provides: bundled(golang(golang.org/x/exp)) = 7f521ea Provides: bundled(golang(golang.org/x/mod)) = 0.20.0 Provides: bundled(golang(golang.org/x/net)) = 0.28.0 Provides: bundled(golang(golang.org/x/oauth2)) = 0.22.0 Provides: bundled(golang(golang.org/x/sync)) = 0.8.0 Provides: bundled(golang(golang.org/x/sys)) = 0.24.0 Provides: bundled(golang(golang.org/x/term)) = 0.23.0 Provides: bundled(golang(golang.org/x/text)) = 0.17.0 Provides: bundled(golang(golang.org/x/time)) = 0.6.0 Provides: bundled(golang(golang.org/x/tools)) = 0.24.0 Provides: bundled(golang(google.golang.org/api)) = 0.191.0 Provides: bundled(golang(google.golang.org/genproto)) = b1a4ccb Provides: bundled(golang(google.golang.org/genproto/googleapis/api)) = 93522f1 Provides: bundled(golang(google.golang.org/genproto/googleapis/rpc)) = b1a4ccb Provides: bundled(golang(google.golang.org/grpc)) = 1.64.1 Provides: bundled(golang(google.golang.org/protobuf)) = 1.34.2 Provides: bundled(golang(gopkg.in/ini.v1)) = 1.67.0 Provides: bundled(golang(gopkg.in/yaml.v2)) = 2.4.0 Provides: bundled(golang(gopkg.in/yaml.v3)) = 3.0.1 # BUNDLE_END %endif Requires: %{name}-core = %{version}-%{release} Requires: %{name}-worker = %{version}-%{release} Requires: systemd Provides: weldr %description %{common_description} %prep %if 0%{?rhel} %forgeautosetup -p1 %else %goprep -k %endif %build export GOFLAGS="-buildmode=pie" %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" %endif %if 0%{?fedora} # Fedora disables Go modules by default, but we want to use them. # Undefine the macro which disables it to use the default behavior. %undefine gomodulesmode %endif # btrfs-progs-devel is not available on RHEL %if 0%{?rhel} GOTAGS="exclude_graphdriver_btrfs" %endif # Set the commit hash so that composer can report what source version # was used to build it. This has to be set explicitly when calling rpmbuild, # this script will not attempt to automatically discover it. %if %{?commit:1}0 export LDFLAGS="${LDFLAGS} -X 'github.com/osbuild/osbuild-composer/internal/common.GitRev=%{commit}'" %endif export LDFLAGS="${LDFLAGS} -X 'github.com/osbuild/osbuild-composer/internal/common.RpmVersion=%{name}-%{?epoch:%epoch:}%{version}-%{release}.%{_arch}'" %gobuild ${GOTAGS:+-tags=$GOTAGS} -o _bin/osbuild-composer %{goipath}/cmd/osbuild-composer %gobuild ${GOTAGS:+-tags=$GOTAGS} -o _bin/osbuild-worker %{goipath}/cmd/osbuild-worker %gobuild ${GOTAGS:+-tags=$GOTAGS} -o _bin/osbuild-worker-executor %{goipath}/cmd/osbuild-worker-executor %gobuild ${GOTAGS:+-tags=$GOTAGS} -o _bin/osbuild-jobsite-manager %{goipath}/cmd/osbuild-jobsite-manager %gobuild ${GOTAGS:+-tags=$GOTAGS} -o _bin/osbuild-jobsite-builder %{goipath}/cmd/osbuild-jobsite-builder 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 GO111MODULE=off export GOPATH=%{gobuilddir}:%{gopath} %endif TEST_LDFLAGS="${LDFLAGS:-} -B 0x$(od -N 20 -An -tx1 -w100 /dev/urandom | tr -d ' ')" %if 0%{?rhel} GOTAGS="${GOTAGS:+$GOTAGS,}rhel%{rhel}" %endif go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-composer-cli-tests %{goipath}/cmd/osbuild-composer-cli-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-dnf-json-tests %{goipath}/cmd/osbuild-dnf-json-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-weldr-tests %{goipath}/internal/client/ go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-image-tests %{goipath}/cmd/osbuild-image-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-auth-tests %{goipath}/cmd/osbuild-auth-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-koji-tests %{goipath}/cmd/osbuild-koji-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-composer-dbjobqueue-tests %{goipath}/cmd/osbuild-composer-dbjobqueue-tests go test -c -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-service-maintenance-tests %{goipath}/cmd/osbuild-service-maintenance go build -tags="integration${GOTAGS:+,$GOTAGS}" -ldflags="${TEST_LDFLAGS}" -o _bin/osbuild-mock-openid-provider %{goipath}/cmd/osbuild-mock-openid-provider %endif %install install -m 0755 -vd %{buildroot}%{_libexecdir}/osbuild-composer install -m 0755 -vp _bin/osbuild-composer %{buildroot}%{_libexecdir}/osbuild-composer/ install -m 0755 -vp _bin/osbuild-worker %{buildroot}%{_libexecdir}/osbuild-composer/ install -m 0755 -vp _bin/osbuild-worker-executor %{buildroot}%{_libexecdir}/osbuild-composer/ install -m 0755 -vp _bin/osbuild-jobsite-manager %{buildroot}%{_libexecdir}/osbuild-composer/ install -m 0755 -vp _bin/osbuild-jobsite-builder %{buildroot}%{_libexecdir}/osbuild-composer/ # Only include repositories for the distribution and release install -m 0755 -vd %{buildroot}%{_datadir}/osbuild-composer/repositories # CentOS also defines rhel so we check for centos first %if 0%{?centos} # Latest CentOS supports building all CentOS versions %if 0%{?centos} >= 10 install -m 0644 -vp repositories/centos-* %{buildroot}%{_datadir}/osbuild-composer/repositories/ %else # All other CentOS versions support building for the same version install -m 0644 -vp repositories/centos-%{centos}* %{buildroot}%{_datadir}/osbuild-composer/repositories/ install -m 0644 -vp repositories/centos-stream-%{centos}* %{buildroot}%{_datadir}/osbuild-composer/repositories/ %endif %else %if 0%{?rhel} # RHEL 10 supports building all RHEL versions %if 0%{?rhel} >= 10 for REPO_FILE in $(ls repositories/rhel-* | grep -v 'no-aux-key'); do install -m 0644 -vp ${REPO_FILE} %{buildroot}%{_datadir}/osbuild-composer/repositories/$(basename ${REPO_FILE}) done # RHEL-8 auxiliary key is signed using SHA-1, which is not enabled by default on RHEL-10 and later for REPO_FILE in $(ls repositories/rhel-8*-no-aux-key.json); do install -m 0644 -vp ${REPO_FILE} %{buildroot}%{_datadir}/osbuild-composer/repositories/$(basename ${REPO_FILE} | sed 's/-no-aux-key//g') done %else # All other RHEL versions support building for the same version for REPO_FILE in $(ls repositories/rhel-%{rhel}* | grep -v 'no-aux-key'); do install -m 0644 -vp ${REPO_FILE} %{buildroot}%{_datadir}/osbuild-composer/repositories/$(basename ${REPO_FILE}) done # RHEL 9 supports building also for RHEL 8 %if 0%{?rhel} == 9 for REPO_FILE in $(ls repositories/rhel-8* | grep -v 'no-aux-key'); do install -m 0644 -vp ${REPO_FILE} %{buildroot}%{_datadir}/osbuild-composer/repositories/$(basename ${REPO_FILE}) done %endif %endif %endif %endif # Fedora can build for all included fedora releases %if 0%{?fedora} install -m 0644 -vp repositories/fedora-* %{buildroot}%{_datadir}/osbuild-composer/repositories/ %endif install -m 0755 -vd %{buildroot}%{_unitdir} install -m 0644 -vp distribution/*.{service,socket} %{buildroot}%{_unitdir}/ install -m 0755 -vd %{buildroot}%{_sysusersdir} install -m 0644 -vp distribution/osbuild-composer.conf %{buildroot}%{_sysusersdir}/ install -m 0755 -vd %{buildroot}%{_localstatedir}/cache/osbuild-composer/dnf-cache install -m 0755 -vd %{buildroot}%{_mandir}/man7 install -m 0644 -vp docs/*.7 %{buildroot}%{_mandir}/man7/ %if %{with tests} || 0%{?rhel} install -m 0755 -vd %{buildroot}%{_libexecdir}/osbuild-composer-test install -m 0755 -vp _bin/osbuild-composer-cli-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-weldr-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-dnf-json-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-image-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-auth-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-koji-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-composer-dbjobqueue-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-service-maintenance-tests %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp _bin/osbuild-mock-openid-provider %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/define-compose-url.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/provision.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/gen-certs.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/gen-ssh.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/image-info %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/run-koji-container.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/koji-compose.py %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/libvirt_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/s3_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/generic_s3_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/generic_s3_https_test.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/run-mock-auth-servers.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vp tools/set-env-variables.sh %{buildroot}%{_libexecdir}/osbuild-composer-test/ install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer install -m 0755 -vp test/cases/*.sh %{buildroot}%{_libexecdir}/tests/osbuild-composer/ install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer/api install -m 0755 -vp test/cases/api/*.sh %{buildroot}%{_libexecdir}/tests/osbuild-composer/api/ install -m 0755 -vd %{buildroot}%{_libexecdir}/tests/osbuild-composer/api/common install -m 0755 -vp test/cases/api/common/*.sh %{buildroot}%{_libexecdir}/tests/osbuild-composer/api/common/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/ansible install -m 0644 -vp test/data/ansible/* %{buildroot}%{_datadir}/tests/osbuild-composer/ansible/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/azure install -m 0644 -vp test/data/azure/* %{buildroot}%{_datadir}/tests/osbuild-composer/azure/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/manifests install -m 0644 -vp test/data/manifests/* %{buildroot}%{_datadir}/tests/osbuild-composer/manifests/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init install -m 0644 -vp test/data/cloud-init/* %{buildroot}%{_datadir}/tests/osbuild-composer/cloud-init/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/composer install -m 0644 -vp test/data/composer/* %{buildroot}%{_datadir}/tests/osbuild-composer/composer/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/worker install -m 0644 -vp test/data/worker/* %{buildroot}%{_datadir}/tests/osbuild-composer/worker/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/repositories install -m 0644 -vp test/data/repositories/* %{buildroot}%{_datadir}/tests/osbuild-composer/repositories/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/kerberos install -m 0644 -vp test/data/kerberos/* %{buildroot}%{_datadir}/tests/osbuild-composer/kerberos/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/keyring install -m 0644 -vp test/data/keyring/id_rsa.pub %{buildroot}%{_datadir}/tests/osbuild-composer/keyring/ install -m 0600 -vp test/data/keyring/id_rsa %{buildroot}%{_datadir}/tests/osbuild-composer/keyring/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/koji install -m 0644 -vp test/data/koji/* %{buildroot}%{_datadir}/tests/osbuild-composer/koji/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/x509 install -m 0644 -vp test/data/x509/* %{buildroot}%{_datadir}/tests/osbuild-composer/x509/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/schemas install -m 0644 -vp pkg/jobqueue/dbjobqueue/schemas/* %{buildroot}%{_datadir}/tests/osbuild-composer/schemas/ install -m 0755 -vd %{buildroot}%{_datadir}/tests/osbuild-composer/upgrade8to9 install -m 0644 -vp test/data/upgrade8to9/* %{buildroot}%{_datadir}/tests/osbuild-composer/upgrade8to9/ %endif %check export GOFLAGS="-buildmode=pie" %if 0%{?rhel} export GOFLAGS+=" -mod=vendor -tags=exclude_graphdriver_btrfs" export GOPATH=$PWD/_build:%{gopath} # cd inside GOPATH, otherwise go with GO111MODULE=off ignores vendor directory cd $PWD/_build/src/%{goipath} %gotest ./... %else %gocheck %endif %post %systemd_post osbuild-composer.service osbuild-composer.socket osbuild-composer-api.socket osbuild-composer-prometheus.socket osbuild-remote-worker.socket %preun %systemd_preun osbuild-composer.service osbuild-composer.socket osbuild-composer-api.socket osbuild-composer-prometheus.socket osbuild-remote-worker.socket %postun %systemd_postun_with_restart osbuild-composer.service osbuild-composer.socket osbuild-composer-api.socket osbuild-composer-prometheus.socket osbuild-remote-worker.socket %files %license LICENSE %doc README.md %{_mandir}/man7/%{name}.7* %{_unitdir}/osbuild-composer.service %{_unitdir}/osbuild-composer.socket %{_unitdir}/osbuild-composer-api.socket %{_unitdir}/osbuild-composer-prometheus.socket %{_unitdir}/osbuild-local-worker.socket %{_unitdir}/osbuild-remote-worker.socket %{_sysusersdir}/osbuild-composer.conf %package core Summary: The core osbuild-composer binary Requires: osbuild-depsolve-dnf >= %{min_osbuild_version} Provides: %{name}-dnf-json = %{version}-%{release} Obsoletes: %{name}-dnf-json < %{version}-%{release} %description core The core osbuild-composer binary. This is suitable both for spawning in containers and by systemd. %files core %{_libexecdir}/osbuild-composer/osbuild-composer %{_datadir}/osbuild-composer/ %package worker Summary: The worker for osbuild-composer Requires: systemd Requires: qemu-img Requires: osbuild >= %{min_osbuild_version} Requires: osbuild-ostree >= %{min_osbuild_version} Requires: osbuild-lvm2 >= %{min_osbuild_version} Requires: osbuild-luks2 >= %{min_osbuild_version} Requires: osbuild-depsolve-dnf >= %{min_osbuild_version} Provides: %{name}-dnf-json = %{version}-%{release} Obsoletes: %{name}-dnf-json < %{version}-%{release} %description worker The worker for osbuild-composer %files worker %{_libexecdir}/osbuild-composer/osbuild-worker %{_libexecdir}/osbuild-composer/osbuild-worker-executor %{_libexecdir}/osbuild-composer/osbuild-jobsite-manager %{_libexecdir}/osbuild-composer/osbuild-jobsite-builder %{_unitdir}/osbuild-worker@.service %{_unitdir}/osbuild-remote-worker@.service %post worker %systemd_post osbuild-worker@.service osbuild-remote-worker@.service %preun worker # systemd_preun uses systemctl disable --now which doesn't work well with template services. # See https://github.com/systemd/systemd/issues/15620 # The following lines mimicks its behaviour by running two commands. # The scriptlet is supposed to run only when the package is being removed. if [ $1 -eq 0 ] && [ -d /run/systemd/system ]; then # disable and stop all the worker services systemctl --no-reload disable osbuild-worker@.service osbuild-remote-worker@.service systemctl stop "osbuild-worker@*.service" "osbuild-remote-worker@*.service" fi %postun worker # restart all the worker services %systemd_postun_with_restart "osbuild-worker@*.service" "osbuild-remote-worker@*.service" %if %{with tests} || 0%{?rhel} %package tests Summary: Integration tests %if %{with relax_requires} Requires: %{name} %else Requires: %{name} = %{version}-%{release} %endif Requires: composer-cli Requires: createrepo_c Requires: xorriso Requires: qemu-kvm-core Requires: systemd-container Requires: jq Requires: unzip Requires: container-selinux Requires: dnsmasq Requires: krb5-workstation Requires: podman Requires: python3 Requires: sssd-krb5 Requires: libvirt-client libvirt-daemon Requires: libvirt-daemon-config-network Requires: libvirt-daemon-config-nwfilter Requires: libvirt-daemon-driver-interface Requires: libvirt-daemon-driver-network Requires: libvirt-daemon-driver-nodedev Requires: libvirt-daemon-driver-nwfilter Requires: libvirt-daemon-driver-qemu Requires: libvirt-daemon-driver-secret Requires: libvirt-daemon-driver-storage Requires: libvirt-daemon-driver-storage-disk Requires: libvirt-daemon-kvm Requires: qemu-img Requires: qemu-kvm Requires: rpmdevtools Requires: virt-install Requires: expect Requires: python3-lxml Requires: httpd Requires: mod_ssl Requires: openssl Requires: firewalld # podman-plugins has been deprecated since podman version 5.0.0, # which is in Fedora 40+ and in c10s / el10 %if (0%{?rhel} && 0%{?rhel} < 10) || (0%{?fedora} && 0%{?fedora} < 40) Requires: podman-plugins %endif Requires: dnf-plugins-core Requires: skopeo Requires: make Requires: python3-pip %if 0%{?fedora} # koji and ansible are not in RHEL repositories. Depending on them breaks RHEL # gating (see OSCI-1541). The test script must enable EPEL and install those # packages manually. Requires: koji Requires: ansible %endif %ifarch %{arm} Requires: edk2-aarch64 %endif %description tests Integration tests to be run on a pristine-dedicated system to test the osbuild-composer package. %files tests %{_libexecdir}/osbuild-composer-test/ %{_libexecdir}/tests/osbuild-composer/ %{_datadir}/tests/osbuild-composer/ %endif %changelog # the changelog is distribution-specific, therefore there's just one entry # to make rpmlint happy. * Tue Aug 13 2024 Packit - 115-1.20240813204154793307.pr4154.65.g8d1cea168 - jobqueuetest: Add new tests to TestJobQueue (Brian C. Lane) - dbjobqueue: Remove root job and unused dependencies (Brian C. Lane) - dbjobqueue: Add AllRootJobIDs implementation (Brian C. Lane) - dbjobqueue: Add AllJobIDs implementation (Brian C. Lane) - cloudapi: Add artifact cleanup to delete handler (Brian C. Lane) - worker: Add CleanupArtifacts function (Brian C. Lane) - cloudapi: Move most of getComposeStatusImpl into a function (Brian C. Lane) - cloudapi: Add DeleteCompose to delete a job by UUID (Brian C. Lane) - cloudapi: Add /composes/delete route to delete a job (Brian C. Lane) - jobqueue: Add RemoveJob function (Brian C. Lane) - jsondb: Add Remove function (Brian C. Lane) - jobqueue: Add AllJobIDs function to list every job (Brian C. Lane) - cloudapi: Return the list of root job UUIDs for /composes request (Brian C. Lane) - cloudapi: Add /composes route to list root job UUIDs (Brian C. Lane) - jobqueue: Add AllRootJobIDs function to jobqueue (Brian C. Lane) - test/libvirt.sh: don't test openstack image on el10 / c10s (Tomáš Hozza) - Schutzfile: add osbuild ref for 'centos-10' (Tomáš Hozza) - Update `osbuild/images` to v0.77.0 (Tomáš Hozza) - test/api.sh: disable `rpm` customization on el10/c10s (Tomáš Hozza) - Add support for RHSM customizations (Tomáš Hozza) - Add support for RPM customizations (Tomáš Hozza) - SPEC: set minimum required osbuild version to v120 (Tomáš Hozza) - Update `osbuild/images` to v0.75.0 (Tomáš Hozza) - ci: move edge test to testing-farm (Yi He) - osbuild-composer: activate deployment-channel reporting for splunk (Florian Schüller) - prepare-source: Move go fmt to last step (Brian C. Lane) - tests/libvirt: disable secure boot for el-10 (Jakub Rusz) - CI: temporarily disable image-tests on rhel-10 nightly (Jakub Rusz) - tests/libvirt: define el-10 variants (Jakub Rusz) - ci: run libvirt test on rhel-10 using rhos-01 runner (Jakub Rusz) - CI: Add rules for scheduled RHEL-10 nightly (Jakub Rusz) - tests/ci: temporarily disable vmware tests on el-10 (Jakub Rusz) - tests/api: add --net=host for podman command (Jakub Rusz) - tests/api: Remove openscap profile for el-10 (Jakub Rusz) - CI: Add internal network for api tests (Jakub Rusz) - tests/CI: additional scheduling and loggin updates (Jakub Rusz) - tests/regression: do not schedule skipped tests (Jakub Rusz) - Replace GOVC_DATACENTER with GOVMOMI_DATACENTER ENV var (Alexander Todorov) - Temporarily disable testing with Satellite on el10 (Alexander Todorov) - Test/repositories: delete EOL F37 and F38 repos (Tomáš Hozza) - Test/repositories: update el10.0 snapshots (Tomáš Hozza) - Test/repositories: update c10s snapshots (Tomáš Hozza) - Tests/regression-satellite: fix permission denied error in cleanup() (Tomáš Hozza) - Tests/cross-distro.sh: ignore upstream repos suffixed with 'no-aux-key' (Tomáš Hozza) - Test: dot-notation backward compatibility is not supported on el10 (Tomáš Hozza) - weldr-distro-dot-notation-and-aliases.sh: remove extra slash (Tomáš Hozza) - SPEC: don't install repos suffixed with 'no-aux-key' (Tomáš Hozza) - Tests/api.sh: test only a subset of image types on el10 (Tomáš Hozza) - Add version_id for regression test scripts for rhel-10 (Alexander Todorov) - Skip test b/c image-installer unsupoorted on cs10 & rhel-10 for now (Alexander Todorov) - Skip testing in GCP - unsupported for now (Alexander Todorov) - Disable cloud-image-val because of CLOUDX-994 (Alexander Todorov) - Define el10 variant for libvirt (Alexander Todorov) - CI: don't run some tests on el9.5-nightly aarch64 (Tomáš Hozza) - Start running tests on rhel-10.0-nightly (Alexander Todorov) - Use --net=host when running podman, workaround RHEL-32374 (Alexander Todorov) - Define cs10 variant for libvirt (Alexander Todorov) - Start running tests on centos-stream-10 (Alexander Todorov) - There is no EPEL for EL10 yet so use a custom COPR repository (Alexander Todorov) - logrus: add deployment channel as field to the logs (Florian Schüller) - cloudapi: json tailoring options (Gianluca Zuccarelli) - blueprint/customizations: json tailoring (Gianluca Zuccarelli) - cloudapi: openscap tailoring tests (Gianluca Zuccarelli) - go.mod: update osbuild/images to v0.74.0 (Gianluca Zuccarelli) - Post release version bump (schutzbot) * Wed Sep 11 2019 Image Builder team - 0-1 - On this day, this project was born.