-
-
Notifications
You must be signed in to change notification settings - Fork 14.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
acme-client: 0.1.16 -> 0.2.4 #71853
acme-client: 0.1.16 -> 0.2.4 #71853
Conversation
The upstream acme-client that used to be at [1] has now been integrated into OpenBSD, and the portable version that it links to at [2] is marked as unmaintained. However, letsencrypt.org links to [3] for a portable version, and indeed, that repository contains a version that has recent activity, so I switched over to that. It is hard to tell what the difference is between the OpenBSD version and what is on Github, and even if that would be easy, there are a lot of Linux-specific changes. This program is dealing with certificates, so I feel it is important to at least check that thare are no obviously unintended differences between the previous version and the new, but I don't know of a good way of doing that at this point. I will continue to investigate before I open a pull request. [1]: https://kristaps.bsd.lv/acme-client/ [2]: https://github.com/kristapsdz/acme-client-portable [3]: https://github.com/graywolf/acme-client-portable
The new source does not include a configure script in the repository, but we can generate it with automake. Also, the new acme-client-portable has an OpenSSL compatibility layer, but that actually breaks building against LibreSSL. Avoid this issue by patching the compatibility layer to be less eager to define things when linking against LibreSSL. I will also submit a pull request for that upstream. I don't expect this to work on Darwin, and the current package suggests it does, but if the upstream (portable) version is no longer maintained, for Darwin, perhaps we should just drop support for it. But maybe it will just work, CI or somebody with a Darwin system will have to try.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work @ruuda . I was not aware of acme-client-portable. I had been considering proposing deleting this from nixpkgs..
My LibreSSL compatibility patch has been merged upstream into acme-client-portable, and version 0.2.4 that includes it has been released, so we can remove the patch here.
My compatibility patch has been merged upstream, and version 0.2.4 has been released that includes it, so I updated this PR to drop the patch and use 0.2.4 instead. |
Here is a diffstat of the changes from 0.1.16 to 0.2.4: Diffstat
The diff itself is rather large, so I only skimmed through it superficially. A few notable things:
|
Is there anything I can do to help move this forward? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for refreshing this package @ruuda
I'm glad to learn there is a fork maintaining the portable variation for Linux systems
* Replace the manual autoreconf invocation with autoreconfHook. * Remove DEFAULT_CA_FILE, which no longer affects the build.
Thanks for the review @c0bw3b, that was very educational. I addressed your comments, please take another look. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* acme-client: 0.1.16 -> 0.2.3 (NixOS#71853) The upstream acme-client that used to be at [1] has now been integrated into OpenBSD, and the portable version that it links to at [2] is marked as unmaintained. However, letsencrypt.org links to [3] for a portable version, and indeed, that repository contains a version that has recent activity, so I switched over to that. It is hard to tell what the difference is between the OpenBSD version and what is on Github, and even if that would be easy, there are a lot of Linux-specific changes. This program is dealing with certificates, so I feel it is important to at least check that thare are no obviously unintended differences between the previous version and the new, but I don't know of a good way of doing that at this point. I will continue to investigate before I open a pull request. [1]: https://kristaps.bsd.lv/acme-client/ [2]: https://github.com/kristapsdz/acme-client-portable [3]: https://github.com/graywolf/acme-client-portable * acme-client: fix Linux build of new upstream The new source does not include a configure script in the repository, but we can generate it with automake. Also, the new acme-client-portable has an OpenSSL compatibility layer, but that actually breaks building against LibreSSL. Avoid this issue by patching the compatibility layer to be less eager to define things when linking against LibreSSL. I will also submit a pull request for that upstream. I don't expect this to work on Darwin, and the current package suggests it does, but if the upstream (portable) version is no longer maintained, for Darwin, perhaps we should just drop support for it. But maybe it will just work, CI or somebody with a Darwin system will have to try. * acme-client: 0.2.3 -> 0.2.4 My LibreSSL compatibility patch has been merged upstream into acme-client-portable, and version 0.2.4 that includes it has been released, so we can remove the patch here. * acme-client: address review feedback * Replace the manual autoreconf invocation with autoreconfHook. * Remove DEFAULT_CA_FILE, which no longer affects the build. (cherry picked from commit a7b49ef)
Motivation for this change
A lot has happened since 0.1.16 was packaged. The old upstream website now says:
The linked repository is archived though, and its readme says:
Fortunately, letsencrypt.org links to https://github.com/graywolf/acme-client-portable, which does appear to be a maintained portable version of acme-client, so I took that repository as the new upstream.
It looks like that new acme-client-portable has been modified to build against OpenSSL, but that actually broke LibreSSL compatibility. I included a small patch to restore compatibility. I also submitted that patch upstream.
The new package produces a binary that runs, but I have not tested it extensively. Also, due to the changed upstream, and the portable version being a modified version of the OpenBSD version, it is hard to tell what has changed because of the version bump. I’ll try and see if I can diff the code from the tarballs.
Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
)nix path-info -S
before and after)Notify maintainers
cc @pmahoney