diff --git a/.gitignore b/.gitignore
index 09e4a86..73c092c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/ignition-2.9.0.tar.gz
+SOURCES/ignition-2.13.0.tar.gz
diff --git a/.ignition.metadata b/.ignition.metadata
index e050fab..d122ae5 100644
--- a/.ignition.metadata
+++ b/.ignition.metadata
@@ -1 +1 @@
-c757b640efb2e885683a38567b058250d56b0296 SOURCES/ignition-2.9.0.tar.gz
+c3434d20b78cde599c03820a86c1b4107f0e8e5c SOURCES/ignition-2.13.0.tar.gz
diff --git a/SOURCES/internal-providers-aws-probe-the-IMDS-token-URL.patch b/SOURCES/internal-providers-aws-probe-the-IMDS-token-URL.patch
deleted file mode 100644
index d989482..0000000
--- a/SOURCES/internal-providers-aws-probe-the-IMDS-token-URL.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 74ffe3749d70b9d115a9b9790969b8dcb4a76e12 Mon Sep 17 00:00:00 2001
-From: Stephen Lowrie <stephen.lowrie@gmail.com>
-Date: Mon, 11 Jan 2021 11:27:12 -0600
-Subject: [PATCH] internal/providers/aws: probe the IMDS token URL
-
-Probing the `/latest` path causes a 401 Unauthorized when running with
-IMDSv2 only. Instead ping the token URL.
----
- internal/providers/aws/aws.go | 37 +++++++++++++++++++----------------
- 1 file changed, 20 insertions(+), 17 deletions(-)
-
-diff --git a/internal/providers/aws/aws.go b/internal/providers/aws/aws.go
-index 54373dbb..4a6655f0 100644
---- a/internal/providers/aws/aws.go
-+++ b/internal/providers/aws/aws.go
-@@ -40,11 +40,6 @@ var (
- 		Host:   "169.254.169.254",
- 		Path:   "2019-10-01/user-data",
- 	}
--	metadataServiceProbeURL = url.URL{
--		Scheme: "http",
--		Host:   "169.254.169.254",
--		Path:   "latest",
--	}
- 	imdsTokenURL = url.URL{
- 		Scheme: "http",
- 		Host:   "169.254.169.254",
-@@ -78,17 +73,17 @@ func NewFetcher(l *log.Logger) (resource.Fetcher, error) {
- // Init prepares the fetcher for this platform
- func Init(f *resource.Fetcher) error {
- 	// During the fetch stage we might be running before the networking
--	// is fully ready. Perform an HTTP fetch against the metadata probe
--	// URL to ensure that networking is up before we attempt to fetch
--	// the region hint from ec2metadata.
-+	// is fully ready. Perform an HTTP fetch against the IMDS token URL
-+	// to ensure that networking is up before we attempt to fetch the
-+	// region hint from ec2metadata.
- 	//
--	// NOTE: the FetchToBuffer call against the metadata service probe
--	// URL is a temporary solution to handle waiting for networking
--	// before fetching from the AWS API. We do this instead of an
--	// infinite retry loop on the API call because, without a clear
--	// understanding of the failure cases, that would risk provisioning
--	// failures due to quirks of the ec2metadata API.  Additionally a
--	// finite retry loop would have to time out quickly enough to avoid
-+	// NOTE: the FetchToBuffer call against the IMDS token URL is a
-+	// temporary solution to handle waiting for networking before
-+	// fetching from the AWS API. We do this instead of an infinite
-+	// retry loop on the API call because, without a clear understanding
-+	// of the failure cases, that would risk provisioning failures due
-+	// to quirks of the ec2metadata API.  Additionally a finite retry
-+	// loop would have to time out quickly enough to avoid
- 	// extraordinarily long boots on failure (since this code runs in
- 	// every stage) but that would risk premature timeouts if the
- 	// network takes a while to come up.
-@@ -102,8 +97,16 @@ func Init(f *resource.Fetcher) error {
- 	// NOTE: FetchToBuffer is handling the ErrNeedNet case.  If we move
- 	// to an alternative method, we will need to handle the detection in
- 	// this function.
--	_, err := f.FetchToBuffer(metadataServiceProbeURL, resource.FetchOptions{})
--	if err != nil {
-+	opts := resource.FetchOptions{
-+		Headers: http.Header{
-+			"x-aws-ec2-metadata-token-ttl-seconds": []string{"21600"},
-+		},
-+		HTTPVerb: "PUT",
-+	}
-+	_, err := f.FetchToBuffer(imdsTokenURL, opts)
-+	// ErrNotFound would just mean that the instance might not have
-+	// IMDSv2 enabled
-+	if err != nil && err != resource.ErrNotFound {
- 		return err
- 	}
- 
--- 
-2.29.2
diff --git a/SOURCES/luks-volume-reuse.patch b/SOURCES/luks-volume-reuse.patch
new file mode 100644
index 0000000..b27f481
--- /dev/null
+++ b/SOURCES/luks-volume-reuse.patch
@@ -0,0 +1,56 @@
+From aed47c18aee593d155d45c0fe9ba29a9e3123cf6 Mon Sep 17 00:00:00 2001
+From: Benjamin Gilbert <bgilbert@redhat.com>
+Date: Mon, 17 Jan 2022 21:17:08 -0500
+Subject: [PATCH] disks: fix reuse of statically keyed LUKS volume
+
+We need to persist a volume's keyfile to the real root even if we take
+the early `continue` when reusing the volume.  Rather than copying code,
+enable persistence up front and then disable it afterward if we decide
+not to persist the key.
+
+Fixes error:
+
+    CRITICAL : Ignition failed: creating crypttab entries: missing persisted keyfile for [...]
+
+Fixes: https://github.com/coreos/ignition/issues/1305
+Fixes: 65e9c1611128 ("stages/disks: use State to persist keyfiles for files stage")
+---
+ internal/exec/stages/disks/luks.go | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/internal/exec/stages/disks/luks.go b/internal/exec/stages/disks/luks.go
+index 77ecc24e..5fa15e70 100644
+--- a/internal/exec/stages/disks/luks.go
++++ b/internal/exec/stages/disks/luks.go
+@@ -156,6 +156,13 @@ func (s *stage) createLuks(config types.Config) error {
+ 				}
+ 			}
+ 		}
++		// store the key to be persisted into the real root
++		// do this here so device reuse works correctly
++		key, err := ioutil.ReadFile(keyFilePath)
++		if err != nil {
++			return fmt.Errorf("failed to read keyfile %q: %w", keyFilePath, err)
++		}
++		s.State.LuksPersistKeyFiles[luks.Name] = dataurl.EncodeBytes(key)
+ 
+ 		if !util.IsTrue(luks.WipeVolume) {
+ 			// If the volume isn't forcefully being created, then we need
+@@ -329,13 +336,7 @@ func (s *stage) createLuks(config types.Config) error {
+ 			); err != nil {
+ 				return fmt.Errorf("removing key file from luks device: %v", err)
+ 			}
+-		} else {
+-			// store the key to be persisted into the real root
+-			key, err := ioutil.ReadFile(keyFilePath)
+-			if err != nil {
+-				return fmt.Errorf("failed to read keyfile %q: %w", keyFilePath, err)
+-			}
+-			s.State.LuksPersistKeyFiles[luks.Name] = dataurl.EncodeBytes(key)
++			delete(s.State.LuksPersistKeyFiles, luks.Name)
+ 		}
+ 	}
+ 
+-- 
+2.33.1
+
diff --git a/SPECS/ignition.spec b/SPECS/ignition.spec
index df60397..2c42301 100644
--- a/SPECS/ignition.spec
+++ b/SPECS/ignition.spec
@@ -1,77 +1,34 @@
-# Original spec file for 0.28.0 as generated by:
-#     gofed repo2spec --detect github.com/coreos/ignition --commit f7079129b8651ac51dba14c3af65692bb413c1dd  --with-extra --with-build -f
-# With:
-#     gofed/gofed:v1.0.1 docker image
-# Modified by hand for v2.0.0-alpha
-
-# If any of the following macros should be set otherwise,
-# you can wrap any of them with the following conditions:
-# - %%if 0%%{centos} == 7
-# - %%if 0%%{?rhel} == 7
-# - %%if 0%%{?fedora} == 23
-# Or just test for particular distribution:
-# - %%if 0%%{centos}
-# - %%if 0%%{?rhel}
-# - %%if 0%%{?fedora}
-#
-# Be aware, on centos, both %%rhel and %%centos are set. If you want to test
-# rhel specific macros, you can use %%if 0%%{?rhel} && 0%%{?centos} == 0 condition.
-# (Don't forget to replace double percentage symbol with single one in order to apply a condition)
-
-# Not all devel deps exist in Fedora so you can't install the devel rpm
-# so we need to build without devel for now
-# Generate devel rpm
-%global with_devel 0
-# Build project from bundled dependencies
-%global with_bundled 1
-# Build with debug info rpm
-%global with_debug 1
-# Run tests in check section
-%global with_check 1
-# Generate unit-test rpm
-%global with_unit_test 1
-
-%if 0%{?with_debug}
-%global _dwz_low_mem_die_limit 0
+# Generated by go2rpm 1.3
+%if 0%{?fedora}
+%bcond_without check
 %else
-%global debug_package   %{nil}
-%endif
-
-%if ! 0%{?gobuild:1}
-%define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x %{?**};
+# %gocheck isn't currently provided on CentOS/RHEL
+# https://bugzilla.redhat.com/show_bug.cgi?id=1982298
+%bcond_with check
 %endif
 
-# macros for Ignition
-%global provider        github
-%global provider_tld    com
-%global project         coreos
-%global repo            ignition
 # https://github.com/coreos/ignition
-%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo}
-%global import_path     %{provider_prefix}/v2
-# define ldflags, buildflags, testflags here. The ldflags were
-# taken from ./build. We will need to periodically check these
-# for consistency
-%global ldflags ' -X github.com/coreos/ignition/v2/internal/version.Raw=%{version} '
-%global buildflags %nil
-%global testflags %nil
+%global goipath         github.com/coreos/ignition
+%global gomodulesmode   GO111MODULE=on
+Version:                2.13.0
+
+%gometa
+
+%global golicenses      LICENSE
+%global godocs          README.md docs/
 %global dracutlibdir %{_prefix}/lib/dracut
 
 Name:           ignition
-Version:        2.9.0
-Release:        7%{?dist}
+Release:        1%{?dist}
 Summary:        First boot installer and configuration tool
+
+# Upstream license specification: Apache-2.0
 License:        ASL 2.0
-URL:            https://%{provider_prefix}
-Source0:        https://%{provider_prefix}/archive/v%{version}/%{repo}-%{version}.tar.gz
-# Fix AWS probing by using the IMDS token URL to ensure that networking is up
-# https://github.com/coreos/ignition/pull/1161
-Patch0:         internal-providers-aws-probe-the-IMDS-token-URL.patch 
-
-%define gopath %{_datadir}/gocode
-ExclusiveArch: %{go_arches}
-BuildRequires: golang >= 1.10
-# add non golang BuildRequires that weren't detected
+URL:            %{gourl}
+Source0:        %{gosource}
+# https://github.com/coreos/ignition/pull/1307
+Patch0:         luks-volume-reuse.patch
+
 BuildRequires: libblkid-devel
 
 # Requires for 'disks' stage
@@ -85,36 +42,7 @@ Requires: dracut-network
 
 Obsoletes: ignition-dracut < 0.31.0-3
 
-# Main rpm package BuildRequires
-%if ! 0%{?with_bundled}
-# Remaining dependencies not included in main packages (sorted)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/awserr)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/ec2metadata)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/session)
-BuildRequires: golang(github.com/aws/aws-sdk-go/service/s3)
-BuildRequires: golang(github.com/aws/aws-sdk-go/service/s3/s3manager)
-BuildRequires: golang(github.com/coreos/go-semver/semver)
-BuildRequires: golang(github.com/coreos/go-systemd/dbus)
-BuildRequires: golang(github.com/coreos/go-systemd/unit)
-BuildRequires: golang(github.com/coreos/vcontext/json)
-BuildRequires: golang(github.com/coreos/vcontext/path)
-BuildRequires: golang(github.com/coreos/vcontext/report)
-BuildRequires: golang(github.com/coreos/vcontext/tree)
-BuildRequires: golang(github.com/coreos/vcontext/validate)
-BuildRequires: golang(github.com/google/uuid)
-BuildRequires: golang(github.com/pin/tftp)
-BuildRequires: golang(github.com/vincent-petithory/dataurl)
-BuildRequires: golang(github.com/vmware/vmw-guestinfo/rpcvmx)
-BuildRequires: golang(github.com/vmware/vmw-guestinfo/vmcheck)
-BuildRequires: golang(github.com/vmware/vmw-ovflib)
-BuildRequires: golang(golang.org/x/net/http/httpproxy)
-%endif
-
-# Main package Provides (generated with go-mods-to-bundled-provides.py | sort)
-%if 0%{?with_bundled}
+# Generated by `go-mods-to-bundled-provides.py | sort`
 Provides: bundled(golang(cloud.google.com/go)) = 0.58.0
 Provides: bundled(golang(cloud.google.com/go/compute/metadata)) = 0.58.0
 Provides: bundled(golang(cloud.google.com/go/iam)) = 0.58.0
@@ -171,11 +99,11 @@ Provides: bundled(golang(github.com/coreos/go-semver/semver)) = 0.3.0
 Provides: bundled(golang(github.com/coreos/go-systemd/v22/dbus)) = 22.0.0
 Provides: bundled(golang(github.com/coreos/go-systemd/v22/journal)) = 22.0.0
 Provides: bundled(golang(github.com/coreos/go-systemd/v22/unit)) = 22.0.0
-Provides: bundled(golang(github.com/coreos/vcontext/json)) = 0.0.0-20201120045928.gitb0e13dab675c
-Provides: bundled(golang(github.com/coreos/vcontext/path)) = 0.0.0-20201120045928.gitb0e13dab675c
-Provides: bundled(golang(github.com/coreos/vcontext/report)) = 0.0.0-20201120045928.gitb0e13dab675c
-Provides: bundled(golang(github.com/coreos/vcontext/tree)) = 0.0.0-20201120045928.gitb0e13dab675c
-Provides: bundled(golang(github.com/coreos/vcontext/validate)) = 0.0.0-20201120045928.gitb0e13dab675c
+Provides: bundled(golang(github.com/coreos/vcontext/json)) = 0.0.0-20210407161507.git4ee6c745c8bd
+Provides: bundled(golang(github.com/coreos/vcontext/path)) = 0.0.0-20210407161507.git4ee6c745c8bd
+Provides: bundled(golang(github.com/coreos/vcontext/report)) = 0.0.0-20210407161507.git4ee6c745c8bd
+Provides: bundled(golang(github.com/coreos/vcontext/tree)) = 0.0.0-20210407161507.git4ee6c745c8bd
+Provides: bundled(golang(github.com/coreos/vcontext/validate)) = 0.0.0-20210407161507.git4ee6c745c8bd
 Provides: bundled(golang(github.com/google/renameio)) = 0.1.0
 Provides: bundled(golang(github.com/google/uuid)) = 1.1.1
 Provides: bundled(golang(github.com/pin/tftp)) = 2.1.0
@@ -261,8 +189,6 @@ Provides: bundled(golang(go.opencensus.io/trace)) = 0.22.5
 Provides: bundled(golang(go.opencensus.io/trace/internal)) = 0.22.5
 Provides: bundled(golang(go.opencensus.io/trace/propagation)) = 0.22.5
 Provides: bundled(golang(go.opencensus.io/trace/tracestate)) = 0.22.5
-%endif
-
 
 %description
 Ignition is a utility used to manipulate systems during the initramfs.
@@ -272,144 +198,8 @@ boot, Ignition reads its configuration from a source of truth (remote
 URL, network metadata service, hypervisor bridge, etc.) and applies
 the configuration.
 
-############## devel subpackage ##############
-
-%if 0%{?with_devel}
-%package devel
-Summary:       %{summary}
-BuildArch:     noarch
-License:       ASL 2.0
-
-# devel subpackage BuildRequires
-%if 0%{?with_check} && ! 0%{?with_bundled}
-# These buildrequires are only for our tests (check) (sorted)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/awserr)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/ec2metadata)
-BuildRequires: golang(github.com/aws/aws-sdk-go/aws/session)
-BuildRequires: golang(github.com/aws/aws-sdk-go/service/s3)
-BuildRequires: golang(github.com/aws/aws-sdk-go/service/s3/s3manager)
-BuildRequires: golang(github.com/coreos/go-semver/semver)
-BuildRequires: golang(github.com/coreos/go-systemd/dbus)
-BuildRequires: golang(github.com/coreos/go-systemd/unit)
-BuildRequires: golang(github.com/coreos/vcontext/json)
-BuildRequires: golang(github.com/coreos/vcontext/path)
-BuildRequires: golang(github.com/coreos/vcontext/report)
-BuildRequires: golang(github.com/coreos/vcontext/tree)
-BuildRequires: golang(github.com/coreos/vcontext/validate)
-BuildRequires: golang(github.com/google/uuid)
-BuildRequires: golang(github.com/pin/tftp)
-BuildRequires: golang(github.com/vincent-petithory/dataurl)
-BuildRequires: golang(github.com/vmware/vmw-guestinfo/rpcvmx)
-BuildRequires: golang(github.com/vmware/vmw-guestinfo/vmcheck)
-BuildRequires: golang(github.com/vmware/vmw-ovflib)
-BuildRequires: golang(golang.org/x/net/http/httpproxy)
-%endif
-
-# devel subpackage Requires. This is basically the source code from
-# all of the libraries that ignition imports during build. (sorted)
-Requires:      golang(github.com/aws/aws-sdk-go/aws)
-Requires:      golang(github.com/aws/aws-sdk-go/aws/awserr)
-Requires:      golang(github.com/aws/aws-sdk-go/aws/credentials)
-Requires:      golang(github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds)
-Requires:      golang(github.com/aws/aws-sdk-go/aws/ec2metadata)
-Requires:      golang(github.com/aws/aws-sdk-go/aws/session)
-Requires:      golang(github.com/aws/aws-sdk-go/service/s3)
-Requires:      golang(github.com/aws/aws-sdk-go/service/s3/s3manager)
-Requires:      golang(github.com/coreos/go-semver/semver)
-Requires:      golang(github.com/coreos/go-systemd/dbus)
-Requires:      golang(github.com/coreos/go-systemd/unit)
-Requires:      golang(github.com/coreos/vcontext/json)
-Requires:      golang(github.com/coreos/vcontext/path)
-Requires:      golang(github.com/coreos/vcontext/report)
-Requires:      golang(github.com/coreos/vcontext/tree)
-Requires:      golang(github.com/coreos/vcontext/validate)
-Requires:      golang(github.com/google/uuid)
-Requires:      golang(github.com/pin/tftp)
-Requires:      golang(github.com/vincent-petithory/dataurl)
-Requires:      golang(github.com/vmware/vmw-guestinfo/rpcvmx)
-Requires:      golang(github.com/vmware/vmw-guestinfo/vmcheck)
-Requires:      golang(github.com/vmware/vmw-ovflib)
-Requires:      golang(golang.org/x/net/http/httpproxy)
-
-# devel subpackage Provides (sorted)
-Provides:      golang(%{import_path}/config) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/merge) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/shared) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/shared/errors) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/shared/validations) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/translate) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/translate/tests/pkga) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/translate/tests/pkgb) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/util) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/v3_0) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/v3_0/types) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/v3_1_experimental) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/v3_1_experimental/translate) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/v3_1_experimental/types) = %{version}-%{release}
-Provides:      golang(%{import_path}/config/validate) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/files) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/filesystems) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/general) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/partitions) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/proxy) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/regression) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/security) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/negative/timeouts) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/files) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/filesystems) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/general) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/partitions) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/passwd) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/proxy) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/regression) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/security) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/systemd) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/positive/timeouts) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/register) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/registry) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/servers) = %{version}-%{release}
-Provides:      golang(%{import_path}/tests/types) = %{version}-%{release}
-
-%description devel
-%{summary}
-
-This package contains library source intended for
-building other packages which use import path with
-%{import_path} prefix.
-%endif
-
-############## unit-test-devel subpackage ##############
-%if 0%{?with_unit_test} && 0%{?with_devel}
-%package unit-test-devel
-Summary:         Unit tests for %{name} package
-License:         ASL 2.0
-%if 0%{?with_check}
-#Here comes all BuildRequires: PACKAGE the unit tests
-#in %%check section need for running
-%endif
-
-# test subpackage tests code from devel subpackage
-Requires:        %{name}-devel = %{version}-%{release}
-
-%if 0%{?with_check} && ! 0%{?with_bundled}
-BuildRequires: golang(github.com/stretchr/testify/assert)
-%endif
-
-Requires:      golang(github.com/stretchr/testify/assert)
-
-%description unit-test-devel
-%{summary}
-
-This package contains unit tests for project
-providing packages with %{import_path} prefix.
-%endif
-
-
 ############## validate subpackage ##############
+
 %package validate
 
 Summary:  Validation tool for Ignition configs
@@ -428,6 +218,8 @@ the configuration.
 This package contains a tool for validating Ignition configurations.
 
 ############## validate-nonlinux subpackage ##############
+
+%if 0%{?fedora}
 %package validate-nonlinux
 
 Summary:   Validation tool for Ignition configs for macOS and Windows
@@ -441,170 +233,94 @@ This package contains macOS and Windows ignition-validate binaries built
 through cross-compilation. Do not install it. It is only used for
 building binaries to sign by Fedora release engineering and include on the
 Ignition project's Github releases page.
+%endif
 
 %prep
-%autosetup -p1
+%if 0%{?fedora}
+%goprep -k
+%autopatch -p1
+%else
+%forgeautosetup -p1
+%endif
 
 %build
-# Set up PWD as a proper import path for go
-mkdir -p src/%{provider}.%{provider_tld}/%{project}
-ln -s ../../../ src/%{provider_prefix}
-
-export LDFLAGS=%{ldflags}
-# Enable SELinux relabeling
-export LDFLAGS+=' -X github.com/coreos/ignition/v2/internal/distro.selinuxRelabel=true '
-
-# Modules, baby!
-export GO111MODULE=on
-export GOFLAGS='-mod=vendor'
+export LDFLAGS="-X github.com/coreos/ignition/v2/internal/version.Raw=%{version} -X github.com/coreos/ignition/v2/internal/distro.selinuxRelabel=true "
+%if 0%{?rhel} || 0%{?centos}
+# Need uncompressed debug symbols for debuginfo extraction
+LDFLAGS+=' -X github.com/coreos/ignition/v2/internal/distro.writeAuthorizedKeysFragment=false -compressdwarf=false '
+%endif
+export GOFLAGS="-mod=vendor"
 
 echo "Building ignition..."
-%gobuild -o ./ignition %{import_path}/internal
+%gobuild -o ./ignition internal/main.go
 
 echo "Building ignition-validate..."
-%gobuild -o ./ignition-validate %{import_path}/validate
+%gobuild -o ./ignition-validate validate/main.go
 
-echo "Building macOS ignition-validate"
-export GOARCH=amd64
-export GOOS=darwin
-%gobuild -o ./ignition-validate-x86_64-apple-darwin %{import_path}/validate
+%global gocrossbuild go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x
 
-echo "Building Windows ignition-validate"
-export GOARCH=amd64
-export GOOS=windows
-%gobuild -o ./ignition-validate-x86_64-pc-windows-gnu.exe %{import_path}/validate
+%if 0%{?fedora}
+echo "Building macOS ignition-validate..."
+GOARCH=amd64 GOOS=darwin %gocrossbuild -o ./ignition-validate-x86_64-apple-darwin validate/main.go
 
-# Set this back, just in case
-export GOARCH=
-export GOOS=linux
+echo "Building Windows ignition-validate..."
+GOARCH=amd64 GOOS=windows %gocrossbuild -o ./ignition-validate-x86_64-pc-windows-gnu.exe validate/main.go
+%endif
 
 %install
 # dracut modules
 install -d -p %{buildroot}/%{dracutlibdir}/modules.d
-install -d -p %{buildroot}/%{_prefix}/lib/systemd/system
 cp -r dracut/* %{buildroot}/%{dracutlibdir}/modules.d/
-install -m 0644 -t %{buildroot}/%{_prefix}/lib/systemd/system/ systemd/*
 
 # ignition
 install -d -p %{buildroot}%{_bindir}
 install -p -m 0755 ./ignition-validate %{buildroot}%{_bindir}
 
+%if 0%{?fedora}
 install -d -p %{buildroot}%{_datadir}/ignition
 install -p -m 0644 ./ignition-validate-x86_64-apple-darwin %{buildroot}%{_datadir}/ignition
 install -p -m 0644 ./ignition-validate-x86_64-pc-windows-gnu.exe %{buildroot}%{_datadir}/ignition
+%endif
 
 # The ignition binary is only for dracut, and is dangerous to run from
 # the command line.  Install directly into the dracut module dir.
 install -p -m 0755 ./ignition %{buildroot}/%{dracutlibdir}/modules.d/30ignition
 
-# source codes for building projects
-%if 0%{?with_devel}
-install -d -p %{buildroot}/%{gopath}/src/%{import_path}/
-echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list
-# find all *.go but no *_test.go files and generate devel.file-list
-for file in $(find . \( -iname "*.go" -or -iname "*.s" \) \! -iname "*_test.go" | grep -v "vendor") ; do
-    dirprefix=$(dirname $file)
-    install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$dirprefix
-    cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file
-    echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list
-
-    while [ "$dirprefix" != "." ]; do
-        echo "%%dir %%{gopath}/src/%%{import_path}/$dirprefix" >> devel.file-list
-        dirprefix=$(dirname $dirprefix)
-    done
-done
-%endif
-
-# testing files for this project
-%if 0%{?with_unit_test} && 0%{?with_devel}
-install -d -p %{buildroot}/%{gopath}/src/%{import_path}/
-# find all *_test.go files and generate unit-test-devel.file-list
-for file in $(find . -iname "*_test.go" | grep -v "vendor") ; do
-    dirprefix=$(dirname $file)
-    install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$dirprefix
-    cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file
-    echo "%%{gopath}/src/%%{import_path}/$file" >> unit-test-devel.file-list
-
-    while [ "$dirprefix" != "." ]; do
-        echo "%%dir %%{gopath}/src/%%{import_path}/$dirprefix" >> devel.file-list
-        dirprefix=$(dirname $dirprefix)
-    done
-done
-%endif
-
-%if 0%{?with_devel}
-sort -u -o devel.file-list devel.file-list
-%endif
-
+%if %{with check}
 %check
-%if 0%{?with_check} && 0%{?with_unit_test} && 0%{?with_devel}
-%if ! 0%{?with_bundled}
-export GOPATH=%{buildroot}/%{gopath}:%{gopath}
-%else
-# Since we aren't packaging up the vendor directory we need to link
-# back to it somehow. Hack it up so that we can add the vendor
-# directory from BUILD dir as a gopath to be searched when executing
-# tests from the BUILDROOT dir.
-ln -s ./ ./vendor/src # ./vendor/src -> ./vendor
-
-export GOPATH=%{buildroot}/%{gopath}:$(pwd)/vendor:%{gopath}
-%endif
-
-%if ! 0%{?gotest:1}
-%global gotest go test
+# Exclude the blackbox tests
+%gocheck -t tests
 %endif
 
-%gotest %{import_path}/config
-%gotest %{import_path}/config/merge
-%gotest %{import_path}/config/translate
-%gotest %{import_path}/config/v3_0
-%gotest %{import_path}/config/v3_0/types
-%gotest %{import_path}/config/v3_1
-%gotest %{import_path}/config/v3_1/types
-%gotest %{import_path}/config/v3_2
-%gotest %{import_path}/config/v3_2/types
-%gotest %{import_path}/config/validate
-%gotest %{import_path}/internal/exec/stages/files
-%gotest %{import_path}/internal/exec/util
-%gotest %{import_path}/internal/registry
-%gotest %{import_path}/internal/util
-%gotest %{import_path}/tests
-%endif
-
-#define license tag if not already defined
-%{!?_licensedir:%global license %doc}
-
 %files
-%license LICENSE
-%doc README.md docs/
+%license %{golicenses}
+%doc %{godocs}
 %{dracutlibdir}/modules.d/*
-%{_prefix}/lib/systemd/system/*.service
 
 %files validate
 %doc README.md
-%license LICENSE
-%{_bindir}/%{name}-validate
+%license %{golicenses}
+%{_bindir}/ignition-validate
 
+%if 0%{?fedora}
 %files validate-nonlinux
-%license LICENSE
+%license %{golicenses}
 %dir %{_datadir}/ignition
 %{_datadir}/ignition/ignition-validate-x86_64-apple-darwin
 %{_datadir}/ignition/ignition-validate-x86_64-pc-windows-gnu.exe
-
-%if 0%{?with_devel}
-%files devel -f devel.file-list
-%license LICENSE
-%doc README.md code-of-conduct.md CONTRIBUTING.md
-%dir %{gopath}/src/%{provider}.%{provider_tld}/%{project}
-%endif
-
-%if 0%{?with_unit_test} && 0%{?with_devel}
-%files unit-test-devel -f unit-test-devel.file-list
-%license LICENSE
-%doc README.md code-of-conduct.md CONTRIBUTING.md
 %endif
 
 %changelog
+* Thu Jan 20 2022 Benjamin Gilbert <bgilbert@redhat.com> - 2.13.0-1
+- New release
+- Fix LUKS volume reuse
+- Avoid double patch application
+
+* Thu Sep 16 2021 Sohan Kunkerkar <skunkerk@redhat.com> - 2.12.0-1
+- Suppress hardcoded library path warning
+- Fix go-mods-to-bundled-provides script to parse correct rpm version
+- Import specfile from Fedora
+
 * Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.9.0-7
 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
   Related: rhbz#1991688
@@ -928,4 +644,3 @@ export GOPATH=%{buildroot}/%{gopath}:$(pwd)/vendor:%{gopath}
 
 * Thu Jun 21 2018 Dusty Mabe <dusty@dustymabe.com> - 0.26.0-0.1.git7610725
 - First package for Fedora
-