Build external dependencies from sources
Typically you would build external dependencies from sources if
- there are no precompiled binaries for your platform,
- or you want to upgrade an external package to a newer version.
If your operating system provides all external dependencies required by
DIANE on all involved machines on the network which you want to use then you do not need to handle external dependencies yourself.
If you have to handle the external dependencies yourself then let yourself help by
DIANE: there is a simple yet powerful system of resolving these dependencies automatically. All you need to do is to compile packages in a correct place and tell
DIANE how to find them.
You may of course hack the external dependencies into your shell environment. But why to make your life a nightmare?
Using a DIANEPlatformDoctor script to compile external dependencies
Just do:
python platform-doctor.py --fix
Detailed instructions are on this page:
DIANEPlatformDoctor.
This will try to compile external dependencies using a
DUMMY_PLATFORM_STRING
. The binaries are located in
external/PKG/VERSION/DUMMY_PLATFROM_STRING
, where PKG is
omniORB
.
Let us know about your platform and binaries!
Create distribution tarfiles with your new binaries:
python ~/diane/diane-install --make-tarballs VER
, where VER is the diane version you are using.
Email us the output of
python platform-doctor.py --test
script and make the your compiled tarfiles available so we may add them to the central repository!
Internal information
This part of the documentation is of interest mainly for the diane developers and release managers.
This may also be useful if you want to make the new platform available from a
DIANE distribution cache maintained somewhere else then
/afs/cern.ch/sw/arda/diane
.
Introducing a new platform for binaries compiled by the platform doctor script
DIANE has a simple mechanism for automatic platform detection. External packages, versions and platform strings are defined in
python/diane/PACKAGE.py
file. Binary (compiled) packages are organized according to the operating system / processor architecture - this is so called platform string. This can be any string really, it's just important that it is allows to uniquely identify your operating system
DIANE will automatically try to guess your platform string. This is implemented by _detectPlatform() function in the
python/diane/PACKAGE.py
file. You should modify this function accordingly and define new platform string there. Try to follow the naming conventions. Use the output of the platform doctor to see how you can identify the user's platform if you don't have access to the same system.
Make sure that your changes are updated in
/afs/cern.ch/sw/arda/diane/install/TRUNK
(e.g through svn update and commit).
Get the tarfiles from the user and rename or symlink the DUMMY_PLATFORM_STRING directories in the external area (
/afs/cern.ch/sw/arda/diane/external
)
Repackage TRUNK snapshot forcing the new platform string (look at:
/afs/cern.ch/sw/arda/diane/etc/repackage_trunk
script).
Check if the system still works after these changes or ask a user to do so by getting the TRUNK release.
Finally, make sure the new public release contains your changes.
Note: upload of the packages to the central
DIANE repository (this requires permissions and it's not available normally):
scp $TOP/packages/omniORB-4.1.2-PLATF.tar.gz lxplus:/afs/cern.ch/sw/arda/diane/packages
Compiling omniorb
This is normally not needed as it should be handled automatically by the
DIANEPlatformDoctor.
Run
etc/omniorb-build.py
script with
--auto
option. Use
--help
to learn more.
Version of omniorb and its dependencies are defined on top of the
etc/omniorb-build.py
file.
Create tarballs.
When the external dependencies are made you should create corresponding tarballs in the packages directory:
python etc/diane-install --make-tarballs VERSION
Tell us about your packages. If you do so then we may be able to provide them for other users.
For further information on the organization of the central packages repository look at
/afs/cern.ch/sw/arda/diane/packages/README
--
JakubMoscicki - 13 Aug 2007