Talk:Scripted Compilation on Linux Debian/Ubuntu: Difference between revisions

Jump to navigation Jump to search
m
Line 98: Line 98:
* placing source directories at a higher level of the directory hierarchy, while building and installing in a lower level
* placing source directories at a higher level of the directory hierarchy, while building and installing in a lower level
* keeping versions of source, build and install directories specific to a particular distribution in a way that supports preparation of new versions for the distribution.
* keeping versions of source, build and install directories specific to a particular distribution in a way that supports preparation of new versions for the distribution.
All of this should be accomplished in a non-obtrusive way for current users of the script.  Keeping the build working on a "standard" directory structure.  The easiest thing to do is to keep the current directory structure but override the usage of source, build and install directories using hyperlinks when called for.
Alternatives:
* Use an option to drive the creation and re-creation of hyperlinks
** No option, build as usual, no symbolic links are created, <u>but will be used if already in place for the build in progress</u>
** -L 0 same as No Option
** -L 1 Use hyperlinks for a single copy of sources.  Checkouts will be used to set the sources to the correct version.
** -L 2 Use hyperlinks for multiple copies of sources, one per version.
==Special Handling for fgdata==
Because of its size, fgdata is handled differently with regards to hyperlinks.  The script will analyze the options, existing hyperlinks and available previously downloaded fgdata versions and use a selected strategy
{| class=wikitable
! -L option
! Interpretation
|-
| none || Don't use symlinks, unless directories to support them are present
|-
| -L 0 || Don't use symlinks, unless used previously by the current build
|-
| -L 1 || Use symlinks to fgdata-git and checkout the required version
|-
| -L 2 || Use symlinks to fgdata-version. If fgdata-version does not exist, copy locally if available, otherwise download
|}
{| class=wikitable
! Scenario
! -L option
! install/fgdata contains
! Analysis Result
! Strategy
{-
| 1 || none ||non-symlinked fgdata || no fgdata-git or fgdata-version exists|| No action required. No symlink used
|-
| 2 || none ||non-symlinked fgdata || an fgdata-git or fgdata-version does exist|| Symlink fgdata-git or required fgdata-version based on rule 1
|-
| 3 || -L 0 ||non-symlinked fgdata or does not exist || No action required. No symlink used
|-
| 4 || -L 0 ||symlinked to fgdata-git || No action required. Use the symlink
{-
| 5 || -L 0 ||symlinked to fgdata-version and the version is the one requiried || No action required. Use the symlink
|-
| 5 || -L 0 ||symlinked to fgdata-version and the version is <u>not</u>the one requiried || Change the symlink. Apply rule 2.
|-
| 3 || -L 1 ||The current build contains
* If an fgdata specific to the required version is present, it will be used.
* If an fgdata specific to the required version is not present and fgdata-git is present, fgdata-git will be used with checkout to the required version.
* If an fgdata specific to another version is present, and an fgdata-git version is not present an fgdata specific to the required version will be created using a copy of the existing version and a checkout to the required version on the copy
* If no fgdata is present, and -L0 or L1 is specified, fgdata-git will be created and used
* If no fgdata is present, and -L0 or L1 is specified, fgdata-git will be created and used
|}


'''Let CMake drive the process'''
'''Let CMake drive the process'''
982

edits

Navigation menu