<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>The Wombelix Post - Packages</title><link href="https://dominik.wombacher.cc/" rel="alternate"/><link href="/feeds/tag_packages.atom.xml" rel="self"/><id>https://dominik.wombacher.cc/</id><updated>2024-12-30T00:00:00+01:00</updated><entry><title>Fedora / EPEL updates for aws-c-io and aws-c-http, new package aws-c-s3</title><link href="https://dominik.wombacher.cc/posts/fedora-epel-updates-for-aws-c-io-and-aws-c-http-new-package-aws-c-s3.html" rel="alternate"/><published>2024-12-30T00:00:00+01:00</published><updated>2024-12-30T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2024-12-30:/posts/fedora-epel-updates-for-aws-c-io-and-aws-c-http-new-package-aws-c-s3.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;As mentioned in my &lt;a class="reference external" href="https://dominik.wombacher.cc/posts/fedora-and-epel-updates-of-various-aws-c-lib-packages.html"&gt;last Fedora / EPEL packaging post&lt;/a&gt;,
updats for &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-io"&gt;aws-c-io&lt;/a&gt; and
&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-http"&gt;aws-c-http&lt;/a&gt; are coming.
They now arrived in &lt;code&gt;Rawhide&lt;/code&gt; and all Stable Fedora branches as well as EPEL8  ... &lt;a class="read-more" href="/posts/fedora-epel-updates-for-aws-c-io-and-aws-c-http-new-package-aws-c-s3.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;As mentioned in my &lt;a class="reference external" href="https://dominik.wombacher.cc/posts/fedora-and-epel-updates-of-various-aws-c-lib-packages.html"&gt;last Fedora / EPEL packaging post&lt;/a&gt;,
updats for &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-io"&gt;aws-c-io&lt;/a&gt; and
&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-http"&gt;aws-c-http&lt;/a&gt; are coming.
They now arrived in &lt;code&gt;Rawhide&lt;/code&gt; and all Stable Fedora branches as well as EPEL8 and EPEL9.&lt;/p&gt;
&lt;p&gt;Since today, the new package &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-s3"&gt;aws-c-s3&lt;/a&gt; is available in Fedora and EPEL too.&lt;/p&gt;
&lt;p&gt;I plan to package &lt;code&gt;aws-c-iot&lt;/code&gt;, &lt;code&gt;aws-crt-ffi&lt;/code&gt; and &lt;code&gt;aws-lc&lt;/code&gt; for Fedora and EPEL in the next couple of months.&lt;/p&gt;
&lt;p&gt;In addition, I will build all current EPEL9 packages I maintain soon for EPEL10 as well, stay tuned.&lt;/p&gt;
</content><category term="Linux"/><category term="AWS"/><category term="Fedora"/><category term="EPEL"/><category term="Packages"/><category term="Packaging"/></entry><entry><title>Fedora and EPEL updates for various AWS C lib packages</title><link href="https://dominik.wombacher.cc/posts/fedora-and-epel-updates-of-various-aws-c-lib-packages.html" rel="alternate"/><published>2024-11-25T00:00:00+01:00</published><updated>2024-11-25T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2024-11-25:/posts/fedora-and-epel-updates-of-various-aws-c-lib-packages.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Among the &lt;a class="reference external" href="https://src.fedoraproject.org/user/wombelix/projects"&gt;Fedora and EPEL packages I maintain&lt;/a&gt;
are 11 AWS C lib packages. I wrote some time ago
&lt;a class="reference external" href="https://dominik.wombacher.cc/posts/aws-c-libraries-the-unknown-heroes-behind-aws-tools-and-the-adventure-to-package-them.html"&gt;about there function and challenge to package them&lt;/a&gt;.
Today 9 of  ... &lt;a class="read-more" href="/posts/fedora-and-epel-updates-of-various-aws-c-lib-packages.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Among the &lt;a class="reference external" href="https://src.fedoraproject.org/user/wombelix/projects"&gt;Fedora and EPEL packages I maintain&lt;/a&gt;
are 11 AWS C lib packages. I wrote some time ago
&lt;a class="reference external" href="https://dominik.wombacher.cc/posts/aws-c-libraries-the-unknown-heroes-behind-aws-tools-and-the-adventure-to-package-them.html"&gt;about there function and challenge to package them&lt;/a&gt;.
Today 9 of those packages received updates to the latest available release. 2 are pending because of dependencies,
but I should get them through the door within the next 2-3 weeks as well.&lt;/p&gt;
&lt;p&gt;The majority went smoothly, no breaking changes, minor bug fixes, sometimes a patch that had to be updated.
But &lt;code&gt;aws-c-cal&lt;/code&gt; required a bit more work. Whenever tests are available, I run them as part of the package build.
And they started to fail when I wanted to update the package:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
98% tests passed, 3 tests failed out of 137
Total Test time (real) =   3.58 sec
The following tests FAILED:
    66 - rsa_signing_roundtrip_pkcs1_sha1_from_user (Failed)
    71 - rsa_verify_signing_pkcs1_sha1 (Failed)
    77 - rsa_signing_mismatch_pkcs1_sha1 (Failed)
Errors while running CTest

&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;sha1&lt;/code&gt; in the test name lead me pretty fast to the problem.
In version &lt;code&gt;0.8.1&lt;/code&gt; there was some &lt;code&gt;SHA1&lt;/code&gt; related code and tests added:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/awslabs/aws-c-cal/releases/tag/v0.8.1"&gt;https://github.com/awslabs/aws-c-cal/releases/tag/v0.8.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/awslabs/aws-c-cal/pull/201"&gt;https://github.com/awslabs/aws-c-cal/pull/201&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can only assume it's for backward compatibility reasons. The thing is, SHA1 is distrusted in
&lt;a class="reference external" href="https://fedoraproject.org/wiki/Changes/OpenSSLDistrustSHA1SigVer"&gt;Fedora 41&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20240928212848/https://fedoraproject.org/wiki/Changes/OpenSSLDistrustSHA1SigVer"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2024.11.25-154256/https://fedoraproject.org/wiki/Changes/OpenSSLDistrustSHA1SigVer"&gt;[2]&lt;/a&gt;)
and &lt;a class="reference external" href="https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;RHEL 9&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20240717125913/https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2024.07.17-125916/https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;[2]&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The code provides additional functionality and will not be called on systems that don't use &lt;code&gt;SHA1&lt;/code&gt; anymore.
So the fastest way forward was to patch out the three failing tests and call it a day.&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;index 346e38a..e3966cb 100644&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- a/tests/CMakeLists.txt&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ b/tests/CMakeLists.txt&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -77,18 +77,15 &amp;#64;&amp;#64; add_test_case(rsa_encryption_roundtrip_oaep_sha256_from_user)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_encryption_roundtrip_oaep_sha512_from_user)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_signing_roundtrip_pkcs1_sha256_from_user)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_signing_roundtrip_pss_sha256_from_user)&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-add_test_case(rsa_signing_roundtrip_pkcs1_sha1_from_user)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_getters)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_private_pkcs1_der_parsing)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_public_pkcs1_der_parsing)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_verify_signing_pkcs1_sha256)&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-add_test_case(rsa_verify_signing_pkcs1_sha1)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_verify_signing_pss_sha256)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_decrypt_pkcs1)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_decrypt_oaep256)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_decrypt_oaep512)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(rsa_signing_mismatch_pkcs1_sha256)&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-add_test_case(rsa_signing_mismatch_pkcs1_sha1)&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;add_test_case(aes_cbc_NIST_CBCGFSbox256_case_1)&lt;span class="pygments-w"&gt;
&lt;/span&gt;add_test_case(aes_cbc_NIST_CBCVarKey256_case_254)&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;An Overview of all updates today, available in &lt;code&gt;Rawhide&lt;/code&gt; (F42) latest tomorrow.
Around one week till they arrive in all stable Fedora and EPEL branches.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;aws-c-cal, &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-cal/pull-request/13"&gt;0.7.4 to 0.8.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-mqtt, &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-mqtt/pull-request/1"&gt;0.10.6 to 0.11.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-checksums, &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-checksums/pull-request/2"&gt;0.1.20 to 0.2.2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-auth, &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-auth/pull-request/1"&gt;0.7.31 to 0.8.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;s2n-tls, &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/s2n-tls/pull-request/6"&gt;1.5.3 to 1.5.9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-sdkutils &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-sdkutils/pull-request/3"&gt;0.1.19 to 0.2.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-event-stream &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-event-stream/pull-request/2"&gt;0.4.3 to 0.5.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-compression &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-compression/pull-request/2"&gt;0.2.19 to 0.3.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aws-c-common &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-common/pull-request/14"&gt;0.9.28 to 0.10.3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pending are the updates for &lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-io/pull-request/6"&gt;aws-c-io&lt;/a&gt; and
&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-http/pull-request/3"&gt;aws-c-http&lt;/a&gt;. For &lt;code&gt;Rawhide&lt;/code&gt; that's
a matter of a couple days. Stable Fedora and EPEL branches going to take a bit longer, probably 2-3 weeks.&lt;/p&gt;
</content><category term="Linux"/><category term="AWS"/><category term="Fedora"/><category term="EPEL"/><category term="Packages"/><category term="Packaging"/></entry><entry><title>AWS C libraries, the unknown heroes behind AWS tools and the adventure to package them</title><link href="https://dominik.wombacher.cc/posts/aws-c-libraries-the-unknown-heroes-behind-aws-tools-and-the-adventure-to-package-them.html" rel="alternate"/><published>2024-07-10T00:00:00+02:00</published><updated>2024-07-10T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2024-07-10:/posts/aws-c-libraries-the-unknown-heroes-behind-aws-tools-and-the-adventure-to-package-them.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;It all started with an orphaned Fedora package called &lt;strong&gt;aws-php-sdk3&lt;/strong&gt;. I was interested to adopt
and update it. I learned quickly that I have to take a look in the  ... &lt;a class="read-more" href="/posts/aws-c-libraries-the-unknown-heroes-behind-aws-tools-and-the-adventure-to-package-them.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;It all started with an orphaned Fedora package called &lt;strong&gt;aws-php-sdk3&lt;/strong&gt;. I was interested to adopt
and update it. I learned quickly that I have to take a look in the different dependencies too.
I opened a can of worms, there were a few obvious dependencies and then some more hidden.&lt;/p&gt;
&lt;p&gt;Like &lt;strong&gt;aws-php-crt&lt;/strong&gt;, which isn't packaged for Fedora yet and upstream builds it in a way
that it bundles a couple of AWS C libraries. As I learned in the meantime, bundling
libraries or modules has to be avoided whenever possible based on the Fedora and EPEL
packaging guidelines. You might get an exception but you need a good reason for it.&lt;/p&gt;
&lt;p&gt;So I dig deeper and learned that there were some activities two years ago but
except one of them, nothing went through and made it into Fedora.
I spend a couple of days to understand what dependencies each library has.
In which order do I need to build and package them to make them work.
What was the state two years ago, what can be re-used.&lt;/p&gt;
&lt;p&gt;After this exercise I had a full plan written down and started to create the packages
in a &lt;a class="reference external" href="https://copr.fedorainfracloud.org/coprs/wombelix/aws-c-libs/"&gt;copr project&lt;/a&gt;.
That way I can satisfy the dependencies during development.
Even if the packages are not in Fedora yet.&lt;/p&gt;
&lt;p&gt;I learned that architecture &lt;em&gt;s390x&lt;/em&gt;
&lt;a class="reference external" href="https://github.com/awslabs/aws-c-common/issues/1111"&gt;isn't supported by upstream&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20240717124939/https://github.com/awslabs/aws-c-common/issues/1111"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2024.07.17-125012/https://github.com/awslabs/aws-c-common/issues/1111"&gt;[2]&lt;/a&gt;)
and there is also no plan to change that. So this means every package needs an Arch Exception.
In addition to that some packages had unit tests that require an internet connection.
That's not given when Fedora packages are build, so I had to create patches so disable
this kind of tests. Even if this means that the test coverage drops slightly.
It's still better to run the majority of tests during package build to discover issues,
instead of deactivating all of them.&lt;/p&gt;
&lt;p&gt;With &lt;strong&gt;s2n-tls&lt;/strong&gt; I hit an interesting problem that the tests were failing only on RHEL 9.
Building on different Fedora versions and RHEL 8 was working without a problem.
&lt;a class="reference external" href="https://github.com/aws/s2n-tls/issues/4541"&gt;I reported the bug upstream&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20240717125409/https://github.com/aws/s2n-tls/issues/4541"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2024.07.17-125410/https://github.com/aws/s2n-tls/issues/4541"&gt;[2]&lt;/a&gt;)
and was at first unsure what makes RHEL 9 unique and causes the problems.
After a bit of thinking and some feedback from the maintainers,
I remembered that
&lt;a class="reference external" href="https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;Red Hat announced a while back to deprecate SHA1 in their openSSL package&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20240717125913/https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2024.07.17-125916/https://www.redhat.com/en/blog/rhel-security-sha-1-package-signatures-distrusted-rhel-9"&gt;[2]&lt;/a&gt;).
So I did some research and came pretty close but couldn't track
it down in the s2n-tls source. A maintainer provided a patch to verify my assumption.
And indeed, the problem is that they use SHA1 certs in the unit tests. I have to
admit it made me proud to help to identify this problem. I think they going to
provide a fix in an upcoming release and then I can continue to package it for EPEL 9 :)&lt;/p&gt;
&lt;p&gt;Right now I'm at roughtly 1/3, I packaged:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-common"&gt;aws-c-common&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-cal"&gt;aws-c-cal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-sdkutils"&gt;aws-c-sdkutils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-c-compression"&gt;aws-c-compression&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/aws-checksums"&gt;aws-checksums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://src.fedoraproject.org/rpms/s2n-tls"&gt;s2n-tls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and they are at least available in Fedora &lt;em&gt;rawhide&lt;/em&gt;.
Most of them are already in all stable Fedora and EPEL branches.&lt;/p&gt;
&lt;p&gt;Publishing happens with some delay because a new package needs ~7-8 days to make it
into the stable repository. Which means, you start with one package were all other depend on.
You go through the package review process, submit it, wait for a week.
If you have other packages ready now. You do the same, you submit and wait.
And so on and so on. Which means it takes overall around two to three months,
depending on how fast the package reviews went through, till all AWS C libs are available.&lt;/p&gt;
&lt;p&gt;Yes, there is the concept of &lt;a class="reference external" href="https://fedoraproject.org/wiki/Bodhi#Karma"&gt;Karma&lt;/a&gt;,
but let's assume you not always find people that can invest the time.
So the above assumption is based on the &amp;quot;worst case&amp;quot;.&lt;/p&gt;
&lt;p&gt;As you see, I was dragged away from my initial goal, packaging and keeping &lt;strong&gt;aws-php-sdk3&lt;/strong&gt; alive,
into a massive amount of groundwork. But as soon all AWS C libs are packaged and available,
it opens the door for a lot of other AWS tools to be properly packaged without bundled libraries.&lt;/p&gt;
&lt;p&gt;I'm really looking forward to that!&lt;/p&gt;
</content><category term="Linux"/><category term="AWS"/><category term="Fedora"/><category term="EPEL"/><category term="Packages"/><category term="Packaging"/></entry><entry><title>My first approved Fedora Package, yippie! ec2-instance-connect</title><link href="https://dominik.wombacher.cc/posts/my-first-approved-fedora-package-yippie-ec2-instance-connect.html" rel="alternate"/><published>2024-05-19T00:00:00+02:00</published><updated>2024-05-19T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2024-05-19:/posts/my-first-approved-fedora-package-yippie-ec2-instance-connect.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;A while ago I was asked if I want to package &lt;strong&gt;ec2-instance-connect&lt;/strong&gt; for Fedora and eventually EPEL.
More specific &lt;em&gt;"with Packit"&lt;/em&gt;, which did send me down a weird path as  ... &lt;a class="read-more" href="/posts/my-first-approved-fedora-package-yippie-ec2-instance-connect.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;A while ago I was asked if I want to package &lt;strong&gt;ec2-instance-connect&lt;/strong&gt; for Fedora and eventually EPEL.
More specific &lt;em&gt;&amp;quot;with Packit&amp;quot;&lt;/em&gt;, which did send me down a weird path as I explain
in more detail in &lt;cite&gt;Fedoda dist-git packit onboarding &amp;lt;{filename}/posts/2024/fedora-dist-git-packit-onboarding_en.rst&amp;gt;&lt;/cite&gt;.
After learning what Packit can and can't do for me, I started to make good progress ;)&lt;/p&gt;
&lt;p&gt;I spend quite some time to learn about Fedora Packaging. The does and don't when
writing spec files. How package testing, reviewing and publishing works.
More about this in a later Blog, now I focus on my first approved package.&lt;/p&gt;
&lt;p&gt;I was lucky that my Reviewer was Neal Gompa. People describe Neal with &lt;em&gt;&amp;quot;he is just everywhere&amp;quot;&lt;/em&gt;.
And that's true in the most positive way. It's nearly impossible to be active in
the open source world without crossing paths :) He has a lot of experience and is a great mentor.
Receiving feedback from him is always a great opportunity to learn.&lt;/p&gt;
&lt;p&gt;First I thought &lt;a class="reference external" href="https://github.com/aws/aws-ec2-instance-connect-config"&gt;ec2-instance-connect&lt;/a&gt;
will be an easy package, great for the first one. Technically it's just a handful of
files and a systemd unit. How hard can that be? Spoiler: Very hard.&lt;/p&gt;
&lt;p&gt;The challenge is the way how ec2-instance-connect works.
It adjusts the authcommand from sshd so that, by default, all authentication attempts go through it.
This is fine for brand new systems but becomes a problem when you deploy
on existing systems with a already customized config. Or if someone wants to apply
a custom config after the initial deployment and ec2-instance-connect installation.&lt;/p&gt;
&lt;p&gt;So there are a lot of ways to break ssh login to the system which is discussed on
&lt;a class="reference external" href="https://github.com/aws/aws-ec2-instance-connect-config/issues/19"&gt;GitHub&lt;/a&gt;.
But keeping this fact aside, there is obviously demand for a
&lt;a class="reference external" href="https://github.com/aws/aws-ec2-instance-connect-config/issues/49"&gt;Fedora and EPEL package&lt;/a&gt;.
So I was encouraged to improve the user experience and make it available :)&lt;/p&gt;
&lt;p&gt;Upstream has a &lt;a class="reference external" href="https://github.com/aws/aws-ec2-instance-connect-config/blob/master/rpmsrc/SPECS/generic.spec"&gt;generic spec file&lt;/a&gt;
so this became my starting point. But I had to learn quickly that shell snippets
and nested if/else statements are not what is expected from a high quality spec
file in Fedora. So I had to find a way to replace the pretty unique logic that
was implemented with rpm macros and in a way that aligns with Fedora packaging
guidelines. The result is a good compromise, not perfect but it gives users
flexibility and reduces the risk of problems.&lt;/p&gt;
&lt;p&gt;So after a couple iterations and very valuable feedback from Neal, he approved
my request and I was good to bring my first package into Fedora :)
If you are interested in the details, feel free to take a look at
the &lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=2274150"&gt;Fedora Review Request&lt;/a&gt; ticket.&lt;/p&gt;
&lt;p&gt;In the meantime the package is available in all Fedora and EPEL repositories. It
is also on it's way to be pre-installed in Fedora Cloud images in future :D&lt;/p&gt;
&lt;p&gt;It was an awesome experience and I can't wait to work on more packages!&lt;/p&gt;
</content><category term="Linux"/><category term="AWS"/><category term="Fedora"/><category term="EPEL"/><category term="Packages"/><category term="Packaging"/></entry><entry><title>Fedora dist-git Packit onboarding</title><link href="https://dominik.wombacher.cc/posts/fedora-dist-git-packit-onboarding.html" rel="alternate"/><published>2024-05-05T00:00:00+02:00</published><updated>2024-05-05T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2024-05-05:/posts/fedora-dist-git-packit-onboarding.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Packit, oh my god, that's a tool and service that gave
me a pretty hard time to understand how it works.
Not necessarily because it's a complicated tool.
But it  ... &lt;a class="read-more" href="/posts/fedora-dist-git-packit-onboarding.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2024 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Packit, oh my god, that's a tool and service that gave
me a pretty hard time to understand how it works.
Not necessarily because it's a complicated tool.
But it expects a good portion of background knowledge how
things work in Fedora and the specific wording.
If you are new and make your first steps, it becomes
very challenging and frustrating to get started.&lt;/p&gt;
&lt;p&gt;So first, what's &lt;a class="reference external" href="https://packit.dev"&gt;Packit&lt;/a&gt;?
Very simplified: Packit get triggered
when a new version of a software is released. It can then trigger
package builds. Or create PRs in Fedora packages to update them.
The main goal is to reduce the work maintainer have to keep Fedora
packages up to date.&lt;/p&gt;
&lt;p&gt;My first false assumption was that Packit always requires
to have a configuration in the repository of the upstream project.
Another mistake was that Packit will help me to test and build packages
during development.
You can probably imagine that those two misunderstandings lead to a
good portion of confusion and wasted time.&lt;/p&gt;
&lt;p&gt;So how to benefit from Packit if you don't control the upstream project
and they are not interested to onboard their repository to the Packit Service?
Fedora runs &lt;a class="reference external" href="https://www.release-monitoring.org"&gt;Release Monitoring&lt;/a&gt;
a service that checks for new releases in configured projects on a regular basis.
If there is one, it will publish a message into Fedora Messaging. A RabbitMQ based
messaging service that allows other services to react on events. Packit will pick up
such an event and check if there is a packit configuration file in the &lt;a class="reference external" href="https://src.fedoraproject.org"&gt;dist-git&lt;/a&gt;
package repo. If that's the case, Packit will execute the configured actions.&lt;/p&gt;
&lt;p&gt;So for example, Packit creates a PR in the package repo.
The PR bumps the package version and adds a changelog entry.
Package maintainer can add additional changes
to the PR if necessary and upload the new source file into the &lt;a class="reference external" href="https://fedoraproject.org/wiki/Package_Source_Control#Lookaside_Cache"&gt;lookaside cache&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Then your job boils down to merge the PR into the rawhide branch.
If correctly configured, Packit will pick up this event,
remember everything in the Fedora world becomes an event in the Fedora Messaging bus,
and trigger the build. If that build is successful the update is triggered
and the package becomes available in rawhide.
Next, if you have other branches you want to make the package available,
you merge it and then again Packit picks up the event, starts a build and the update.&lt;/p&gt;
&lt;p&gt;This is a massive time saver already, even if you still have a couple of steps to do.
That's the workflow I prefer, but you can of course adjust it and
let Packit do even more in an automated way. The decision is up to you :)&lt;/p&gt;
&lt;p&gt;What I explained here is just one part of what Packit can do. I encourage you to
explore the project and &lt;a class="reference external" href="https://packit.dev/docs"&gt;documentation&lt;/a&gt; to dive deeper.&lt;/p&gt;
&lt;p&gt;For me it was a massive &amp;quot;AHA&amp;quot; moment when I had my first Packit config working and saw the magic happen :)&lt;/p&gt;
&lt;p&gt;Following the &lt;code&gt;.packit.yaml&lt;/code&gt; file I prepared for the first Fedora package I'm going to release:&lt;/p&gt;
&lt;pre class="code yaml literal-block"&gt;
&lt;span class="pygments-c1"&gt;# See the documentation for more information:&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-c1"&gt;# https://packit.dev/docs/configuration/&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-nt"&gt;upstream_project_url&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;https://github.com/aws/aws-ec2-instance-connect-config&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-nt"&gt;upstream_package_name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;aws-ec2-instance-connect-config&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-nt"&gt;downstream_package_name&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;ec2-instance-connect&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-nt"&gt;jobs&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;job&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;pull_from_upstream&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;trigger&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;release&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;# Keeping dist-git branches non-divergent&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;# Requirs manual local merge from rawhide to stable release branches&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;# https://packit.dev/docs/fedora-releases-guide#keeping-dist-git-branches-non-divergent&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;dist_git_branches&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;fedora-rawhide&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;job&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;koji_build&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;trigger&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;commit&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;allowed_pr_authors&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;packit&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_admins&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_committers&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;'&amp;#64;cloud-sig'&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-c1"&gt;# string with &amp;#64; needs quotes to be valid yaml&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;allowed_committers&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_admins&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_committers&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;'&amp;#64;cloud-sig'&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-c1"&gt;# string with &amp;#64; needs quotes to be valid yaml&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;dist_git_branches&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;fedora-all&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;epel-all&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nt"&gt;job&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;bodhi_update&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;trigger&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;commit&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;allowed_builders&lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;packit&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_admins&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;all_committers&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s"&gt;'&amp;#64;cloud-sig'&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-c1"&gt;# string with &amp;#64; needs quotes to be valid yaml&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-nt"&gt;dist_git_branches&lt;/span&gt;&lt;span class="pygments-p"&gt;:&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;fedora-branched&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-c1"&gt;# rawhide updates are created automatically&lt;/span&gt;&lt;span class="pygments-w"&gt;
    &lt;/span&gt;&lt;span class="pygments-p-Indicator"&gt;-&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-l-Scalar-Plain"&gt;epel-all&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
</content><category term="Linux"/><category term="Packit"/><category term="Fedora"/><category term="Packages"/><category term="Packaging"/><category term="dist-git"/></entry></feed>