View Issue Details

IDProjectCategoryView StatusLast Update
0002968Spring engineGeneralpublic2012-06-21 09:46
Reporterdfreeman Assigned Toabma  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionunable to reproduce 
Product Version85.0 
Summary0002968: Build scripts fail to install
DescriptionUnpack source. Run "cmake .", "make", "make spring", make "spring-multithreaded".

All okay up to this point. Now, run "sudo make install-spring". Fails with the following output:

--------8<--------8<--------8<--------

[ 95%] Built target headlessStubs
[100%] Built target unitsync
Using build directory: /opt/spring_85.0/base/ ...
Creating spring/bitmaps.sdz
Creating springcontent.sdz
Creating maphelper.sdz
Creating cursors.sdz
[100%] Built target gamedata
[100%] spring-default: Building all dependencies ...
[100%] Built target spring-default
[100%] spring-default: Installing ...
-- Install configuration: "RELWITHDEBINFO"
CMake Error at rts/builds/default/cmake_install.cmake:36 (FILE):
  file INSTALL cannot find
  "/opt/spring_85.0/rts/builds/default/CMakeFiles/CMakeRelink.dir/spring".


make[3]: *** [rts/builds/default/CMakeFiles/install-spring-default] Error 1
make[2]: *** [rts/builds/default/CMakeFiles/install-spring-default.dir/all] Error 2
make[1]: *** [rts/builds/default/CMakeFiles/install-spring.dir/rule] Error 2
make: *** [install-spring] Error 2

--------8<--------8<--------8<--------

But, if I run "sudo make install", then it succeeds. Partway through I notice:

--------8<--------8<--------8<--------

[ 98%] Built target test_ILog
[ 98%] Built target test_RectangleOptimizer
[100%] Built target test_SyncedPrimitive
[100%] Built target test_UDPListener
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libSkirmishAI.so
Linking CXX shared module CMakeFiles/CMakeRelink.dir/libunitsync.so
Linking CXX executable CMakeFiles/CMakeRelink.dir/spring
Linking CXX executable CMakeFiles/CMakeRelink.dir/spring-multithreaded
Linking CXX executable CMakeFiles/CMakeRelink.dir/spring-dedicated
Linking CXX shared library CMakeFiles/CMakeRelink.dir/libspringserver.so
Linking CXX executable CMakeFiles/CMakeRelink.dir/spring-headless
Install the project...
-- Install configuration: "RELWITHDEBINFO"
-- Installing: /usr/local/share/games/spring/AI/Interfaces/C/0.1
-- Installing: /usr/local/share/games/spring/AI/Interfaces/C/0.1/Interface.lua

--------8<--------8<--------8<--------

This means there is also still a bug where the installer does too much from make-install, i.e. building object files. This should be fixed as it's usually run as root and leaves root-owned files all over the place which then don't get updated on the next build.

If the developers wish to deprecate the use of "make install-spring", etc., then I suggest changing the docs on the web-site under building for Linux.
TagsNo tags attached.
Attached Files
CMakeCache.txt (Attachment missing)
Checked infolog.txt for Errors

Activities

abma

2012-02-28 01:21

administrator   ~0008355

Last edited: 2012-02-28 01:25

"make", "make spring", make "spring-multithreaded".

make already builds spring + spring-multithreaded, thats redundant.


make install-spring works fine here... so more info is needed.

"This means there is also still a bug where the installer does too much from make-install, i.e. building object files. "

what? you can run "make install-spring" directly without calling other makes before... thats exactly what it should do. this only updates files if for some reason environment or files got changed...


the correct commands would be: "make spring && sudo make install-spring". but using "make install" is always a bad idea when you've a package system. it would be better if you create a package of spring and then install that. (for example with checkinstall on ubuntu)



only possible bug i see here is "sudo make install-spring" fails.


which distribution are you? if there packages are available for it use them, if you want to install, install into your home directory as it doesn't require a "sudo" and leaves system 100% clean... (use cmake -DCMAKE_INSTALL_PREFIX=/home/abma/local . for example)

abma

2012-02-28 01:27

administrator   ~0008356

Last edited: 2012-02-28 01:27

note: these files are always recreated on "make install":
Creating spring/bitmaps.sdz
Creating springcontent.sdz
Creating maphelper.sdz
Creating cursors.sdz

because we had in history people with broken files because they wasn't updated. so this is for you own safety.

dfreeman

2012-02-28 15:57

reporter   ~0008359

"make install-spring works fine here... so more info is needed."

Sure, but what info would you like? I've given you the console output. I'll attach the CMakeCache.txt

"this only updates files if for some reason environment or files got changed..."

That's what it *should* do, not what it actually does. What it actually does is build the files I mentioned even though the previous command on the console should have also built those files.

"it would be better if you create a package of spring and then install that."

That's your opinion. I've never done that, never cared. /usr/local is allowed to be a bit messy. It should still work like every other makefile out there. And in particular, I am following the Spring documentation.

My distribution is openSUSE 12.1 for 64 bit. I am not aware of any packages being available, but if I could get things working bug-free I would be willing to create them to share. (Someone would have to outline the steps involved.) I'd probably build in a freshly installed virtual machine for 32 and 64 bit. Then, as you suggest, I'd have a cleanly installed system, and so would others.

I'm not really thrilled about "make install" always recreating files - it breaks the standard and expected behaviour of just copying things. I am one of those people who get really nervous about running anything as root, and I prefer that the whole project be built as a regular user and then the minimum be done by "make install". Is it possible that those files that were not regenerated were due to them being owned by root? A previous run of "sudo make" would cause that, precisely why I hate for anything to be built by root.

abma

2012-02-28 18:05

administrator   ~0008361

CMake Error at rts/builds/default/cmake_install.cmake:36 (FILE):
  file INSTALL cannot find
  "/opt/spring_85.0/rts/builds/default/CMakeFiles/CMakeRelink.dir/spring".

the path should be /opt/spring_85.0/spring
for some reason it isn't...

in which path did you run "cmake ." ?

dfreeman

2012-02-28 19:04

reporter   ~0008363

In /opt/spring_85.0/

Same as for make.

dfreeman

2012-04-08 18:05

reporter   ~0008595

This still happens in v88.

abma

2012-06-04 02:33

administrator   ~0008735

does running "cmake ." twice fix it? (could be some cmake caching "bug" ...

abma

2012-06-21 09:46

administrator   ~0008812

...

Issue History

Date Modified Username Field Change
2012-02-22 09:55 dfreeman New Issue
2012-02-28 01:21 abma Note Added: 0008355
2012-02-28 01:21 abma Status new => feedback
2012-02-28 01:25 abma Note Edited: 0008355
2012-02-28 01:27 abma Note Added: 0008356
2012-02-28 01:27 abma Note Edited: 0008356
2012-02-28 15:57 dfreeman Note Added: 0008359
2012-02-28 15:57 dfreeman File Added: CMakeCache.txt
2012-02-28 18:05 abma Note Added: 0008361
2012-02-28 19:04 dfreeman Note Added: 0008363
2012-04-08 18:06 dfreeman Note Added: 0008595
2012-06-04 02:33 abma Note Added: 0008735
2012-06-21 09:46 abma Note Added: 0008812
2012-06-21 09:46 abma Status feedback => resolved
2012-06-21 09:46 abma Resolution open => unable to reproduce
2012-06-21 09:46 abma Assigned To => abma