982
edits
| 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''' | ||
edits