AdaCore / aws

AWS is a complete framework to develop Web based applications in Ada.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Alire Project does not currently build OpenSSL

andrewathalye opened this issue · comments

It looks like the intent of the alire.toml is to build OpenSSL support, however the resulting library does not have OpenSSL support. A quick fix is to add "SOCKET="openssl"" to the [gpr-set-externals] section. I’m not sure what the actual issue here is unfortunately.

Hi @andrewathalye which release of AWS do you have on Alire? The 23.0.0 should have openssl enabled: https://github.com/alire-project/alire-index/blob/stable-1.2.1/index/aw/aws/aws-23.0.0.toml#L17

I am using 23.0.0, however unfortunately it does not actually seem to build with OpenSSL support. I can try a fresh build though to be sure.

Have just done a rebuild and can confirm that OpenSSL support is not built in when a project "withs" aws. When I build it on its own (~/bin/alr build from inside aws-23.0.0/) it does build OpenSSL support though. The contents of Makefile.setup indicate that SOCKET=openssl, so it should be built.

Edit: I think I’ve sorted why it doesn’t work. Even though the Makefile is executed correctly for the setup phase, the actual GPR project for aws expects to read $SOCKET as an environment variable, and since the Alire toml doesn’t set it itself and doesn’t build via the Makefile, the build cannot proceed. Maybe a better solution long-term would be to allow Alire to execute an external build script for non-Ada projects that can / need to be built locally.

Another solution would be to have the alire project use the makefile to build and install. I just realised that it currently isn’t building, but just running setup. I think that’s probably the root cause of the issue. With that done it shouldn’t be necessary to set PRJ_TARGET and TARGET in the alire toml either :)

Alternatively, making it so that running "make setup" generates its own config gpr would work pretty well, then the whole build could be run through gprbuild only.

Edit: I think my last idea is the best, because it looks like even having it do a full build in post_fetch doesn’t work well and requires rebuilding some files during each dependent project build.

A very simple example:
aws_config.gpr:

abstract project AWS_Config is
        prefix := "install_dir"
        DEFAULT_LIBRARY_TYPE := "static"
        ENABLE_SHARED := "true"
        ZLIB := "false"
        XMLADA := "false"
        LAL := "false"
        NETLIB := "gnat"
        SOCKET := "openssl"
        SSL_DYNAMIC := "false"
        LDAP := "false"
        DEBUG := "true"
        PROCESSORS := "0"
        TARGET := "x86_64-gentoo-linux-musl"
        THREAD_SANITIZER := "false"
        GSOAP := "false"
        SERVER_HTTP2 := "true"
        CLIENT_HTTP2 := "false"
end AWS_Config;

It wouldn’t even be too bad to generate a build_config project the same way as is currently done for aws_xmlada, aws_lal, etc.

Hi @andrewathalye , we poster the 24.0 release of AWS in Alire. It should fix the issue you mentioned. Can you have a look and let us know if it is ok on your side?