Hello, I am working on the AArch64 port of the OSv operating system:
http://osv.io/ https://github.com/cloudius-systems/osv and I have encountered an unfamiliar way to structure the build system, which uses make at least as the entry point. I am plagued with parallel make build issues. The way I perceive it, while an explicit dependency exists between two targets (libzfs.so and zpool.so or zfs.so), the dependency is always pruned, and thus the parallel build often causes an error, where zfs.so build is attempted before libzfs.so is available, or similarily sometimes zpool.so build is attempted before libzfs.so is available. You can see those dependencies in files: bsd/cddl/contrib/opensolaris/cmd/zpool/build.mk bsd/cddl/contrib/opensolaris/cmd/zfs/build.mk which are imported from top level build.mk >From the github you can get the build system relevant pieces, there is Makefile and build.mk which are the main things, but then there are python scripts used for both building and runtime in scripts/. As part of the build triggered by make -j8 in the top source directory, python scripts in scripts/ are executed as part of a recipe, and they also execute "make" on their own using the python runtime primitives to create subprocesses, while the main parallel make is ongoing. The output of the parallel cross-compilation attempt: make -d -j8 ARCH=aarch64 Is available as file "make_debug.txt" in the top source directory of the "pci_make_debug" branch you can see here: https://github.com/hw-claudio/osv_aarch64/tree/pci_make_debug https://github.com/hw-claudio/osv_aarch64/blob/pci_make_debug/make_debug.txt?raw=true Thank you for any hint or advice you can share, let me know if there is any additional information you need. Claudio Fontana PS, the environment does not contain anything fancy, maybe of interest: HZ=100 CROSS_PREFIX=aarch64-linux-gnu- SHELL=/bin/bash TERM=xterm TMPDIR=/home/claudio/tmp ANT_HOME=/usr/local/apache-ant-1.9.3 GIT_EDITOR=emacs -nw XTERM_SHELL=/bin/bash GIT_AUTHOR_NAME=Claudio Fontana GIT_COMMITTER_NAME=Claudio Fontana T1LIB_CONFIG=/usr/share/t1lib/t1lib.config XDG_CONFIG_DIRS=/etc/xdg:/etc/kde/xdg:/etc/kde/xdg PATH=/home/claudio/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib64/kde4/libexec:/usr/lib64/java/bin:/usr/lib64/java/jre/bin:/usr/lib64/qt/bin:/usr/share/texmf/bin:/home/claudio/iptrc-platform/bin:/usr/local/apache-ant-1.9.3/bin:/usr/local/apache-maven-3.1.1/bin:/home/claudio/arm/gcc-linaro-aarch64/bin GIT_COMMITTER_EMAIL=claudio.font...@huawei.com LC_COLLATE=C INPUTRC=/etc/inputrc PWD=/home/claudio/git/osv JAVA_HOME=/usr/lib64/java EDITOR=emacs -nw LANG=en_US.utf8 QT4DIR=/usr/lib64/qt KDEDIRS=/usr PS1=$ PS2=> XTERM_LOCALE=en_US.utf8 XTERM_VERSION=X.Org 7.6.0(297) SHLVL=4 HOME=/home/claudio LS_OPTIONS=-F -b -T 0 --color=auto LESS=-M PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig DISPLAY=:0.0 GIT_AUTHOR_EMAIL=claudio.font...@huawei.com G_BROKEN_FILENAMES=1 HISTFILE= _=/usr/bin/env OLDPWD=/home/claudio/git _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make