| 1 | = !MapGuide RFC 62 - Defining consistent Structures for Mapguide and FDO Releases and Builds = |
| 2 | |
| 3 | This page contains an change request (RFC) for the !MapGuide Open Source project. |
| 4 | More !MapGuide RFCs can be found on the [wiki:MapGuideRfcs RFCs] page. |
| 5 | |
| 6 | |
| 7 | == Status == |
| 8 | |
| 9 | ||RFC Template Version||(1.0)|| |
| 10 | ||Submission Date||(09.04.2009)|| |
| 11 | ||Last Modified||(UV Wildner) [[Timestamp]]|| |
| 12 | ||Author||(UV Wildner)|| |
| 13 | ||RFC Status||(draft)|| |
| 14 | ||Implementation Status||(discussion needed)|| |
| 15 | ||Proposed Milestone||(2.1)|| |
| 16 | ||Assigned PSC guide(s)||(when determined)|| |
| 17 | ||'''Voting History'''||(vote date)|| |
| 18 | ||+1|||| |
| 19 | ||+0|||| |
| 20 | ||-0|||| |
| 21 | ||-1|||| |
| 22 | ||no vote|||| |
| 23 | |
| 24 | == Overview == |
| 25 | |
| 26 | The build processs for Mapguide and FDO are not fully aligned. Similarly the structure of released packages sometimes differ from the ones created by the build. Those structures need to be aligned for the build server to create builds which can be installed and tested within the build server. |
| 27 | |
| 28 | == Motivation == |
| 29 | |
| 30 | Currently there is an inconsistency between the output of the FDO and the released FDO SDK. That means if you try to build Mapguide using the FDO SDK the postbuild.mak fails. |
| 31 | Similarly, the directory structure created by the released Mapguide Installer is different from the one created by the build. |
| 32 | Those differences cause hard to resolve discrepancies in the setup and fail the build process. |
| 33 | |
| 34 | == Proposed Solution == |
| 35 | |
| 36 | Those structures need to be defined in a reference spec. |
| 37 | Once those structures are defined in a specification the current places need to be aligned to it: |
| 38 | |
| 39 | * on the build server |
| 40 | * in the new WIX installers |
| 41 | * in the makefiles |
| 42 | * Visual Studio post build scripts |
| 43 | * release packages |
| 44 | |
| 45 | This applies to FDO as much as for Mapguide. I suggest to build FDO on the very same build server as this provides a reference for the dependency situation which is a bit vague in the main trunk. |
| 46 | If FDO is included in the build server the build scripts ARE THE REFERENCE as otherwise the build simply fails. |
| 47 | Similarly the build server creates the packages to be released according to the same spec. |
| 48 | |
| 49 | == Implications == |
| 50 | |
| 51 | The build, and install scripts and tools need to be aligned. As a result the system can be build by an automated build server which can also create the installer packages and distributions. |
| 52 | |
| 53 | == Test Plan == |
| 54 | |
| 55 | Successful build server builds. |
| 56 | |
| 57 | == Funding/Resources == |
| 58 | |
| 59 | Frustrated developers needing to sort this out once and for all. |
| 60 | |
| 61 | == closed Issues == |
| 62 | |
| 63 | NONE |
| 64 | |
| 65 | == open Issues == |
| 66 | |
| 67 | Defining the Structures of |
| 68 | |
| 69 | ==== Server Directory ==== |
| 70 | |
| 71 | SupportDirs are Logs, Repositories, Resources, Schema, Temp, wfs, wms |
| 72 | |
| 73 | Currently there are 3 versions: |
| 74 | |
| 75 | 1. SupportDirs as well as FDO Inside the BIN/$(config) dir (which is the $(OutDir) of Visual Studio and Postbuild.mak writes in this) |
| 76 | |
| 77 | {{{ |
| 78 | ./bin/$(config) |
| 79 | ./bin/$(config)/fdo |
| 80 | ./bin/$(config)/$(supportdirs) |
| 81 | |
| 82 | }}} |
| 83 | |
| 84 | 2. SupportDirs one level up with FDO Inside Bin dir (no $config anymore) result of 2.0.2 Installer |
| 85 | |
| 86 | {{{ |
| 87 | ./bin |
| 88 | ./bin/fdo |
| 89 | ./$(supportdirs) |
| 90 | }}} |
| 91 | |
| 92 | |
| 93 | 3. SupportDirs one level with FDO next to Bin Dir (new WIX Installer structure) |
| 94 | |
| 95 | {{{ |
| 96 | ./bin |
| 97 | ./fdo |
| 98 | ./$(supportdirs) |
| 99 | |
| 100 | }}} |
| 101 | |
| 102 | |
| 103 | ==== FDO SDK Directory ==== |
| 104 | |
| 105 | bin,docs, inc, lib |
| 106 | |
| 107 | 1. Bin/$(Config) where Postbuild.mak expects the libaries |
| 108 | |
| 109 | {{{ |
| 110 | ./bin/debug |
| 111 | ./bin/release |
| 112 | ./docs |
| 113 | ./inc |
| 114 | ./lib |
| 115 | }}} |
| 116 | |
| 117 | |
| 118 | 2. Bin (no configdir) (fdosdk and installer) |
| 119 | |
| 120 | {{{ |
| 121 | ./bin |
| 122 | ./docs |
| 123 | ./inc |
| 124 | ./lib |
| 125 | }}} |
| 126 | |
| 127 | |
| 128 | As the FDO libraries have the same name for both debug and release versions they can be easily swapped. |
| 129 | However, we need to define a way how to differentiate them so a build process or installer or developer can decide what to do. |
| 130 | |
| 131 | == Suggestions == |
| 132 | |
| 133 | 1. We need a build area to build things into. Just the servercore outdir is not a good place. Lets call this BUILDTARGET. |
| 134 | with the right paths we can have a buildTarget for the build process which has the following structure: |
| 135 | {{{ |
| 136 | ./release |
| 137 | ./debug |
| 138 | ./FDO |
| 139 | ./docs |
| 140 | ./inc |
| 141 | ./lib |
| 142 | }}} |
| 143 | |
| 144 | 2. The postbuild.mak needs to be adapted to recreate the structure that results from this dicussion |
| 145 | .... this implies a change to the default serverconfig.ini. |
| 146 | 3. The debug configs of the servercore.vcproj needs to point to the BUILDTARGET/$(config) directory |
| 147 | 4. The FDO bindir should be marked with a simple file in the build directory (release/debug). |
| 148 | This is easy to do.... intuitive and can be understood by any build script (using a simple file existence test) |
| 149 | 5. By including the fdo with an external link we have a defined location and can create default installations for the FDO builds |
| 150 | (here we need to discuss how far we want to support the different versions) so if you say build it ends up in the right place. |
| 151 | If thats not desired for any reason we create an additional build config(target) for the FDO build called Mapguide debug, mapguide release |