Compare commits

..

No commits in common. "c9-beta" and "c10s" have entirely different histories.

10 changed files with 351 additions and 158 deletions

View File

@ -1 +0,0 @@
63c0c0b2173455ff5c51e64d5563016319b44901 SOURCES/butane-0.21.0.tar.gz

15
.gitignore vendored
View File

@ -1 +1,14 @@
SOURCES/butane-0.21.0.tar.gz /butane-0.11.0.tar.gz
/butane-0.12.0.tar.gz
/butane-0.12.1.tar.gz
/butane-0.13.0.tar.gz
/butane-0.13.1.tar.gz
/butane-0.14.0.tar.gz
/butane-0.15.0.tar.gz
/butane-0.16.0.tar.gz
/butane-0.17.0.tar.gz
/butane-0.18.0.tar.gz
/butane-0.19.0.tar.gz
/butane-0.20.0.tar.gz
/butane-0.21.0.tar.gz
/butane-0.22.0.tar.gz

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# butane
Butane translates human-readable Butane Configs into machine-readable Ignition configs for provisioning operating systems that use Ignition.

View File

@ -1,156 +0,0 @@
# Originally generated by go2rpm 1.3
%if 0%{?fedora}
%bcond_without check
%else
# %%gocheck isn't currently provided on CentOS/RHEL
# https://bugzilla.redhat.com/show_bug.cgi?id=1982298
%bcond_with check
%endif
# https://github.com/coreos/butane
%global goipath github.com/coreos/butane
%global gomodulesmode GO111MODULE=on
Version: 0.21.0
%gometa
%global common_description %{expand:
Butane translates human-readable Butane Configs into machine-readable Ignition
configs for provisioning operating systems that use Ignition.}
%global golicenses LICENSE
%global godocs docs README.md
Name: butane
Release: 1%{?dist}
Summary: Butane config transpiler
# Upstream license specification: Apache-2.0
License: ASL 2.0
URL: %{gourl}
Source0: %{gosource}
# Generated by go-mods-to-bundled-provides.py
Provides: bundled(golang(github.com/clarketm/json)) = 1.17.1
Provides: bundled(golang(github.com/coreos/go-semver/semver)) = 0.3.1
Provides: bundled(golang(github.com/coreos/go-systemd/v22/unit)) = 22.5.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/doc)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/merge)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/errors)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/parse)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/validations)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/util)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_0/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_1/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_2/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_3/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_4/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_5_experimental/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/validate)) = 2.17.0
Provides: bundled(golang(github.com/coreos/vcontext/json)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/path)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/report)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/tree)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/validate)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/yaml)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/spf13/pflag)) = 1.0.6-0.20210604193023.gitd5e0c0615ace
Provides: bundled(golang(github.com/stretchr/testify/assert)) = 1.8.4
Provides: bundled(golang(github.com/vincent-petithory/dataurl)) = 1.0.0
Provides: bundled(golang(gopkg.in/yaml.v3)) = 3.0.1
%description
%{common_description}
%package redistributable
Summary: Butane for macOS and Windows
License: ASL 2.0
BuildArch: noarch
%description redistributable
%{common_description}
This package contains macOS and Windows Butane binaries built through
cross-compilation.
%prep
%goprep -k
%autopatch -p1
%build
export LDFLAGS="-X github.com/coreos/butane/internal/version.Raw=%{version} $LDFLAGS"
export GOFLAGS="-mod=vendor"
echo "Building butane..."
%gobuild -o ./butane internal/main.go
%global gocrossbuild go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x
echo "Building macOS Butane..."
GOARCH=amd64 GOOS=darwin %gocrossbuild -o butane-darwin-amd64 internal/main.go
echo "Building Windows Butane..."
GOARCH=amd64 GOOS=windows %gocrossbuild -o butane-windows-amd64.exe internal/main.go
%install
install -d -p %{buildroot}%{_bindir}
install -p -m 0755 ./butane %{buildroot}%{_bindir}
install -d -p %{buildroot}%{_datadir}/butane-redistributable
install -p -m 0644 ./butane-darwin-amd64 %{buildroot}%{_datadir}/butane-redistributable
install -p -m 0644 ./butane-windows-amd64.exe %{buildroot}%{_datadir}/butane-redistributable
%if %{with check}
%check
%gocheck
%endif
%files
%license %{golicenses}
%doc %{godocs}
%{_bindir}/butane
%files redistributable
%license %{golicenses}
%dir %{_datadir}/butane-redistributable
%{_datadir}/butane-redistributable/butane-darwin-amd64
%{_datadir}/butane-redistributable/butane-windows-amd64.exe
%changelog
* Mon Jun 10 2024 Yasmin Valim <ydesouza@redhat.com> - 0.21.0-1
- new version
* Wed Feb 21 2024 Yasmin Valim <ydesouza@redhat.com> - 0.20.0-1
- new version
* Wed Oct 18 2023 Steven Presti <spresti@redhat.com> - 0.19.0-1
- new version
* Thu Apr 06 2023 Steven Presti <spresti@redhat.com> - 0.18.0-1
- New version
* Mon Jan 09 2023 Sohan Kunkerkar <skunkerk@redhat.com> - 0.17.0-1
- New release
* Mon Oct 17 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.16.0-1
- New release
* Thu Jan 27 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.14.0-1
- New release
* Wed Aug 04 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.13.1-1
- New release
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jul 14 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.13.0-1
- New release
* Thu Jun 10 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.12.1-1
- New release
* Tue Jun 08 2021 Sohan Kunkerkar <skunkerk@redhat.com> - 0.12.0-1
- New release
* Tue Apr 06 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.11.0-1
- Initial package

11
butane.rpmlintrc Normal file
View File

@ -0,0 +1,11 @@
# Butane sources (including vendored sources) have duplicate files because
# of how spec versioning is implemented
addFilter("butane-debugsource.x86_64: W: files-duplicate")
addFilter("butane-debugsource.x86_64: E: files-duplicated-waste")
# -redistributable is supposed to have binaries in it
addFilter("butane-redistributable.noarch: E: arch-independent-package-contains-binary-or-object")
# This is documented as optional
# https://fedoraproject.org/wiki/Upgrade_paths_%E2%80%94_renaming_or_splitting_packages#Do_I_need_to_Provide_my_old_package_names.3F
addFilter("butane-redistributable.noarch: W: obsolete-not-provided butane-nonlinux")

223
butane.spec Normal file
View File

@ -0,0 +1,223 @@
# Originally generated by go2rpm 1.3
%if 0%{?fedora}
%bcond_without check
%else
# %%gocheck isn't currently provided on CentOS/RHEL
# https://bugzilla.redhat.com/show_bug.cgi?id=1982298
%bcond_with check
%endif
# https://github.com/coreos/butane
%global goipath github.com/coreos/butane
%global gomodulesmode GO111MODULE=on
Version: 0.22.0
%gometa
%global common_description %{expand:
Butane translates human-readable Butane Configs into machine-readable Ignition
configs for provisioning operating systems that use Ignition.}
%global golicenses LICENSE
%global godocs docs README.md
Name: butane
Release: 2%{?dist}
Summary: Butane config transpiler
License: Apache-2.0
URL: %{gourl}
Source0: %{gosource}
# Upgrade path from old FCCT package; can be dropped in Fedora 36
Provides: fedora-coreos-config-transpiler = %{version}-%{release}
Obsoletes: fedora-coreos-config-transpiler < 0.10.0-2
# Provided by FCCT package; can be dropped in Fedora 36
Provides: fcct = %{version}-%{release}
# Generated by go-mods-to-bundled-provides.py
Provides: bundled(golang(github.com/clarketm/json)) = 1.17.1
Provides: bundled(golang(github.com/coreos/go-semver/semver)) = 0.3.1
Provides: bundled(golang(github.com/coreos/go-systemd/v22/unit)) = 22.5.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/doc)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/merge)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/errors)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/parse)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/shared/validations)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/util)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_0/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_1/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_2/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_3/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_4/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/v3_5_experimental/types)) = 2.17.0
Provides: bundled(golang(github.com/coreos/ignition/v2/config/validate)) = 2.17.0
Provides: bundled(golang(github.com/coreos/vcontext/json)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/path)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/report)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/tree)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/validate)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/coreos/vcontext/yaml)) = 0.0.0-20230201181013.gitd72178a18687
Provides: bundled(golang(github.com/spf13/pflag)) = 1.0.6-0.20210604193023.gitd5e0c0615ace
Provides: bundled(golang(github.com/stretchr/testify/assert)) = 1.8.4
Provides: bundled(golang(github.com/vincent-petithory/dataurl)) = 1.0.0
Provides: bundled(golang(gopkg.in/yaml.v3)) = 3.0.1
%description
%{common_description}
%package redistributable
Summary: Statically built Butane for Linux, macOS and Windows
License: Apache-2.0
BuildArch: noarch
# In case someone has this subpackage installed, obsolete the old name
# Drop in Fedora 38
Obsoletes: butane-nonlinux < 0.13.1-3
%description redistributable
%{common_description}
This package contains statically linked Linux, macOS and Windows Butane
binaries built through cross-compilation. Do not install it. It is only
used for building release binaries to be signed by Fedora release
engineering and uploaded to the Butane GitHub releases page.
%prep
%goprep -k
%autopatch -p1
%build
export LDFLAGS="-X github.com/coreos/butane/internal/version.Raw=%{version} "
export GOFLAGS="-mod=vendor"
echo "Building butane..."
%gobuild -o ./butane internal/main.go
%global gocrossbuild go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x
echo "Building Linux Butane with static linking..."
CGO_ENABLED=0 GOARCH=arm64 GOOS=linux %gocrossbuild -o butane-aarch64-unknown-linux-gnu-static internal/main.go
CGO_ENABLED=0 GOARCH=ppc64le GOOS=linux %gocrossbuild -o butane-ppc64le-unknown-linux-gnu-static internal/main.go
CGO_ENABLED=0 GOARCH=s390x GOOS=linux %gocrossbuild -o butane-s390x-unknown-linux-gnu-static internal/main.go
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux %gocrossbuild -o butane-x86_64-unknown-linux-gnu-static internal/main.go
echo "Building macOS Butane..."
GOARCH=amd64 GOOS=darwin %gocrossbuild -o butane-x86_64-apple-darwin internal/main.go
GOARCH=arm64 GOOS=darwin %gocrossbuild -o butane-aarch64-apple-darwin internal/main.go
echo "Building Windows Butane..."
GOARCH=amd64 GOOS=windows %gocrossbuild -o butane-x86_64-pc-windows-gnu.exe internal/main.go
%install
install -d -p %{buildroot}%{_bindir}
install -p -m 0755 ./butane %{buildroot}%{_bindir}
ln -s butane %{buildroot}%{_bindir}/fcct
install -d -p %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-aarch64-apple-darwin %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-aarch64-unknown-linux-gnu-static %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-ppc64le-unknown-linux-gnu-static %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-s390x-unknown-linux-gnu-static %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-x86_64-apple-darwin %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-x86_64-pc-windows-gnu.exe %{buildroot}%{_datadir}/butane
install -p -m 0644 ./butane-x86_64-unknown-linux-gnu-static %{buildroot}%{_datadir}/butane
%if %{with check}
%check
%gocheck
%endif
%files
%license %{golicenses}
%doc %{godocs}
%{_bindir}/butane
%{_bindir}/fcct
%files redistributable
%license %{golicenses}
%dir %{_datadir}/butane
%{_datadir}/butane/butane-aarch64-apple-darwin
%{_datadir}/butane/butane-aarch64-unknown-linux-gnu-static
%{_datadir}/butane/butane-ppc64le-unknown-linux-gnu-static
%{_datadir}/butane/butane-s390x-unknown-linux-gnu-static
%{_datadir}/butane/butane-x86_64-apple-darwin
%{_datadir}/butane/butane-x86_64-pc-windows-gnu.exe
%{_datadir}/butane/butane-x86_64-unknown-linux-gnu-static
%changelog
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 0.22.0-2
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Thu Sep 26 2024 Yasmin Valim <ydesouza@redhat.com> - 0.22.0-1
- new version
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 0.19.0-4
- Bump release for June 2024 mass rebuild
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Oct 03 2023 Steven Presti <spresti@redhat.com> - 0.19.0-1
- New release
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.18.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Tue Mar 28 2023 Steven Presti <spresti@redhat.com> - 0.18.0-1
- New release
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Wed Jan 4 2023 Sohan Kunkerkar <skunkerk@redhat.com> - 0.17.0-1
- New release
* Fri Oct 14 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.16.0-1
- New release
- Switch License tags to SPDX
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.15.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Mon Jun 27 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.15.0-2
- Add macOS aarch64 binary to -redistributable
* Mon Jun 27 2022 Steven Presti <spresti@redhat.com> - 0.15.0-1
- New release
* Fri Jun 17 2022 Robert-André Mauchin <zebob.m@gmail.com> - 0.14.0-2
- Rebuilt for CVE-2022-1996, CVE-2022-24675, CVE-2022-28327, CVE-2022-27191,
CVE-2022-29526, CVE-2022-30629
* Thu Jan 27 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.14.0-1
- New release
* Tue Jan 25 2022 Benjamin Gilbert <bgilbert@redhat.com> - 0.13.1-3
- Rename -nonlinux subpackage to -redistributable
- Add static Linux binaries to -redistributable
- Enable %%gocheck only on Fedora
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Aug 04 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.13.1-1
- New release
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.13.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Wed Jul 14 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.13.0-1
- New release
* Thu Jun 10 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.12.1-1
- New release
* Tue Jun 08 2021 Sohan Kunkerkar <skunkerk@redhat.com> - 0.12.0-1
- New release
* Tue Apr 06 2021 Benjamin Gilbert <bgilbert@redhat.com> - 0.11.0-1
- Initial package

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional} # this is the testcase identifier, which OSCI pipeline uses

84
go-mods-to-bundled-provides.py Executable file
View File

@ -0,0 +1,84 @@
#!/usr/bin/env python3
'''
Tiny dumb script that generates virtual bundled `Provides` from a repo that
uses go modules and vendoring.
'''
import sys
import re
def main():
repos = get_repos_from_go_mod()
print_provides_from_modules_txt(repos)
def get_repos_from_go_mod():
repos = {}
in_reqs = False
for line in open('go.mod'):
line = line.strip()
if in_reqs and line.startswith(')'):
break
if not in_reqs:
if line.startswith('require ('):
in_reqs = True
continue
req = line.split()
repo = req[0]
tag = req[1]
repos[repo] = go_mod_tag_to_rpm_provides_version(tag)
return repos
def go_mod_tag_to_rpm_provides_version(tag):
# go.mod tags are either exact git tags, or may be "pseudo-versions". We
# want to convert these tags to something resembling a version string that
# RPM won't fail on. For more information, see
# https://golang.org/cmd/go/#hdr-Pseudo_versions and following sections.
# trim off any +incompatible
if tag.endswith('+incompatible'):
tag = tag[:-len('+incompatible')]
# git tags are normally of the form v$VERSION
if tag.startswith('v'):
tag = tag[1:]
# is this a pseudo-version? e.g. v0.0.0-20181031085051-9002847aa142
m = re.match("(.*)-([0-9.]+)-([a-f0-9]{12})", tag)
if m:
# rpm doesn't like multiple dashes in the version, so just merge the
# timestamp and the commit checksum into the "release" field
tag = f"{m.group(1)}-{m.group(2)}.git{m.group(3)}"
return tag
def print_provides_from_modules_txt(repos):
for line in open('vendor/modules.txt'):
if line.startswith('#'):
continue
gopkg = line.strip()
repo = lookup_repo_for_pkg(repos, gopkg)
if not repo:
# must be a pkg for tests only; ignore
continue
tag = repos[repo]
print(f"Provides: bundled(golang({gopkg})) = {tag}")
def lookup_repo_for_pkg(repos, gopkg):
for repo in repos:
if gopkg.startswith(repo):
return repo
if __name__ == '__main__':
sys.exit(main())

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (butane-0.22.0.tar.gz) = fb63d074f4d9b11a009c8d2e2b986778632d46bdfab5732d248d8b1ca86f11c78e98f3a6b7bc49489e12c4211dfc2277228e14f4e8a1a3694158c9b0f133c621

9
tests/tests.yml Normal file
View File

@ -0,0 +1,9 @@
- hosts: localhost
roles:
- role: standard-test-basic
tags:
- classic
tests:
- simple:
dir: .
run: "butane --help"