Error while building julia's documentation

I found a small formatting issue in the documentation that I would like to fix (and also learn from the process). Cloned my fork of julia and tried to run make docs (as described in the contribution guide and the documentation readme).
The first issue was that I’m on Ubuntu 16.04.6 I have only older gcc and gfortran (like in this issue). I want to avoid updating if it’s possible, so I ran with the suggested flag, but it fails.

ubuntu@cstsandbox:~/GIT/julia$ make docs
/home/ubuntu/GIT/julia/deps/llvm.mk:556: *** Attempting to use gcc4 LLVM tarball, but compiling with cxx11 string ABI; set "CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0" to avoid linker errors.  Stop.
Makefile:60: recipe for target 'julia-deps' failed
make: *** [julia-deps] Error 2
ubuntu@cstsandbox:~/GIT/julia$ make docs CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
Making install in src
 /bin/mkdir -p '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/tools'
  /usr/bin/install -c patchelf '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/tools'
Making install in tests
 /bin/mkdir -p '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/share/doc/patchelf'
 /usr/bin/install -c -m 644 /home/ubuntu/GIT/julia/deps/srccache/patchelf-0.9/README '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/share/doc/patchelf'
 /bin/mkdir -p '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/share/man/man1'
 /usr/bin/install -c -m 644 /home/ubuntu/GIT/julia/deps/srccache/patchelf-0.9/patchelf.1 '/home/ubuntu/GIT/julia/usr-staging/patchelf-0.9/home/ubuntu/GIT/julia/usr/share/man/man1'
Creating usr/etc/julia/startup.jl
Copying in usr/share/man/man1/julia.1
/home/ubuntu/GIT/julia/contrib/install.sh 755 /home/ubuntu/GIT/julia/contrib/julia-config.jl /home/ubuntu/GIT/julia/usr/share/julia/
PATH="/opt/ros/kinetic/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ubuntu/GIT/julia/usr/tools" /home/ubuntu/GIT/julia/contrib/fixup-libgfortran.sh --verbose /home/ubuntu/GIT/julia/usr/lib
Discovered traces of libgfortran within . /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
Got SONAMES of libgcc_s.so.1 libgfortran.so.3 libquadmath.so.0
'/lib/x86_64-linux-gnu/libgcc_s.so.1' -> '/home/ubuntu/GIT/julia/usr/lib/libgcc_s.so.1'
'/usr/lib/x86_64-linux-gnu/libgfortran.so.3' -> '/home/ubuntu/GIT/julia/usr/lib/libgfortran.so.3'
'/usr/lib/x86_64-linux-gnu/libquadmath.so.0' -> '/home/ubuntu/GIT/julia/usr/lib/libquadmath.so.0'
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.a to libgcc_s.so.1
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.a to libgfortran.so.3
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.a to libquadmath.so.0
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.so to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.so to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.0.3.5.so to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.a to libgcc_s.so.1
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.a to libgfortran.so.3
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.a to libquadmath.so.0
not an ELF executable
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so.0 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so.0 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libopenblas64_.so.0 to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3 to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3.0.13 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3.0.13 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libcholmod.so.3.0.13 to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/liblapack* to libgcc_s.so.1
  /home/ubuntu/GIT/julia/usr/lib/liblapack* doesn't exist, skipping
changing linkage of /home/ubuntu/GIT/julia/usr/lib/liblapack* to libgfortran.so.3
  /home/ubuntu/GIT/julia/usr/lib/liblapack* doesn't exist, skipping
changing linkage of /home/ubuntu/GIT/julia/usr/lib/liblapack* to libquadmath.so.0
  /home/ubuntu/GIT/julia/usr/lib/liblapack* doesn't exist, skipping
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgcc_s.so.1 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgcc_s.so.1 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgcc_s.so.1 to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgfortran.so.3 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgfortran.so.3 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libgfortran.so.3 to libquadmath.so.0
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libquadmath.so.0 to libgcc_s.so.1
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libquadmath.so.0 to libgfortran.so.3
changing linkage of /home/ubuntu/GIT/julia/usr/lib/libquadmath.so.0 to libquadmath.so.0
    PERL base/pcre_h.jl
    PERL base/errno_h.jl
    PERL base/build_h.jl.phony
    PERL base/file_constants.jl
    PERL base/uv_constants.jl
    PERL base/version_git.jl.phony
    CC src/support/hashing.o
    CC src/support/timefuncs.o
    CC src/support/ptrhash.o
    CC src/support/operators.o
    CC src/support/utf8.o
    CC src/support/ios.o
    CC src/support/htable.o
    CC src/support/bitvector.o
    CC src/support/int2str.o
    CC src/support/libsupportinit.o
    CC src/support/arraylist.o
    CC src/support/strtod.o
    LINK src/support/libsupport.a
    CC src/flisp/flisp.o
    CC src/flisp/builtins.o
    CC src/flisp/string.o
    CC src/flisp/equalhash.o
    CC src/flisp/table.o
    CC src/flisp/iostream.o
    CC src/flisp/julia_extensions.o
    LINK src/flisp/libflisp.a
    CC src/flisp/flmain.o
    LINK src/flisp/flisp
    FLISP src/julia_flisp.boot
    FLISP src/julia_flisp.boot.inc
    CC src/APInt-C.o
    CC src/runtime_ccall.o
    CC src/processor.o
    CC src/rtutils.o
    CC src/jltypes.o
    CC src/gf.o
    CC src/typemap.o
    CC src/ast.o
    CC src/builtins.o
    CC src/module.o
    CC src/interpreter.o
    CC src/symbol.o
    CC src/dlload.o
    CC src/sys.o
    CC src/init.o
    CC src/task.o
    CC src/array.o
    CC src/dump.o
    CC src/staticdata.o
    CC src/toplevel.o
    CC src/jl_uv.o
    CC src/datatype.o
    CC src/simplevector.o
    CC src/runtime_intrinsics.o
    CC src/precompile.o
    CC src/threading.o
    CC src/partr.o
    CC src/stackwalk.o
    CC src/gc.o
    CC src/gc-debug.o
    CC src/gc-pages.o
    CC src/gc-stacks.o
    CC src/method.o
    CC src/jlapi.o
    CC src/signal-handling.o
    CC src/safepoint.o
    CC src/jloptions.o
    CC src/timing.o
    CC src/subtype.o
    CC src/crc32c.o
    CC src/codegen.o
    CC src/jitlayers.o
    CC src/disasm.o
    CC src/debuginfo.o
    CC src/llvm-simdloop.o
    CC src/llvm-ptls.o
    CC src/llvm-muladd.o
    CC src/llvm-final-gc-lowering.o
    CC src/llvm-pass-helpers.o
    CC src/llvm-late-gc-lowering.o
    CC src/llvm-lower-handlers.o
    CC src/llvm-gc-invariant-verifier.o
    CC src/llvm-propagate-addrspaces.o
    CC src/llvm-multiversioning.o
    CC src/llvm-alloc-opt.o
    CC src/cgmemmgr.o
/home/ubuntu/GIT/julia/src/cgmemmgr.cpp: In function β€˜bool {anonymous}::check_fd_or_close(int)’:
/home/ubuntu/GIT/julia/src/cgmemmgr.cpp:99:9: warning: unused variable β€˜err’ [-Wunused-variable]
     int err = fcntl(fd, F_SETFD, FD_CLOEXEC);
         ^
    CC src/llvm-api.o
    LINK usr/lib/libjulia.so.1.3
    CC ui/repl.o
    LINK usr/bin/julia
    JULIA usr/lib/julia/corecompiler.ji
essentials.jl
ctypes.jl
generator.jl
reflection.jl
options.jl
promotion.jl
tuple.jl
pair.jl
traits.jl
range.jl
expr.jl
error.jl
bool.jl
number.jl
int.jl
operators.jl
pointer.jl
refvalue.jl
indices.jl
array.jl
abstractarray.jl
bitarray.jl
bitset.jl
abstractdict.jl
abstractset.jl
iterators.jl
namedtuple.jl
docs/core.jl
ordering.jl
sort.jl
compiler/utilities.jl
compiler/validation.jl
compiler/inferenceresult.jl
compiler/params.jl
compiler/inferencestate.jl
compiler/typeutils.jl
compiler/typelimits.jl
compiler/typelattice.jl
compiler/tfuncs.jl
compiler/abstractinterpretation.jl
compiler/typeinfer.jl
compiler/optimize.jl
compiler/ssair/driver.jl
compiler/ssair/ir.jl
compiler/ssair/domtree.jl
compiler/ssair/slot2ssa.jl
compiler/ssair/queries.jl
compiler/ssair/passes.jl
compiler/ssair/inlining.jl
compiler/ssair/verify.jl
compiler/ssair/legacy.jl
compiler/bootstrap.jl
    JULIA usr/lib/julia/sys.ji
coreio.jl
exports.jl
essentials.jl
ctypes.jl
gcutils.jl
generator.jl
reflection.jl
options.jl
promotion.jl
tuple.jl
expr.jl
pair.jl
traits.jl
range.jl
error.jl
bool.jl
number.jl
int.jl
operators.jl
pointer.jl
refvalue.jl
refpointer.jl
checked.jl
indices.jl
array.jl
abstractarray.jl
subarray.jl
views.jl
baseext.jl
ntuple.jl
abstractdict.jl
iterators.jl
namedtuple.jl
hashing.jl
rounding.jl
float.jl
twiceprecision.jl
complex.jl
rational.jl
multinverses.jl
abstractarraymath.jl
arraymath.jl
simdloop.jl
reduce.jl
reshapedarray.jl
reinterpretarray.jl
bitarray.jl
bitset.jl
multimedia.jl
some.jl
dict.jl
abstractset.jl
set.jl
char.jl
strings/basic.jl
strings/string.jl
strings/substring.jl
build_h.jl
version_git.jl
osutils.jl
c.jl
io.jl
iostream.jl
iobuffer.jl
intfuncs.jl
strings/strings.jl
strings/search.jl
strings/unicode.jl
strings/util.jl
strings/io.jl
parse.jl
shell.jl
regex.jl
pcre.jl
show.jl
arrayshow.jl
methodshow.jl
cartesian.jl
multidimensional.jl
permuteddimsarray.jl
broadcast.jl
missing.jl
version.jl
sysinfo.jl
libc.jl
env.jl
linked_list.jl
condition.jl
threads.jl
lock.jl
task.jl
weakkeydict.jl
logging.jl
libuv.jl
uv_constants.jl
asyncevent.jl
stream.jl
filesystem.jl
process.jl
grisu/grisu.jl
secretbuffer.jl
floatfuncs.jl
math.jl
reducedim.jl
accumulate.jl
ordering.jl
sort.jl
fastmath.jl
Enums.jl
gmp.jl
mpfr.jl
combinatorics.jl
hashing2.jl
irrationals.jl
mathconstants.jl
printf.jl
meta.jl
channels.jl
deepcopy.jl
download.jl
summarysize.jl
errorshow.jl
stacktraces.jl
initdefs.jl
threadcall.jl
uuid.jl
loading.jl
util.jl
asyncmap.jl
experimental.jl
deprecated.jl
docs/basedocs.jl
client.jl
docs/Docs.jl
Base  ─────────── 40.266117 seconds
Base64  ─────────  4.890895 seconds
CRC32c  ─────────  0.020189 seconds
SHA  ────────────  0.261920 seconds
FileWatching  ───  0.166978 seconds
Unicode  ────────  0.020302 seconds
Mmap  ───────────  0.160835 seconds
Serialization  ──  1.698913 seconds
Libdl  ──────────  0.051900 seconds
Markdown  ───────  1.692182 seconds
LibGit2  ────────  4.279436 seconds
Logging  ────────  0.433673 seconds
Sockets  ────────  2.135535 seconds
Printf  ─────────  0.010385 seconds
Profile  ────────  0.227014 seconds
Dates  ──────────  2.721841 seconds
DelimitedFiles  ─  0.196677 seconds
Random  ─────────  1.166304 seconds
UUIDs  ──────────  0.036538 seconds
Future  ─────────  0.011941 seconds
LinearAlgebra  ── 15.347899 seconds
SparseArrays  ───  5.809731 seconds
SuiteSparse  ────  2.081104 seconds
Distributed  ────  8.332770 seconds
SharedArrays  ───  0.258903 seconds
Pkg  ──────────── 15.974677 seconds
Test  ───────────  1.204891 seconds
REPL  ───────────  1.131055 seconds
Statistics  ─────  0.231655 seconds
Stdlibs total  ── 70.585196 seconds
Sysimage built. Summary:
Total ─────── 110.853972 seconds
Base: ───────  40.266117 seconds 36.3236%
Stdlibs: ────  70.585196 seconds 63.674%
    JULIA usr/lib/julia/sys-o.a
Generating precompile statements... 876 generated in 109.240483 seconds (overhead  77.010875 seconds)
Killed
*** This error is usually fixed by running `make clean`. If the error persists, try `make cleanall`. ***
sysimage.mk:85: recipe for target '/home/ubuntu/GIT/julia/usr/lib/julia/sys-o.a' failed
make[1]: *** [/home/ubuntu/GIT/julia/usr/lib/julia/sys-o.a] Error 1
Makefile:84: recipe for target 'julia-sysimg-release' failed
make: *** [julia-sysimg-release] Error 2

I don’t have experience with makefiles or compiling a complete language, so I’m stuck at this point
I really just want to build the documentation, is it even possible? If not, how to solve the compilation error? (I scrolled through the issues, but didn’t find helpful one for this.)

While writing this post, I tried to run doc/make.jl itself, but that didn’t work either.

Edit: make clean or make cleanall didn’t solved it.

The first thing I would do is upgrade to at least the next LTS release, 18.04. 16.04 is no longer that well-tested, so you may keep running into a host of other issues (eg with packages that have binary dependencies) even if you solve this one.

1 Like

You got to the last build-step here. Could the kill have been caused by too little memory? IIRC I have seen that before.

Edit: What do you want the documentation for? It is available in the binaries you can download from the website, and also hosted at docs.julialang.org.

1 Like

Thank you! I’ll consider upgrading.

Ohh, yeah this server has only 2GB of RAM, so it’s definitely possible. I’ll check, if I can get a larger quota.

I would like to fix a small formatting issue, and thought that will build the docs for checking the result.

That is likely the problem, see e.g. https://github.com/JuliaLang/julia/blob/master/doc/build/build.md#building-julia which recommends at least the double.

2 Likes

Thank you for the link!
Just to be sure that I understand correctly: I can not build only the documentation (i.e. building julia itself and the documentation is unseparable).

Unfortunately no, since docstrings to functions are included in the built julia binary.

However, if you have modified the markdown files only you can provide a binary to the make command and use a prebuilt one.

2 Likes

Thanks for the clarification.

Upgrading the memory to 4GB solved problem and meanwhile I also upgraded to 18.04 LTS.
Thank you for the help!

1 Like