Wrapping PORTA
PORTA -> XPORTA.jl
The julia ecosystem provides a convenient set of tools for cross-compiling C libraries. The process followed by XPORTA.jl is outlined below.
The PORTA source code is forked from the github.com/denisrosset/porta repository to github.com/bdoolittle/julia-porta. Forking the source allows:
- Weblinks to be made directly from these docs to the PORTA documentation.
- Updates to be made to the GNU Makefile enabling cross-platform compilation.
- Compilation errors to be fixed.
The BinaryBuilder.jl script is used to generate and test the cross-compilation build script for PORTA.
- The build script runs against a specific commit to the julia-porta repo ensuring that all users run the same PORTA binaries.
- The PORTA_jll.jl module is auto-generated and published to the JuliaBinaryWrappers github repo.
PORTA_jll.jl wraps the compiled PORTA binaries and executes the correct binary for the environment in which julia is running.
- Binaries are easily called through julia without requiring users to download or compile the source code.
- PORTA_jll.jl is not a complete wrapper because it lacks, testing, documentation and requires users to handle PORTA specific file IO tasks.
The XPORTA.jl package provides an easy-to-use interface for PORTA_jll.jl.
PORTA History
The official PORTA software was released in 1997 and the source code can be found at http://porta.zib.de. The source code is not actively maintained and as a result, PORTA has become incompatible with some computing environments.
In April 2014, github user denisrosset uploaded the PORTA source code to github.com/denisrosset/porta. Minimal changes were made to the source code fixing compilation errors on Mac OSX.
As of May 2020, there are a number of open forks of denisrosset's PORTA repository. The julia-porta repo is one such case. These forks represent a new interest of an old software. Given a current base of PORTA users, it is possible that the community will absorb the task of maintaining the PORTA source code.