Changes between Version 55 and Version 56 of BuildAndDeploymentEnvironment


Ignore:
Timestamp:
Feb 5, 2013, 10:31:40 PM (11 years ago)
Author:
historic_bruno
Comment:

major updates

Legend:

Unmodified
Added
Removed
Modified
  • BuildAndDeploymentEnvironment

    v55 v56  
    11== Summary ==
    2 Parts of our build and deployment environment are currently beeing changed.
     2Parts of our build and deployment environment are currently being changed.
    33The main goal behind this is being able to easily create deployable packages/bundles for OSX.
    44This Page should be a work in progress and its purpose is to document the overall design and the different tasks required to implement it.
     
    2323== Premake ==
    2424Premake creates our workspaces (also called solutions or projects) for the different platforms.
    25 Currently we support Makefiles, VisualStudio (2005, 2008, 2010), Xcode3, Codeblocks.
     25Currently we support GCC/make, !VisualStudio (2005, 2008, 2010), Xcode3, Xcode4, Codeblocks.
    2626
    2727== Workspaces ==
     
    3838== Overview ==
    3939Some basic design decisions
     40  * We have decided to migrate from SVN to Git (see #1819, #1814, #1816)
    4041  * In the first place we stick to Premake. If someone offers a working solution with other tools like CMake, we are open to change that decision.
    4142  * Sticking to Premake means we can't manually create workspaces
    42   * We separate the external libraries from the game's code and data in the repository
    43   * The libraries are split into separate directories per operating system and architecture
    44   * Developers will have to make a separate checkout to get the right libraries for their system
    45   * Updateworkspaces checks if the libraries are present and up to date to avoid problems with outdated libraries
    46   * Supported platforms are Linux-source (no precompiled libraries in the repository), Macosx-x64 and Windows-x86.
    47   * We don't use special "subversion tricks" like externals definitions and instead keep separate identical copies of libraries if necessary. Storage isn't a problem and we don't update the libraries often. Other arguments brought up by Philip: "... it'll probably confuse Trac and it'll probably make mirroring/migrating to Git harder".
     43  * We remove most of the Windows binaries from the repository (starting with autobuilt exes/dlls in `binaries/system`)
     44  * Libraries are split into separate directories per operating system and architecture
     45  * Script / updater utility checks if the libraries are present and up to date to avoid problems with outdated libraries
     46  * The build process continues the same as before
     47  * A script is included to automatically build OS X bundles
    4848
    4949== Graphical overview of interaction between different components (future-version) ==
     
    5252== The repository structure ==
    5353
     54Git repo:
    5455{{{
    55 .
    56 |-- art
    57 |-- audio
    58 |-- libraries
    59 |   `-- trunk
    60 |       |-- linux-source
    61 |       |   |-- libA
    62 |       |   |   |-- include
    63 |       |   |   `-- lib
    64 |       |   `-- libB
    65 |       |       |-- build.sh
    66 |       |       |-- include
    67 |       |       |-- lib
    68 |       |       `-- src
    69 |       |-- macosx-x64
    70 |       |   |-- libA
    71 |       |   |   |-- include
    72 |       |   |   `-- lib
    73 |       |   `-- libB
    74 |       |       |-- build.sh
    75 |       |       |-- include
    76 |       |       |-- lib
    77 |       |       `-- src
    78 |       `-- windows-x86
    79 |           |-- libA
    80 |           |   |-- include
    81 |           |   `-- lib
    82 |           `-- libB
    83 |               |-- include
    84 |               `-- lib
    85 `-- ps
     56master
    8657    `-- trunk
     58        |-- binaries
     59        |   `-- system
     60        |       `-- updater.exe / updater.bat
    8761        |-- build
    8862        |   |-- premake
    8963        |   `-- workspaces
     64        |       |-- build-osx-bundle.sh
    9065        |       `-- update-workspaces.sh
     66        |-- libraries
     67        |   |-- osx
     68        |   |   `-- build-osx-libs.sh
     69        |   |-- source
     70        |   |   |-- Lib A
     71        |   |   |   |-- include
     72        |   |   |   |-- libs
     73        |   |   |   `-- src
     74        |   |   `-- Lib B
     75        |   |       |-- include
     76        |   |       |-- libs
     77        |   |       |-- src
     78        |   |       `-- build.sh
     79        |   `-- win32
     80        |       |-- Lib C
     81        |       |   |-- include
     82        |       |   `-- libs
     83        |       `-- Lib D
     84        |           |-- include
     85        |           `-- libs
     86        |
    9187        `-- source
    9288}}}
    9389
     90Web server storing pre-built Windows binaries:
     91{{{
     92autobuild
     93|-- master
     94|   `-- binaries
     95|       `-- system
     96|           |-- AtlasUI.dll
     97|           |-- Collada.dll
     98|           |-- pyrogenesis.exe
     99|           `-- pyrogenesis.pdb
     100`-- feature-branch
     101    `-- binaries
     102        `-- system
     103            |-- AtlasUI.dll
     104            |-- Collada.dll
     105            |-- pyrogenesis.exe
     106            `-- pyrogenesis.pdb
     107
     108libraries
     109`-- win32
     110    |-- Lib A
     111    |   |-- include
     112    |   `-- libs
     113    |-- Lib B
     114    |   |-- include
     115    |   `-- libs
     116    |-- Lib C
     117    |   |-- include
     118    |   `-- libs
     119    `-- Lib D
     120        |-- include
     121        `-- libs
     122}}}
     123
    94124== Checking out the code ==
    95 Developers will have to do an additional checkout to compile 0ad.
    96 
    97 This is still the same command to get the source and data:
    98 [[BR]]svn co http://svn.wildfiregames.com/public/ps/trunk/ 0ad
    99 
    100 In addition to that, it will be required to get the right libraries for your system (of course replacing "windows-x86" with your platform):
    101 [[BR]]svn co http://svn.wildfiregames.com/public/libraries/trunk/windows-x86 0ad/libraries
    102 
    103 
    104 == Updateworkspaces ==
    105 
    106 Updateworkspaces must check if the library is present and up to date. If not, it should stop and display an error.
    107 This check could work with a manually updated file in the source-tree containing the current revisions for library-directories.
    108 
     125Developers will check out the code using Git instead of SVN.
     126
     127== Windows build ==
     128Windows developers will first run `binaries\system\updater.exe` to get the latest pre-built win32 binaries. This will keep them updated for whichever branch they are testing, or they can build the game themselves.
     129
     130== OS X build ==
     131
     132OS X developers have the choice of building a loose binary or a bundle, with slightly different steps and requirements.
     133
     134See BuildInstructions#OSX
     135
     136== *nix build ==
     137Linux build process shouldn't change (much).
     138
     139See BuildInstructions#Linux
    109140
    110141----
     
    150181= Open tasks =
    151182
    152 == 1. Change how the game handles default search paths ==
    153 Assigned: Yves
     183== 1. Git migration ==
     184Assigned: unassigned / collaborate with Philip
     185
     186To improve development workflow, we will migrate from SVN to Git.
     187
     188How this affects the build system:
     189 * Autobuilder will be changed to build Git branches, allowing artists and others to test feature branches (see #1819)
     190 * Windows binaries will be moved out of the repository, starting with binaries/system, and possibly later including libraries/win32, etc. An update utility will be written to fetch the latest Windows binaries for the current branch (see #1814).
     191
     192== 2. Change how the game handles default search paths ==
     193Assigned: unassigned
    154194
    155195Each OS should have its default behaviour that should make sense for that OS (see the table above).
     
    163203
    164204Documentation to be updated:
    165  * [http://trac.wildfiregames.com/wiki/Finding_Your_Way_Around Finding_Your_Way_Around]
     205 * [wiki:Finding_Your_Way_Around]
    166206 * ... what else?
    167207
    168 == 2. Adjust the build-system and documentation for a separate library directory  ==
    169 Unassigned
    170 
    171 This task involves:
    172  1. Changing the repository structure as listed above
    173  1. Check if the libraries are present and up-to-date in update-workspaces.sh as described above.
    174  1. Adjusting premake4.lua, extern_libs4.lua, update-workspaces.sh and whatever else might be needed to support these changes
    175  1. Update all affected documentation
    176 
    177 Affected documentation:
    178  * BuildInstructions
    179  * ... what else?
    180 
    181 == 3. Prepare the libraries for each platform ==
    182 Assigned: historic_bruno? [http://trac.wildfiregames.com/ticket/1112 #1112]
    183 
    184 Either include precompiled libraries or integrate the source-code into our build-scripts (called from update-workspaces.sh).
    185 It depends on the platform and probably on the library if the source or a precompiled version should be included.
    186 
    187 == 4. Write a script to create the bundle from the prebuilt libraries, the game-executables and the data ==
    188 Assigned: Yves has started creating such a script
    189  * The script must support the new repository structure
    190  * It should minimize maintenance effort
    191 
    192 == 5. Check CMake as an alternative in the future or work on improved XCode support for Premake ==
    193 Assigned: Juicyfruit works on an integration of CMake: [http://trac.wildfiregames.com/ticket/1104 #1104]
    194 
    195 == 6. Create a plain binary instead of a broken app-bundle ==
    196 Assigned: Yves [http://trac.wildfiregames.com/ticket/947 #947]
    197 Fixed: [http://trac.wildfiregames.com/changeset/10946 Changeset 10946]
    198 
    199 The build-process should create a plain binary in 0a/binaries/system instead of a broken app bundle.
    200 A valid app bundle will be created later during deployment.
     208== 3. Check CMake as an alternative in the future or work on improved XCode support for Premake ==
     209Assigned: unassigned
     210Past work on an integration of CMake: #1104
     211
    201212----