How to package up an SDK for building ceda based applications on Ubuntu

Current targets which can be built

The following build artefacts can be built in the lib folder:

    lib
    ├── exCedaScript
    ├── exLss
    ├── exObject
    ├── exOperation
    ├── exPersistStore
    ├── exPython
    ├── exPython2
    ├── exRmi
    ├── exThread
    ├── GenerateXcpj
    ├── JigsawServer
    ├── libcxBuild.so
    ├── libcxCedaScript.so
    ├── libcxGeom.so
    ├── libcxJigsaw.so
    ├── libcxLss.so
    ├── libcxMacroExpander.so
    ├── libcxMessage.so
    ├── libcxModel.so
    ├── libcxObject.so
    ├── libcxOperation.so
    ├── libcxPersistStore.so
    ├── libcxPython.so
    ├── libcxRmi.so
    ├── libcxSocket.so
    ├── libcxThread.so
    ├── libcxUtils.so
    ├── libcxWorkingSetIpc.so
    ├── liblxOperation.so
    ├── liblxPersistStore.so
    ├── LssApplyDeltas
    ├── LssCompare
    ├── LssCopy
    ├── LssDiagnose
    ├── SetupXcws
    ├── txLss
    ├── txMessage
    ├── txObject
    ├── txOperation
    ├── txPersistStore
    ├── txPython
    ├── txRmi
    ├── txThread
    ├── txUtils
    └── Xcpp

Files in the package

The core ceda package on ubuntu has the following structure

  (root)
    ├── export
    │   ├── .xcwsroot
    │   └── Ceda
    │       ├── Build
    │       │   └── cxBuild
    │       └── Core
    │           ├── cxCedaScript
    │           ├── cxLss
    │           ├── cxMacroExpander
    │           ├── cxMessage
    │           ├── cxObject
    │           ├── cxOperation
    │           ├── cxPersistStore
    │           ├── cxPython
    │           ├── cxRmi
    │           ├── cxSocket
    │           ├── cxThread
    │           ├── cxUtils
    │           ├── cxWorkingSetIpc
    │           └── wsCedaCoreLibraries.xcws
    ├── include
    │   └── Ceda
    │       ├── App
    │       │   └── cxJigsaw
    │       └── Core
    │           ├── cxCedaScript
    │           ├── cxLss
    │           ├── cxMacroExpander
    │           ├── cxMessage
    │           ├── cxObject
    │           ├── cxOperation
    │           ├── cxPersistStore
    │           ├── cxPython
    │           ├── cxRmi
    │           ├── cxSocket
    │           ├── cxThread
    │           ├── cxUtils
    │           └── cxWorkingSetIpc
    └── lib
        └── Linuxx64
            ├── Debug
            │   ├── libcxBuild.so
            │   ├── libcxCedaScript.so
            │   ├── libcxLss.so
            │   ├── libcxMacroExpander.so
            │   ├── libcxMessage.so
            │   ├── libcxObject.so
            │   ├── libcxOperation.so
            │   ├── libcxPersistStore.so
            │   ├── libcxPython.so
            │   ├── libcxRmi.so
            │   ├── libcxSocket.so
            │   ├── libcxThread.so
            │   ├── libcxUtils.so
            │   ├── libcxWorkingSetIpc.so
            │   ├── liblxOperation.so
            │   ├── LssApplyDeltas
            │   ├── LssCompare
            │   ├── LssCopy
            │   ├── LssDiagnose
            │   └── Xcpp
            └── Release
                ├── libcxBuild.so
                ├── libcxCedaScript.so
                ├── libcxLss.so
                ├── libcxMacroExpander.so
                ├── libcxMessage.so
                ├── libcxObject.so
                ├── libcxOperation.so
                ├── libcxPersistStore.so
                ├── libcxPython.so
                ├── libcxRmi.so
                ├── libcxSocket.so
                ├── libcxThread.so
                ├── libcxUtils.so
                ├── libcxWorkingSetIpc.so
                ├── liblxOperation.so
                ├── LssApplyDeltas
                ├── LssCompare
                ├── LssCopy
                ├── LssDiagnose
                └── Xcpp

Proposal

The script cedapackage does the following:

  1. Builds the wsPackageCedaCore.xcws workspace
  2. Copies the export, include, lib folders to ~/ceda

ldd command on Xcpp binary

Running the command:


cd ~/developer/build_linuxx64/lib/Linuxx64/Release
ldd ./Xcpp

produces the following output:

linux-vdso.so.1 =>  (0x00007fffbe5f6000)
libcxUtils.so => /home/david/developer/build_linuxx64/lib/Linuxx64/Release/./libcxUtils.so (0x00007f8b50bbe000)
libcxMacroExpander.so => /home/david/developer/build_linuxx64/lib/Linuxx64/Release/./libcxMacroExpander.so (0x00007f8b5098a000)
libcxBuild.so => /home/david/developer/build_linuxx64/lib/Linuxx64/Release/./libcxBuild.so (0x00007f8b506a0000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8b50305000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8b500ef000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8b4fd25000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8b4fb08000)
libboost_system.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0 (0x00007f8b4f904000)
libboost_thread.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0 (0x00007f8b4f6dd000)
libboost_filesystem.so.1.58.0 => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0 (0x00007f8b4f4c5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8b4f1bc000)
libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f8b4ec2d000)
/lib64/ld-linux-x86-64.so.2 (0x0000561fc8625000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8b4ea25000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8b4e80a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8b4e606000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f8b4e403000)

Package and upload pizza

cd ~/developer
tar -C . -cvzf ~/developer/pizza-0.2.tar.gz pizza