Hi all,

I've just merged a significant change on master in #345 which affects both
users and developers going forward.

I'm sending the notes from the commit log out here in lieu of updating
documentation, as I'll be offline for the next two weeks starting today.

As a pre-cursor to this change, the Solo5 CI has been updated with end to
end tests using MirageOS in #340, and OpenBSD 6.4 has been added to the CI
(currently failing tests, may be due to a misconfiguration on the CI node,
no time to investigate right now).

Those of you who have outstanding PRs, I'd appreciate it if you rebase those on
master while I'm away, this will also ensure they get tested properly using the
new CI additions.

Thanks,

Martin

Changelog from #345 follows:

commit 2f1cae37d8b9f97826ea08934558a4360bdb13da
Author: Martin Lucina <[email protected]>
Date:   Thu Feb 21 16:26:49 2019 +0100

    Refactor build system, remove hvt compile-time specialization
    
    This is a large change, and the majority of it is effectively a full
    re-write of the build system. The actual removal of hvt compile-time
    specialization is fairly straightforward.
    
    User-visible changes:
    
    - 'configure.sh' now needs to be run manually before running 'make',
      this is consistent with POLA.
    - conversely, 'make clean' no longer cleans Makeconf. Use 'distclean' or
      'clobber' for that.
    - 'configure.sh' will now print the targets that can (will) be built on
      this system. The strategy is still "build everything we can", however
      I have disabled Genode on all systems except Linux due to toolchain
      issues.
    - You can now build a subset of targets from the top-level 'make', by
      specifying 'CONFIG_XXX=' (disable) or 'CONFIG_XXX=1' (enable) either
      on the command line, or editing the generated Makeconf.
    - Makefiles use silent rules by default. To get the old verbose ones
      back, use 'make V=1'.
    - The 'solo5-hvt' tender is no longer "specialized" to the unikernel.
      We build two tenders, 'solo5-hvt' with all non-debug modules
      configured and 'solo5-hvt-debug' with additional debug modules (gdb,
      dumpcore where available).
    - 'solo5-hvt-configure' is kept around for now for backward
      compatibility with OPAM/MirageOS but is essentially a NOP.
    
    Developer-visible changes:
    
    - The build system now has proper support for auto-generation of
      dependencies. This means you can safely edit source files, run make
      and be sure you will get a complete incremental build.
    - Makefiles have been refactored to use common best practices, remove
      repetition, consistent variable names and clear interfaces between
      configure.sh/Makeconf/Makefiles, all the while keeping them simple
      enough to understand for me on a Monday morning before coffee. I.e.
      limit use of macros, eval, etc.
    - hvt tender modules are no longer defined by compile-time flags,
      instead a dynamic array is placed into a special ELF section
      (.modules).  This means that a hvt tender binary can be combined from
      an arbitrary set of hvt_module_XXX object files, which is the right
      way to do things going forward and also simplifies the build system
      (not needing to build multiple targets from the same set of sources).
    
    Shortcomings / TODOs:
    
    - Dependency files (*.d) are stored in-tree. I spent several days on
      trying to figure out how to get them to work out of tree, but in
      combination with the non-recursive use of subdirectories in 'bindings'
      I could not figure out the required Makefile magic.
    - HVT_DROP_PRIVILEGES=0 is non-functional with the new modules
      arrangement, but needs a re-design anyway.
    
    Other changes included as part of this PR:
    
    - Revert privilege dropping on FreeBSD (see discussion in #282).
    - The build system changes effectively implement option 1 in #292, i.e.
      on x86_64 -m no-red-zone is only used for bindings, not for
      application code.
    - tests/tests.bats has been refactored for DRY as it was getting totally
      unmaintainable.


Reply via email to