Saturday, June 01, 2019

new: devel/woboq_codebrowser

Hi,

I would like to import woboq_codebrowser, a HTML generator from C, C++
source code. It is based on LLVM.

Homepage: https://woboq.com/codebrowser.html
Example usage: https://code.woboq.org/ (with Qt, GLibc, LLVM, Boost, GCC, Linux)

From pkg/DESCR:
The generator generates static HTML pages that can be served by any web
server. It can be run automatically manually or with a hook on your
version control or CI system.

It functions as the source code indexer (using libclang). In contrast to
other solutions (LXR, OpenGrok) it semantically analyzes the code as a
compile step.

The generation is a two-step process: First is a compile step that
creates a .h.html and .cpp.html (and some other) files from the syntax
tree (AST) of the source source. The second step generates an index.html
for each directory.

A server-side database or CGI script are currently not needed, so it is
easy to host. Your normal HTML5 web browser is the source code navigator
(from your local machine or your network).



First, it is dual licenced: Commercial or CC-BY-NC-SA 3.0. It
means the licence does not allow to use the code browser
to assist the development of your commercial software:
https://github.com/woboq/woboq_codebrowser#licence-information

I mentioned it in pkg/DESCR and in pkg/README to ensure user will be
aware of it.



Regarding the port itself:

- does the category "devel" is the right one ? It could be "www" ou
"textproc" too.

- the programs (code generator and index generator) are C++ and are
linked against LLVM-7.so. As it is using "MODULES += lang/clang", I do
not mention any preference in COMPILER. Is it right ?

- for LLVM-7.so dependency, I added devel/llvm explicitly in RUN_DEPENDS.

- the port version is "2.1pl0" : the official 2.1 (from Jul 26, 2017)
doesn't build against LLVM 7. There are commits in master branch to
support it, so I targeted the latest commit in master branch (Mar 26, 2019).

It is still versioned as "2.1" in code source, so the port has
"2.1 patchlevel 0", and we could increment the patchlevel if we target a
new commit still in 2.1, or switch to 2.2 when released.

- I included in pkg/README the way to use it on OpenBSD kernel as some
gymnastic is required (the input list of files to consider is JSON as
required by clang tooling).

- I also added pledge(2) and unveil(2) to the programs. There are restricted
to basic filesystem operations (readonly), with only write capability on
output directory.

Comments or OK to import it ?

Thanks.
--
Sebastien Marie

No comments:

Post a Comment