Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiling on Debian Jessie requires installation of automake #8890

Closed
manfredbrandl opened this issue Dec 8, 2015 · 8 comments · Fixed by servo/rust-harfbuzz#58
Closed
Labels
A-build Related to or part of the build process P-linux Any Linux OS capable of running Servo

Comments

@manfredbrandl
Copy link
Contributor

Compiling "harfbuzz" will fail when automake is not installed. Please Update Prequisites for Debian based Linuxes by including automake in the "sudo apt-get install .." command.

Here is the log for failing harfbuzz without automake installed:

failed to run custom build command for harfbuzz-sys v0.1.2
Process didn't exit successfully: /home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/build-script-build (exit code: 101)
--- stdout
cd /home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/out && /home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz/configure --prefix=/home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/out --host=x86_64-unknown-linux-gnu --enable-static --without-icu --without-freetype --without-glib
CFLAGS="-fPIC -O2" CXXFLAGS="-fPIC -O2"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for x86_64-unknown-linux-gnu-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking how to create a pax tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for style of include used by make... GNU
checking for x86_64-unknown-linux-gnu-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for x86_64-unknown-linux-gnu-ar... no
checking for x86_64-unknown-linux-gnu-lib... no
checking for x86_64-unknown-linux-gnu-link... no
checking for ar... ar
checking the archiver (ar) interface... ar
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for x86_64-unknown-linux-gnu-objdump... no
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for x86_64-unknown-linux-gnu-dlltool... no
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for x86_64-unknown-linux-gnu-ar... ar
checking for archiver @file support... @
checking for x86_64-unknown-linux-gnu-strip... strip
checking for x86_64-unknown-linux-gnu-ranlib... no
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for x86_64-unknown-linux-gnu-mt... no
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking whether gcc understands -c and -o together... (cached) yes
checking dependency style of gcc... (cached) gcc3
checking for x86_64-unknown-linux-gnu-g++... no
checking for x86_64-unknown-linux-gnu-c++... no
checking for x86_64-unknown-linux-gnu-gpp... no
checking for x86_64-unknown-linux-gnu-aCC... no
checking for x86_64-unknown-linux-gnu-CC... no
checking for x86_64-unknown-linux-gnu-cxx... no
checking for x86_64-unknown-linux-gnu-cc++... no
checking for x86_64-unknown-linux-gnu-cl.exe... no
checking for x86_64-unknown-linux-gnu-FCC... no
checking for x86_64-unknown-linux-gnu-KCC... no
checking for x86_64-unknown-linux-gnu-RCC... no
checking for x86_64-unknown-linux-gnu-xlC_r... no
checking for x86_64-unknown-linux-gnu-xlC... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/bin/ld -m elf_x86_64
checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... (cached) GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for x86_64-unknown-linux-gnu-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.20... yes
checking for gtk-doc... no
checking for gtkdoc-check... no
checking for gtkdoc-check... no
checking for gtkdoc-rebase... no
checking for gtkdoc-mkpdf... no
checking whether to build gtk-doc documentation... no
checking for GTKDOC_DEPS... yes
checking for atexit... yes
checking for mprotect... yes
checking for sysconf... yes
checking for getpagesize... yes
checking for mmap... yes
checking for isatty... yes
checking for unistd.h... (cached) yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking alignment of struct{char;}... 1
checking for native Win32... no
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for CAIRO... no
checking for FONTCONFIG... yes
checking for Intel atomic primitives... true
checking for Solaris atomic operations... false
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating src/hb-version.h
config.status: creating src/hb-ucdn/Makefile
config.status: creating util/Makefile
config.status: creating test/Makefile
config.status: creating test/api/Makefile
config.status: creating test/shaping/Makefile
config.status: creating docs/Makefile
config.status: creating docs/version.xml
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
configure:

Build configuration:

Unicode callbacks (you want at least one):
Glib: false
ICU: false
UCDN: true

Font callbacks (the more the better):
FreeType: false

Tools used for command-line utilities:
Cairo: false
Fontconfig: true

Additional shapers (the more the better):
Graphite2: false

Platform shapers (not normally needed):
CoreText: false
Uniscribe: false

Other features:
Documentation: no
GObject bindings: false
Introspection: false

cd /home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/out && make -j2
make[1]: Entering directory '/home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/out'
(CDPATH="${ZSH_VERSION+.}:" && cd /home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz && /bin/bash /home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz/missing autoheader)
Makefile:462: recipe for target '/home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz/config.h.in' failed
make[1]: Leaving directory '/home/manfred/Sonstiges/servo/target/release/build/harfbuzz-sys-278d3b2daab5baa1/out'
makefile.cargo:31: recipe for target 'all' failed

--- stderr
configure: WARNING:
You will not be able to create source packages with 'make dist'
because gtk-doc >= 1.15 is not found.
make[1]: Warnung: -jN in »make«-Verarbeitungszweig erzwungen:
Jobserver-Modus nicht verfügbar.
/home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz/missing: Zeile 81: autoheader: Kommando nicht gefunden.
WARNING: 'autoheader' is missing on your system.
You should only need it if you modified 'acconfig.h' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'autoheader' program is part of the GNU Autoconf package:
http://www.gnu.org/software/autoconf/
It also requires GNU m4 and Perl in order to run:
http://www.gnu.org/software/m4/
http://www.perl.org/
make[1]: *** [/home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/harfbuzz/config.h.in] Error 127
make: *** [all] Error 2
thread '

' panicked at 'assertion failed: Command::new("make").args(&["-R", "-f", "makefile.cargo",
&format!("-j{}" , env:: var ( "NUM_JOBS" ) .
unwrap (
))]).status().unwrap().success()', /home/manfred/Sonstiges/servo/.cargo/registry/src/github.com-0a35038f75765ae4/harfbuzz-sys-0.1.2/build.rs:14

@frewsxcv frewsxcv added P-linux Any Linux OS capable of running Servo A-build Related to or part of the build process labels Dec 8, 2015
@jdm
Copy link
Member

jdm commented Dec 8, 2015

Could you make a pull request to add this to the requirements in https://github.com/servo/servo/blob/master/README.md ?

@metajack
Copy link
Contributor

metajack commented Dec 8, 2015

I'm very worried about depending on automake. This means that we are rebuilding autoconfig stuff when we shouldn't be.

Can we get around this problem (which I'm guessing is caused by git checkout timestamp issues) by running touch on the final build products or something? Surely there is some better way that to require everyone (most people not needing it ever) to install automake and friends.

@manfredbrandl
Copy link
Contributor Author

@jdm Sorry, I don't know enough from github or git to make a pull request
@metajack After the initial error I have tried restarting compilation of servo several times without installing automake and it alway failed at compiling harfbuzz. I have a relatively fresh debian jessie install. Should I try deinstalling automake and restarting compiling servo from a fresh start?

@metajack
Copy link
Contributor

Automake is used to generate Makefile.in which configure will use to create a Makefile. Makefile.in should already exist in harfbuzz, but the Makefile rules are triggering it to regenerate because the timestamps aren't right after the git checkout.

If Makefile.in does not exist in git, then we should add automake to Servo deps. If it does, we should try and find a workaround or fix for the timestamp issue.

@jinwooahn
Copy link

Thank you. I had same error. After installing automake, I can build servo successfully.

jinwooahn pushed a commit to jinwooahn/servo that referenced this issue Dec 12, 2015
There is an issue regarding compile error.
The issue servo#8890 shows a workaround.
@mbrubeck
Copy link
Contributor

mbrubeck commented Jan 5, 2016

The root cause of this is servo/rust-harfbuzz#54

@jdm
Copy link
Member

jdm commented Jan 5, 2016

Documentation update for the time being: #9128

@ahnjinwoo
Copy link

autoconf is current solution? Thanks.

mbrubeck added a commit to mbrubeck/rust-harfbuzz that referenced this issue Jan 5, 2016
mbrubeck added a commit to mbrubeck/rust-harfbuzz that referenced this issue Jan 5, 2016
mbrubeck added a commit to mbrubeck/rust-harfbuzz that referenced this issue Jan 6, 2016
mbrubeck added a commit to mbrubeck/rust-harfbuzz that referenced this issue Jan 6, 2016
bors-servo pushed a commit to servo/rust-harfbuzz that referenced this issue Feb 5, 2016
Move touch command into makefile.cargo

Fixes #54, fixes servo/servo#8890.

r? @larsbergstrom or @metajack

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/rust-harfbuzz/58)
<!-- Reviewable:end -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-build Related to or part of the build process P-linux Any Linux OS capable of running Servo
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants