Bug 67304

Summary: Build bugs
Product: Spice Reporter: Yury <shved>
Component: serverAssignee: Spice Bug List <spice-bugs>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: shved, wangqiang.hunan
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Yury 2013-07-25 14:13:25 UTC
I have 

autoreconf --version
autoreconf (GNU Autoconf) 2.69

and

automake --version
automake (GNU automake) 1.14

on Linux 3.9.9-1-ARCH #1 SMP PREEMPT Wed Jul 3 22:45:16 CEST 2013 x86_64 GNU/Linux

Thirst bug is the problem with m4 directory in spice-protocol:

./autogen.sh --prefix=$PREFIX --enable-client --enable-opengl
Submodule 'spice-common' (git://anongit.freedesktop.org/spice/spice-common) registered for path 'spice-common'
Cloning into 'spice-common'...
remote: Counting objects: 2418, done.
remote: Compressing objects: 100% (977/977), done.
remote: Total 2418 (delta 1612), reused 2049 (delta 1338)
Receiving objects: 100% (2418/2418), 711.21 KiB | 40.00 KiB/s, done.
Resolving deltas: 100% (1612/1612), done.
Checking connectivity... done
Submodule path 'spice-common': checked out 'fe93908238196bd632287fc9875e6f2e11105d04'
Submodule 'spice-protocol' (git://anongit.freedesktop.org/spice/spice-protocol) registered for path 'spice-protocol'
Cloning into 'spice-protocol'...
remote: Counting objects: 941, done.
remote: Compressing objects: 100% (872/872), done.
remote: Total 941 (delta 658), reused 104 (delta 66)
Receiving objects: 100% (941/941), 151.99 KiB | 50.00 KiB/s, done.
Resolving deltas: 100% (658/658), done.
Checking connectivity... done
Submodule path 'spice-common/spice-protocol': checked out '784407f248e7f99d2bfcc9368f9acd1efb2b9617'
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I /home/shved/Projects/usr/share/aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: adding subdirectory spice-common to autoreconf
autoreconf: Entering directory `spice-common'
autoreconf: configure.ac: adding subdirectory spice-protocol to autoreconf
autoreconf: Entering directory `spice-protocol'
autoreconf: running: aclocal -I /home/shved/Projects/usr/share/aclocal --force 
aclocal: error: couldn't open directory 'm4': No such file or directory
autoreconf: aclocal failed with exit status: 1

This bug resolves by creating m4 directory there by hand.
After that there appeard enother bug with 'subdir-objects':

./autogen.sh --prefix=$PREFIX --enable-client --enable-opengl
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I /home/shved/Projects/usr/share/aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: adding subdirectory spice-common to autoreconf
autoreconf: Entering directory `spice-common'
autoreconf: configure.ac: adding subdirectory spice-protocol to autoreconf
autoreconf: Entering directory `spice-protocol'
autoreconf: running: aclocal -I /home/shved/Projects/usr/share/aclocal --force 
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: /usr/bin/automake-1.14 --add-missing --copy --force-missing
configure.ac:12: installing './install-sh'
configure.ac:12: installing './missing'
Makefile.am: installing './INSTALL'
autoreconf: Leaving directory `spice-protocol'
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: copying file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
configure.ac:13: installing 'build-aux/ar-lib'
configure.ac:13: installing 'build-aux/compile'
configure.ac:19: installing 'build-aux/config.guess'
configure.ac:19: installing 'build-aux/config.sub'
configure.ac:16: installing 'build-aux/install-sh'
configure.ac:16: installing 'build-aux/missing'
automake-1.14: warnings are treated as errors
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_demarshallers.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled
automake-1.14: warning: possible forward-incompatibility.
automake-1.14: At least a source file is in a subdirectory, but the 'subdir-objects'
automake-1.14: automake option hasn't been enabled.  For now, the corresponding output
automake-1.14: object file(s) will be placed in the top-level directory.  However,
automake-1.14: this behaviour will change in future Automake versions: they will
automake-1.14: unconditionally cause object files to be placed in the same subdirectory
automake-1.14: of the corresponding sources.
automake-1.14: You are advised to start using 'subdir-objects' option throughout your
automake-1.14: project, to avoid future incompatibilities.
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_demarshallers1.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_marshallers.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_marshallers1.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled
common/Makefile.am:11: warning: source file '$(srcdir)/generated_server_demarshallers.c' is in a subdirectory,
common/Makefile.am:11: but option 'subdir-objects' is disabled
common/Makefile.am:11: warning: source file '$(srcdir)/generated_server_marshallers.c' is in a subdirectory,
common/Makefile.am:11: but option 'subdir-objects' is disabled
common/Makefile.am: installing 'build-aux/depcomp'
autoreconf: /usr/bin/automake-1.14 failed with exit status: 1

This bug resolves by adding AUTORECONF_OPTION = subdir-objects
When autoreconf finished succesfully I had a problem with compilation itself:

echo 0.12.4.2-c07b-dirty > .version-t && mv .version-t .version
make  all-recursive
make[1]: Entering directory `/home/shved/Projects/Spice/spice'
Making all in spice-common
make[2]: Entering directory `/home/shved/Projects/Spice/spice/spice-common'
GEN      .gitignore
make[3]: Entering directory `/home/shved/Projects/Spice/spice/spice-common/spice-protocol'
GEN      .gitignore
make[3]: Leaving directory `/home/shved/Projects/Spice/spice/spice-common/spice-protocol'
make  all-recursive
make[3]: Entering directory `/home/shved/Projects/Spice/spice/spice-common'
Making all in python_modules
make[4]: Entering directory `/home/shved/Projects/Spice/spice/spice-common/python_modules'
GEN      .gitignore
make[4]: Leaving directory `/home/shved/Projects/Spice/spice/spice-common/python_modules'
Making all in common
make[4]: Entering directory `/home/shved/Projects/Spice/spice/spice-common/common'
Makefile:497: .deps/generated_client_demarshallers.Plo: No such file or directory
Makefile:498: .deps/generated_client_demarshallers1.Plo: No such file or directory
Makefile:499: .deps/generated_client_marshallers.Plo: No such file or directory
Makefile:500: .deps/generated_client_marshallers1.Plo: No such file or directory
Makefile:501: .deps/libspice_common_server_la-generated_server_demarshallers.Plo: No such file or directory
Makefile:502: .deps/libspice_common_server_la-generated_server_marshallers.Plo: No such file or directory
make[4]: *** No rule to make target `.deps/libspice_common_server_la-generated_server_marshallers.Plo'.  Stop.
make[4]: Leaving directory `/home/shved/Projects/Spice/spice/spice-common/common'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/shved/Projects/Spice/spice/spice-common'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/shved/Projects/Spice/spice/spice-common'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/shved/Projects/Spice/spice'
make: *** [all] Error 2

cat: subdir_object: No such file or directory

I hadn't such problem half a year before. Is it common?
Comment 1 Yury 2013-08-12 18:49:34 UTC
Downgrading to automake 1.13.4 resolved this problem.
Comment 2 Qiang Wang 2014-04-20 15:22:58 UTC
I met this issue in the latest spice-gtk code.

I use the ubuntu 14.04

automake --version
automake (GNU automake) 1.14.1

automake: warnings are treated as errors
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_demarshallers.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled
common/Makefile.am:4: warning: source file '$(srcdir)/generated_client_demarshallers1.c' is in a subdirectory,
common/Makefile.am:4: but option 'subdir-objects' is disabled

automake: thread 0: not writing python_modules/Makefile.in because of earlier errors
autoreconf: automake failed with exit status: 1


1. With automake >=1.14, ./autogen.sh fails

This is due to a change in the way automake sets subdir-objects as the default: See https://github.com/sugarlabs/automake/blob/master/PLANS/subdir-objects.txt

I knew Downgrading to automake 1.13.4 will resolve this problem. But I still think it's a problem.
Comment 3 Qiang Wang 2014-04-21 01:05:33 UTC
When I wanted to autogen spice-gtk.
What I have done to resolve this problem, it's to add 

AUTOMAKE_OPTIONS = subdir-objects 

at the top of 
spice-common/Makefile.am
spice-common/common/Makefile.am

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.