AePro: Manage Progres Source Code Using Aegis.
AePro is aprogram written in progres4gl to compile programs written in progres4gl.
It compares modification times and will only (re)compile the programs whose sourcecode has changed.
No Open Source Software solution to provide these functions exsited before.
It is intended to be used in combination with aegis.
Aegis is a transaction-based software configuration management system.
It provides a framework within which a team of developers may work on many changes to a program independently.
Aegis coordinates integrating these changes back into the master source of the program, with as little disruption as possible.
Aegis only runs properly on unix, but aepro will run equally well on windos.
With some tricks, you can use AePro to develop and compile your software on windows, and store and manage the source in an aegis repository on unix.
To use AePro, you need to have a full Progres 9.0 (or higher) installation.
It could work on lower versions, but these lack the file-info:mod-time and mod-date attributes.
You need to provide an alternative for these functions to run aepro on lower versions of progres.
To use AePro toghether with Aegis, you need to run any unix that aegis will compile on.
To connect AePro with Aegis, it comes with a set of shell wrappers.
These mangle and set some environment variables.
You will need a posix compliant shell for those.
Aegis delegates the tasks for a dependency maintanance tool(DMT), a difference/merge tool and history tool.
Aepro takes care of the DMT task for progres4GL sources, but you have to have a suitable diff/merge and history tool installed.
The tools that the AePro distribution is configured for are diff, fhist and RCS.
You will need those tools or adapt the config file to use alternatives.
Where do I get it?
you can get AePro here .
Or, if you want the bleeding edge version or just want to have a look at the aegis webinterface, you can go
You can download it in the native aegis changeset format (.ae), as a common patch, or as a traditional tar.gz.
Assuming you have Aegis installed and downloaded AePro, what is next?
AePro is distributed as plain tar.gz and as a aedist file with an .ae extension.
You can use this aedist file to import the aepro sources and shell wrappers into the first change in your aegis project .
To do this you can just follow these instructions.
These are the instuctions for one of the example projects that come with aegis, but adapted to installing AePro instead.
What does it do?
AePro takes a list of sourcefiles and looks up if previously compiled programs include any of these files.
The modification times of the targets and their constituting files are compared.
Any r-code file that is found to be out of date is recompiled with the xref option.
Any file that is not mentioned in the database and has a .p or w extension is compiled too.
The xref information of every compiled file is parsed and stored in the database, together with information about the current branch.
This branch information and a small routine when retrieving the parent files allow an unlimited number of branches, in unlimited leves deep.
When development begins, a leaf in the version tree is created with the aegis number of that change.
All files are registered within that leaf, so that builds in other changes remain unaffected.
When the change is finally integrated into the baseline, the xref info from that change is folded back into it's parents branch.
How do I use it?
You use AePro within aegis by first importing AePro into your aegis project(you can follow these instructions).
Then you can import your own sources, or start writing them change after change. If you have to import a large amount of sources,
try to import them in logical smaller chuncks and solve any problems you may encounter.
This release (0.1) is just the bare minimum to get myself started on developing progres code with aegis.
Offcourse there are a lot of plans to extend the functionality of AePro and use of the information that is stored in the cxref database.
some of these include:
if you happen to have some suggestions for something that might be handy or cool, just let me know
- Store all configuration information in one file instead of spread over several files.
- Create some automatic creation of databases, create an incremental .df automatically when a source .df is changed.
- Automatic recompilation of affected programs when a .df is changed.
- Get aepro running with progres under wine (windows emulation/wrapper for unix/linux).
- Import and build the the possenet code. The build script it comes with is of very low quality, and this will give me some real world code/experience.
- Build a wrapper script that can ssh into another machine (possibly windows) to compile code remotely. Carry over all environmet variables that are needed.
- create a 'standalone' version of aepro that does not rely on aegis but stores all config info in the database.
Using Aepro on Windows
Altough Aegis will not run on windows, Aepro can in theory be used to develop windows sources under the gouvernance of aegis.
There are two avenues you can try here: Using ssh (or rsh) or use wine.
Use ssh (or rsh) to automagically log into a dedicated windows machine as the correct user, to compile your windows sources there.
Acces to the sourcecode is done via samba or NFS.
Sources are developed on windows and saved on a samba or nfs share.
Aegis commands are issued on the unix server, either on the commandline or using a gui frontend.
Aegis logs into a dedicated windows box when compilation is needed, the result if passed back to aegis on the unix box.
Problems might arise with carrying over the required environment variables and differences in pathnames.
Wine is a wrapper/emulator to run windows programs on unix/linux.
Progres can be installed on this environment.
Progres is invoked through wine directly on the unix box when compilation of sources is needed.
Difficulties may arise with differences in pathnames or compilation/registration of external (ocx) controls.
It is IMHO the most elegant solution as it does not require a dedicated windows box and the simulated windows (wine)
installation can be specificly tailored for this version of progress, keeping the compilation environment constant.
What is Aegis anyway?
You can read all about aegis here.
How does aegis compare with CVS etc?
It does not. While CVS is a very succesfull (history)tool for distributed development, but is not designed to control the development process.
Aegis on the other hand, does not care much about the history tool at all but focusses on the adherance to the development model.
So with CVS you can have easy acces to your source from every workstation that can connect to the CVS server,
but you cannot be sure that the source you find there builds, passes all tests, has been reviewed and approved and works even in combination with the other new modules.
With Aegis you can be sure of those things, but you have to take other measures to get your source distributed.
The subject of 'version control' poped up on my radar when I was working for QAD netherlands in 1999.
The version control system used by them was lacking so much, that I went looking in frustration for an alternative.
CVS was not suited because it did not(!) fill all requirements the original system offered, and could only be made to do so with extensive glue around it.
Aegis had a much better featureset that neatly filled most requirements the original system filled and then offered some more.
What was lacking however, was a DMT for progress sourcecode. (note however that the original system did not have one either, you just had to make sure yourself you did not miss any files.)
I traded my training budget for my own project and set out building the sofware to compile mfg/pro under aegis.
Before I could finish this project I left the company to spend an inheritance on the other side of the globe.
When I came back the economy was in bad shape, and afer a failed assignemt I found myself out of work.
To keep myself busy and give myself some purpose in life, I decided to build the system I had started to build before, but not really finished.
I chose the name AePro because it glues progres development and Aegis together.
In good Aegis fashion it has an ae* prefix just like all the other aegis tools or programs.
You may make your own guesses what the Pro-part stands for.
About the author.
Originally I got my Masters degree in Biology at the University of Utrecht. I converted to programming and progress in 1998.
I worked for Centric information engineering until 2001, when I left for Australia with an inheritance and some wild plans.
Currently I am back in The netherlands and looking for a job.
If you find this program usefull, maybe you could do me a favour, and look around or recommend me for a job somewhere?