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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.