A video describing the process can be found here: LOUIBuildProcess.mp4.
It would be best to download this video and view it first. The file is ~ 100MB.
The process of building and pushing products to the machines at DCT is mostly a manual process which should probably be automated at some point in the future. The basic process flow is:
- Set up a proper build environment
- Update the work space from the repository
- Modify
about.mappings
andplugin.xml
files to reflect the new version number - Export the product using the correct platform; joe uses
linux (gtk/x86_64)
and all others usemacosx (cocoa/x86_64)
- Transfer the product to the appropriate machine at Happy Jack
- Update the alias on the desktop
Build Environment
I recommend to have separate build and development environments for any one who is going to work extensively on the code. If the changes are very minor, one can use the build environment to make changes and test them before building the product. Fundamentally there is no difference between the two except the name and the idea of isolation. There are instructions on Confluence for setting up the proper environment.
Synchronizing with Repository
The first step in the process of building products is to update the workspace from the repository. If one has made code changes in the build environment, update first. Then test the product and if every thing looks good, commit the changes. Update again and start building if every thing looks good.
The update process causes eclipse to automatically recompile and rebuild the work space. This process does NOT build products.
Update Version Number
When every thing looks good, it is recommended to increment the version number for the products. The current policy is that unless it is a very minor change, all the products are built at the same time and would have the same version number. The LOUIs store the version number in two places and both need to be updated; about.mappings
and plugin.xml files.
Export Product
The best way to understand the export process is to watch the movie. This section is meant as complimentary.
There are lots of plugins that comprise the products but in order to build a product, one needs to only deal with the top level plugin which defines the product. Currently we have the following products:
edu.lowell.lig.getTemp
edu.lowell.lig.joe
edu.lowell.lig.joe.client
edu.lowell.lig.observer.targetlist
edu.lowell.loui.cat
edu.lowell.loui.deveny
edu.lowell.loui.gwaves.guider
edu.lowell.loui.gwaves.wfs
edu.lowell.loui.igrins
edu.lowell.loui.inputValidator
edu.lowell.loui.lmi
edu.lowell.loui.nightlyreport
edu.lowell.loui.nihts
edu.lowell.loui.omspdu
Under the current architecture, all these products, except edu.lowell.lig.joe
run under MacOS X.
edu.lowell.lig.joe
runs under Linux. To export a product, we follow the following general steps:
- Open the top level plugin for the product (one of the above plugins) in the Package Explorer view.
- There should be a file with the name of the product and .product extension, e.g.
observerTargetList.product
- Open the file by double clicking and you should see a view with multiple tabs at the bottom. Select
Overview
if not already selected. - In the Exporting widget on the bottom right, click Eclipse Product export Wizard
- The dialog box for the export wizard comes up and on the first page
- Modify the root directory to reflect the new version number
- Modify the location for archive file to include the current date
- Make sure the bottom 2 check boxes are clicked
- Click
Next
- On the second page of the wizard select the proper platform for the export
linux (gtk/x86_64)
for joemacosx (cocoa/x86_64)
for all others- Click
Finish
The process of building and archiving the product takes a while and one needs to be patient. Other operations can be done while exporting a product except exporting another product. So the most efficient way to proceed is to set up and update the parameters for the next build while the first one is in progress. After the setup is complete click Finish and a blocking dialog box comes up informing the user that a build is already in progress and it waits till the first one is finished. Proceed and build all the products and put them in the same directory. Every product should have its own zip file.
Transfer Product
The products are transferred to three different systems:
dct-to1
- all products except joe- observing computer (
baggins
ordct-obs1/dct-obs2
) will have the products used by observers:- LOUI_lmi
- LOUI_DeVeny
- LOUI_nihts
- Observer Target List
- Nightly Report
- Input Validator
joe
- joe the product
One of the reasons we export the product as a zip archive is that it make the process of transferring the files to the destination much easier.
Update Alias
All Products except joe
After transferring the files, they should be expanded and copied to /Applications/LOUI. It may be necessary to authenticate using the lig account credentials. The last thing to do is to update the desktop aliases to the current version. It is important to note that on dct-to1, the script that starts every thing for the operators calls the aliases on the desktop so there is no need to modify the script after the aliases have been update.
joe
The concept is the same but the process is a little different on joe. After transferring the relevant file to joe, ssh to joe and basically issue the following commands after making sure that joe is not running:
$ joe status $ cd /opt $ su # cp ~joe/Downloads/RCP_Products/20170418/joe.linux.gtk.x86_64.zip ./ # unzip joe.linux.gtk.x86_64.zip # rm joe.linux.gtk.x86_64.zip # rm joe # ln -s joe-3.8.2/ joe # exit $ emacs joeVersion.txt