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

Reply via email to