[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/