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.