View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002968 | Spring engine | General | public | 2012-02-22 09:55 | 2012-06-21 09:46 |
| Reporter | dfreeman | Assigned To | abma | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | unable to reproduce | ||
| Product Version | 85.0 | ||||
| Summary | 0002968: Build scripts fail to install | ||||
| Description | Unpack 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. | ||||
| Tags | No tags attached. | ||||
| Attached Files | |||||
| Checked infolog.txt for Errors | |||||
|
|
"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) |
|
|
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. |
|
|
"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. |
|
|
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 ." ? |
|
|
In /opt/spring_85.0/ Same as for make. |
|
|
This still happens in v88. |
|
|
does running "cmake ." twice fix it? (could be some cmake caching "bug" ... |
|
|
... |
| 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 |