BIRCH/Winbirch/Development
From Bioinformatics.Org Wiki
Contents |
To Do
Top priority is to get the birchdev repository online at git.cc.umanitoba.ca, and move all repositories there.
- Currently, they are all too big. We must remove the binaries/libs from birchdev, and getbirch must stop storing jar files.
- Build in BIRCH_PLATFORM values of "winxp-32" and "win7-64"
- birchdev must be fully operational to do this.
- BioLegato shell must be able to call to cygwin, handle these values.
- Use getbirch to modify the .blproperties file
- platform/htmldoc
- Verify that these are working correctly, the scripts seem to be running.
- Add a "rebaseall" routine to cygwin, so that windows 7 shell works correctly.
- 64 bit paths
- Some windows 7 systems have weird paths, update the regex to account for this.
- port binaries
- Work has begun at BIRCH/Winbirch/Binaries
Current development
Bug fixing, testing, biolegato integration, git integration.
Development of Binaries for Winbirch:
Developer tooling
Development on windows is done in the msysgit environment, using apache ant to build.
Developer workflow
The developer workflow consists of:
- RDPing into a windows machine:
rdesktop -K -g "1280x980" -a 24 albacore.cs.umanitoba.ca:63389 -u [USERNAME -p PASSWORD]#for windows XP rdesktop -K -g "1280x980" -a 24 albacore.cs.umanitoba.ca:64389 -u [USERNAME -p PASSWORD]#for windows 7
- Coding a bugfix/feature
- Testing the bugfix/feature until it is stable by rebuilding the getbirch.jar image:
ant && java -jar getbirch.jar
- Committing and pushing the bugfix to a remote repository.
git commit -a -m "This is a stable prototype for feature X" && git push
- Tagging the committed SHA as stable
git tag TAGNAME [REF] && git push --tags #Note: git tag -d TAGNAME #must be pre-pended in order to update/remove a tag
- Refactoring of the feature to provide re-stabilize the API
- The intent of this is to reduce submodule coupling, so that useful portions of the getbirch API can be recycled, potentially in the BIRCH py/jython API.
Getting Started
This presumes a basic knowledge of git, you should be able to make a commit, email an id_rsa.pub file to the admin, and push to remote repositories.
In order to use git on windows, you must be comfortable with a unix command line.
First, install the dependencies:
- JDK:
- Get the Sun JDK for your version of windows. In general, this can be found here.
- Note, you must get the JDK, NOT the JRE.
- Install it with default options.
- Get the Sun JDK for your version of windows. In general, this can be found here.
- Git:
- Simply download and install msysgit (if it is not already installed) from google code, at time of writing the latest is this version
- The "preview" option should be selected from the download list.
- Use the default options for the installer, you can now get a minimal unix shell with git/ssh functionality, but that is all you'll need.
- You must now generate and email your ~/.ssh/id_rsa.pub file to the repo administrator (at time of writing, this is mailto:hameld@cc.umanitoba.ca
- Simply download and install msysgit (if it is not already installed) from google code, at time of writing the latest is this version
ssh-keygen.exe #press enter to use default options until it completes.
- Ant:
- First get the latest windows ant binaries from apache, at time of writing it is this version
- You must now set some environment variables. Details on how to do this can be found here
- Set key JAVA_HOME to the value of the PARENT FOLDER of the "bin" directory of the jdk installation, for instance: C:\Program Files\Java\jdk1.6.0_25
- Set key ANT_HOME to the value of the PARENT FOLDER of the "bin" directory where you put ant, for instance: C:\ant
- Add ant and java binaries to the PATH variable. The following value should work for all cases where the above are set: %JAVA_HOME/bin;%ANT_HOME%/bin;%PATH%;
- To test the installation, open up msysgit and type "ant" you should get the error: "Buildfile: build.xml does not exist! Build failed"
You are now ready to clone a repository. You will probably need getbirch.git, cygwin.git, and birchdev.git.
git clone gitolite@hake.cs.umanitoba.ca:getbirch.git git clone gitolite@hake.cs.umanitoba.ca:birchdev.git git clone gitolite@hake.cs.umanitoba.ca:cygwin.git
Getbirch development
Getbirch is used to install winbirch, and sets up cygwin appropriately. The cygwin.git repository is used for this functionality. Essentially, getbirch is used to:
- Fetch and install the cygwin dependencies, using the cygwin.git repo
- Install a BIRCH framework inside of the cygwin environment
In order to make changes to the winbirch install process, getbirch must be used, thus, any changes to the winbirch install process are done by modifying getbirch.git, and possibly cygwin.git.
Framework development
The framework that getbirch will use is hosted on birchdev.git, so any changes that require modifications to the framework must be made on the birchdev.git repository.
Note that in order to push changes to the framework, you must have the metastore pre-commit and post-pull hooks installed to backup/restore permissions and timestamps. Instructions on how to do this will be added when the birchdev.git repository is fully operational.
Cygwin development
The structure of the cygwin repository is important. The sources for the cygwin framework are preserved here, by committing the FTP directory with executables to the repository. This allows for cygwin to do an offline install, which is much quicker.
Primarily, the other scripts in the cygwin repository are wrapper scripts, and there is also a script to rebuild the cygwin tarball on the FTP server.
Wrapper scripts:
- Java bridge:
- The java bridge wrapper is used to interface cygwin with the system java.
- Browser bridge:
- This is a wrapper script that reads the registry to find out which web browser should be used and where it is located.
Binary development
Currently there is no binary repository, but there is an old SVN repository still kicking around that contains a number of useful files. Binary and lib directories for winbirch must be created.
- This should be done in a modularized format, to make maintenance easier.
- See BIRCH/Winbirch/Binaries