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.