Monolithic build fails with attr-sql plugin
|Assignee:||Tobias Brunner||% Done:|
I'm trying a build of 5.0.0 with:
> ./configure --enable-monolithic --enable-attr-sql > make
which fails with
make: *** No rule to make target `../../../../src/libhydra/libhydra.la', needed by `pool'. Stop. make: Leaving directory `/home/build/build/strongswan-5.0.0/src/libhydra/plugins/attr_sql'
so we do a
> cd src/libhydra > make libhydra.la ... make: *** No rule to make target `plugins/kernel_netlink/libstrongswan-kernel-netlink.la', needed by `libhydra.la'. Stop.
> cd plugins/kernel_netlink > make libstrongswan-kernel-netlink.la ...succeeds... > cd ../.. > make libhydra.la make: *** No rule to make target `plugins/resolve/libstrongswan-resolve.la', needed by `libhydra.la'. Stop.
> cd plugins/resolve > make libstrongswan-resolve.la ...succeeds...
> cd ../.. > make libhydra.la ...succeeds... > cd ../.. > make ...succeeds...
This results in a completed build.
So no real bug here, but some sort of dependency error.
#1 Updated by Tobias Brunner 9 months ago
- Status changed from New to Feedback
Yes this is known issue. The problem is that with the monolithic build we have to build the plugins of each library before that library itself is built (SUBDIRS= instead of SUBDIRS=. in the library's Makefile.am). As seen above this causes the Makefile for the attr-sql plugin to be evaluated before the main Makefile which means libhydra.la is not yet ready when the pool utility (defined in the attr_sql Makefile) is about to be built. The workaround of manually building the remaining plugins and then libhydra.la works fine, though.
A better solution would be to move these utility programs (there are others) from the plugin directories to a separate directory which can then be built after all libraries are ready. We refrained from doing so to keep the code for the utilities and plugins together, but perhaps we should have a look at this again. Since the monolithic build is mainly intended for the Android and other client builds (where such plugins are not relevant) this will probably have low priority.