Skip to main content

OxOOL Module Compiling HOWTO

1. Preparing The Environment

  • Follow the instructions of OxOOL Community Compiling HOWTO to compile oxool-community -- English version coming soon

    • Be noticed that you should use autogen.sh and don't directly run configure here. autogen.sh by default would add enable-debug and load ModuleTesting module for developing and test modules.

    • Generate oxool and oxool-dev rpm/deb packages by rpmbuild or debuild.

  • Install oxool and oxool-dev you just generated into your development environment. oxool-dev contains the headers necessary for building modules, module templates and oxool-module-maker which will make it a lot easier to start a new module.

2. Create an basic module repository by oxool-module-maker

  • Run oxool-module-maker to create a module git repository from a module template. The parameters are:

    • --module-name=name : Module name, used for the git repository name. It must match the regular expression: ^[\w\@#]+$ which means all the upper and lower case letters, number 0-9, underline _ and # @ symbols. Notice that dash '-' is not allowed due to C++ class naming issue, and underline '_' is better not used.

    • --serviceURI=serviceURI : URI used by this module. If it ends with a slash '/' it means this module can handle a series of related commands. For example, "/oxool/user/" means this module is used to handle requests such as /oxool/user/add, /oxool/user/del, /oxool/user/update, and so on. Without the ending slash means it is a fixed URI.

    • --version=version : Version number. Default "0.0.1"。

    • --summary=summary : Specify Summary field, used in Summary fields in generated rpm file.

    • --description=Description : Specify Description field, used in Description fields in generated deb file.

    • --author=author : Module author. By default it will use the user.name and user.email in global git settings.

    • --license=license : Module license. Default "MPLv2.0".

    • --adminPrivilege=true/false : Does this module URI needs admin privileges? Default "false".

    • --adminIcon=icon : The icon used in backend administration page (See getbootstrap.com for references.) Default "bug-fill".

    • --adminItem=text : The text/title used in backend administration page.

    • --template-path=path : Assign the module template path. The new created module will be generated by copying files from this path. By default the module template is in /usr/share/oxool-devel/module-template.

    • --output-path=path : The path of generated module. By default it will be in user home directory. Notice that it may cause problems if you use symbols like ~ so better use a full path name.

    • Example:

oxool-module-maker --module-name="samplemod" --serviceURI="/oxool/samplemod/" --summary="A sample moudle service on OxOOL" --description="A sample module service on OxOOL" --output-path="/home/oxool/git"
  • A new git repository will be generated in the specified output-path. Inside the folder are all the files from the specified template-path folder.

3. Compile and Test Modules

  • Use autogen.sh to generate configure, then run configure to check the environment and generate Makefile.

  • Compile with make.

  • Before testing the module, go to oxool-community folder and run make run to activate a testing oxool environment. Notice that when you install oxool packages in your environment, it will activate a systemd service oxool.service and occupy the default port like 9980. So you may need to deactivate this systemd service by sudo systemctl stop oxool before running the testing oxool environment.

  • After starting the testing environment, go back to the module folder and run ./test.sh <XML file for this module>. test.sh will call ModuleTesting module in oxool and sent the XML path to it. ModuleTesting will then notify oxool to load the .so file of this module (under .libs/ of the module folder). Now you can call and run the module by calling the URI specified in serviceURI. For example, open your browser with http://127.0.0.1:9980/oxool/samplemod/ .

  • If you change something in the module, you need to re-compile the module and re-run test.sh to load the new .so into oxool to make it effect.