Changes between Initial Version and Version 1 of MapGuideRfc62


Ignore:
Timestamp:
Apr 9, 2009 2:54:16 AM (9 years ago)
Author:
uvlite
Comment:

Doing this workstream half a year ago would have replaced many weeks of frustration with constructive work.

Legend:

Unmodified
Added
Removed
Modified
  • MapGuideRfc62

    v1 v1  
     1= !MapGuide RFC 62 - Defining consistent Structures for Mapguide and FDO Releases and Builds =
     2
     3This page contains an change request (RFC) for the !MapGuide Open Source project.
     4More !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
     26The 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
     30Currently 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.
     31Similarly, the directory structure created by the released Mapguide Installer is different from the one created by the build.
     32Those differences cause hard to resolve discrepancies in the setup and fail the build process.
     33
     34== Proposed Solution ==
     35
     36Those structures need to be defined in a reference spec.
     37Once 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
     45This 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.
     46If FDO is included in the build server the build scripts ARE THE REFERENCE as otherwise the build simply fails.
     47Similarly the build server creates the packages to be released according to the same spec.
     48
     49== Implications ==
     50
     51The 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
     55Successful build server builds.
     56
     57== Funding/Resources ==
     58
     59Frustrated developers needing to sort this out once and for all.
     60
     61== closed Issues ==
     62
     63NONE
     64
     65== open Issues ==
     66
     67Defining the Structures of
     68
     69==== Server Directory ====
     70
     71SupportDirs are Logs, Repositories, Resources, Schema, Temp, wfs, wms
     72
     73Currently there are 3 versions:
     74
     751. 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
     842. 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
     933. 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
     105bin,docs, inc, lib
     106
     1071. 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
     1182. Bin (no configdir) (fdosdk and installer)
     119
     120{{{
     121./bin
     122./docs
     123./inc
     124./lib
     125}}}
     126
     127
     128As the FDO libraries have the same name for both debug and release versions they can be easily swapped.
     129However, 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
     1331. 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
     1442. 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.
     1463. The debug configs of the servercore.vcproj needs to point to the BUILDTARGET/$(config) directory
     1474. 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)
     1495. 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.
     151If thats not desired for any reason we create an additional build config(target) for the FDO build called Mapguide debug, mapguide release