Skip to content
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

drop autotools support and dependencies requiring it #69

Closed
wants to merge 11 commits into from

Conversation

vszakats
Copy link
Member

@vszakats vszakats commented Apr 2, 2024

remove support for:

  • gsasl: requires autotools.

  • libidn2: requires autotools.

  • wolfssl: cmake support lagging far behind autotools and not getting
    features/updates. autotools is complicated to tune for curl/libssh2.
    wolfssl support in libssh2 has been broken for a year with not much
    interest or a fix in sight.
    wolfSSL: libssh2_session_handshake failed: -12/-44 DECRYPT/ENCRYPT libssh2/libssh2#1020
    wolfssl-based CI tests are kept disabled to make the build pass.

  • wolfssh: requires autotools and wolfssl.

  • autotools build method for: curl, libssh2, libressl.
    curl's CMake support is now first class (with few PRs pending).
    libssh2 got its CMake overhauled and on par with autotools.
    Both support unity builds. LibreSSL already had pretty good
    CMake support and with some kinks fixed recently, it's now
    working without any issue.

  • CW_DEV_CROSSMAKE_REPRO dev/debug build option.
    I used this to sync up cmake/autotools/gnumake builds in the
    past few years. This process was completed with success, allowing
    to drop gnumake completely and making autotools redundant.
    From time to time it's useful to compare builds made with different
    build tools, but the benefits aren't high enough to justify maintaining
    autotools as a build tool here just for that.

Autotools has been broken for certain configs in curl-for-win since
autumn, after introducing Linux MUSL builds. After many weeks of
trying, fixing it seems impossible. Possibly because of libtool. Besides
this specific issue, autotools turned out to be inflexible, slow,
unnecessarily complex, buggy, opaque, with practically unreadable
source code, also difficult to edit, and with no clear "best practices"
to follow.

Autotools support also seems to be coming historically with external
runnable code bundled into source tarballs, making reproducibility
difficult, and sneaking in backdoors easy. See CVE-2024-3094.

Autotools is also slow even compared to CMake. It doesn't support
single-pass builds for shared/static libs, and has other limitations
which appear historical and without any hope/desire to ever change.
Windows support is also pretty much accidental, and by being based
on arcane not-even-POSIX shell/utilities, it's not natively supporting
it anyway and never will.

This also means that curl-for-win builds will not attempt to support
dependencies that require autotools. But, this also means that this
may give way for supporting new build tools in the future.

autotools has been broken for certain platform since last autumn.
This seems to be due to libtool limitations and generally being
inflexible, slow and almost impossible to touch in upstream projects.
autotools support also seems to require upstream to bundle runnable
external code into source tarballs, making reproducibility hard,
and sneaking in backdoors easy.

Autotools is also slow even compared to CMake. It doesn't support
single pass building of shared/static, and has other limitations
which appear historical and without any hope/desire to be changed.

- wolfssl has been broken with libssh2 for a year, with no
  interest in fixing it.
  wolfssl tests had to be disabled to pass CI.
  It's also notoriously complicated to configure.
  It has support for CMake, but it lags behind autotools,
  and not getting much/any updates upstream.

- wolfssh requires wolfssl
It was previously pulled by autopoint as a dependency.
@vszakats vszakats changed the title delete autotools and dependencies requiring it drop autotools support and dependencies requiring it Apr 3, 2024
@vszakats vszakats closed this in 0a0022d Apr 3, 2024
@vszakats vszakats deleted the delete-autotools branch April 3, 2024 00:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant