Re: [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: |
--------------------------+-------------------------------------------------
Description changed by sunshine:
Old description:
> 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. ;)
New description:
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#comment:3>
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/