In commit 3035c3db676f ("user/vmm: add and use a load_elf function")
we established a dependency from VMM to elfutils.  However, vmm was
getting installed during the toolchain installation (through make
install-libs).  This was before elfutils was installed.

Breaking user-dirs into the base libraries that are expected to go with
the toolchain and 'extra' libraries that other code (e.g. vmrunkernel
and dune) needs does the trick.  Mostly - perfmon should also be an
'extra' library, but due to the way our apps-install works, it won't
work out.  The longer range solution is to make actual packages for
perfmon and vmm and have them get built and installed via a package
management system.

Rebuild your toolchain, if you want to make sure this works.

Signed-off-by: Barret Rhoden <[email protected]>
---
 Makefile                           | 22 +++++++++++++++-------
 tools/compilers/gcc-glibc/Makefile |  2 +-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 0bbc408ead02..6d126995ed9d 100644
--- a/Makefile
+++ b/Makefile
@@ -591,15 +591,23 @@ endif #ifeq ($(mixed-targets),1)
 # List all userspace directories here, and state any dependencies between them,
 # such as how pthread depends on parlib.
 
-user-dirs = parlib pthread benchutil iplib ndblib vmm perfmon
+# Critical libraries, also built during the toolchain install
+user-base-dirs = parlib pthread benchutil iplib ndblib perfmon
 benchutil: parlib
 pthread: parlib benchutil
 iplib: parlib
 ndblib: iplib
-vmm: parlib benchutil iplib ndblib
 
-PHONY += install-libs $(user-dirs)
-install-libs: $(user-dirs) symlinks cc-exists
+# Higher-level libraries.  Built before tests/, but after apps-install.
+# TODO: would like to move perfmon here, since it's not meant to be low-level.
+# But the apps-install has perf, which depends on user/perfmon.
+user-extra-dirs = vmm
+$(user-extra-dirs): $(user-base-dirs)
+
+user-dirs = $(user-base-dirs) $(user-extra-dirs)
+
+PHONY += install-base-libs $(user-dirs)
+install-base-libs: $(user-base-dirs) symlinks cc-exists
 
 $(user-dirs):
        @$(MAKE) -C user/$@ DEPLIBS="$^" && $(MAKE) -C user/$@ install
@@ -614,7 +622,7 @@ $(clean-user-dirs):
        @$(MAKE) -C user/$(patsubst _clean_user_%,%,$@) clean
 
 tests/: tests
-tests: install-libs
+tests: user
        @$(MAKE) -f tests/Makefile
 
 PHONY += utest
@@ -642,7 +650,7 @@ $(OBJDIR)/.dont-force-fill-kfs:
        @echo "User space tests removed from KFS"
        @touch $(OBJDIR)/.dont-force-fill-kfs
 
-fill-kfs: $(OBJDIR)/.dont-force-fill-kfs install-libs tests
+fill-kfs: $(OBJDIR)/.dont-force-fill-kfs user tests
        @mkdir -p $(FIRST_KFS_PATH)/lib
        $(Q)cp -uP $(xcc-so-files) $(FIRST_KFS_PATH)/lib
        @echo "Cross Compiler 'so' files installed to KFS"
@@ -737,7 +745,7 @@ $(xcc_subcmd_goals):
 PHONY += xcc-upgrade
 xcc-upgrade: xcc
        @$(MAKE) userclean
-       @$(MAKE) install-libs
+       @$(MAKE) install-base-libs
        @$(MAKE) testclean utestclean
        @$(call make_as_parent, apps-clean)
        @$(call make_as_parent, apps-install)
diff --git a/tools/compilers/gcc-glibc/Makefile 
b/tools/compilers/gcc-glibc/Makefile
index 5d8ef20868b7..d4a92a10de00 100644
--- a/tools/compilers/gcc-glibc/Makefile
+++ b/tools/compilers/gcc-glibc/Makefile
@@ -613,7 +613,7 @@ $(BINARY_PREFIX)glibc-stage2-builddir: 
glibc-$(GLIBC_VERSION)
 .$(BINARY_PREFIX)akaros-libs-install:
        cd $(AKAROSDIR); \
        make ARCH=$(AKAROS_ARCH_DIR) userclean; \
-       make ARCH=$(AKAROS_ARCH_DIR) -j $(MAKE_JOBS) install-libs
+       make ARCH=$(AKAROS_ARCH_DIR) -j $(MAKE_JOBS) install-base-libs
 
 ##################################
 ########### Gcc Stage 3 ##########
-- 
2.13.0.rc0.306.g87b477812d-goog

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to