[CrystalSpace] #965: CS-2.0_beta3: Build system not fit for system wide installation on Linux

"CrystalSpace" <[email protected]>
Newsgroups gmane.comp.graphics.crystalspace.tracker
Message-ID <[email protected]>
#965: CS-2.0_beta3: Build system not fit for system wide installation on Linux
--------------------------+-------------------------------------------------
 Reporter:  yamakuzure    |       Owner:  admin           
     Type:  defect        |      Status:  new             
 Priority:  major         |   Milestone:  Version 2.0 pre1
Component:  build system  |     Version:  V2.0            
 Keywords:                |  
--------------------------+-------------------------------------------------
 Hello everybody,

 I have written some patches to enhance and correct the build system of
 Crystal Space 2.0 Beta 3 to be usable for system wide installation on
 linux in general.

 I am using Gentoo Linux and without these patches I can not start any
 demo, the window is white with a CS-Logo on it, or compile any program,
 because cs-config can not find the libraries.

 Normally I do not use Jam (On Gentoo: ftjam-2.5.3_rc2-r1) or AutoConf, so
 please don't shoot me for errors in the patches. (Almost 1,000 lines,
 there *must* be errors in there...;)

 The current build system does not do what it allows. To be more specific,
 configure allows to set specific paths for the parts of the installation
 and to add custom CFLAGS, CXXFLAGS and LDFLAGS. The current build system
 does not take care of those custom flags, which ends in ftjam segfaulting
 if the command lines become too large (over ~1,000 characters). The first
 thing that crashes is config.status when trying to build the Makefile
 emulation.

 Use the patches like you see fit, correct them, apply them, ignore them,
 whatever you like.

 The patches are numbered and need to be applied from the CrystalSpace root
 directory with -p 0 option in the given order.

 Note: Much of this is my personal opinion. I can not test on other systems
 right now, so maybe I am wrong here and there. But after applying all 15
 patches, CS-2.0_beta3 installs fine on my system and everything works.

 ----
 ''Descriptions'':

 '''1'''.: configure.ac forces /usr/local/lib (and /usr/local/include if
 present) upon users, which is a bad thing to do. Patch in a check to not
 do this if the --prefix, --libdir and/or --includedir options lead to
 default paths.

 ''Patches'': crystalspace-2.0-01-remove_hardcoded_libpath.patch

 '''2'''.: The three modes 'optimize', 'profile' and 'debug' clash horribly
 with user set FLAGS. On Gentoo system wide build flags are used and are
 added up to insanely long command lines with the presets that easily
 consists of a lot of superfluous flags. These two patches add a new mode
 'custom' that takes those custom flags and adds only strictly mandatory
 flags.

 ''Patches'': crystalspace-2.0-02-add_custom_mode.patch,
 crystalspace-2.0-03-add_custom_variant.patch

 '''3'''.: Before the new custom mode can be set into action some new
 functions to mk/autoconf/trim.m4 have to be introduced. This patch does
 that.

 ''Patch'': crystalspace-2.0-04-add_var_trimmer.patch

 '''4'''.: These Patches substitute the Emitter calls from configure.ac
 with the new function introduced in 3. to save flags in specific shell
 vars instead of pumping them unchecked into jamconfig.

 ''Patches'': crystalspace-2.0-05-remove_emit_from_configure_ac_01.patch,
 crystalspace-2.0-06-remove_emit_from_configure_ac_02.patch,
 crystalspace-2.0-07-remove_emit_from_configure_ac_03.patch,
 crystalspace-2.0-08-remove_emit_from_configure_ac_04.patch,
 crystalspace-2.0-09-remove_emit_from_configure_ac_05.patch

 '''5'''.: This patch does the same as the five in 4., but with
 mk/autoconf/compiler.m4.

 ''Patch'': crystalspace-2.0-10-remove_emit_from_compiler_funcs.patch

 '''6'''.: data/[*/]Jamfile seem to miss some entries - not updated, yet?

 ''Patches'': crystalspace-2.0-11-data_add_missing.patch,
 crystalspace-2.0-12-data_sky_add_missing.patch,
 crystalspace-2.0-13-maps_flarge_add_missing.patch

 '''7'''.: vfs.cfg lists an old zip, that doesn't seem to exist any more.

 ''Patch'': crystalspace-2.0-14-fix_vfs_template.patch

 '''8'''.: cs-config doesn't look into /usr/lib[32|64], yet.

 ''Patch'': crystalspace-2.0-15-add_usr_lib_to_cs-config.patch

 ----

 I do know this is lengthy. I am sorry about that and hope I didn't make
 you too mad with me. ;)

-- 
Ticket URL: <http://www.crystalspace3d.org/trac/CS/ticket/965>
CrystalSpace <http://www.crystalspace3d.org/>
Free open-source 3D SDK.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.