Swirrl / csv2rdf

Clojure library and command line application for converting CSV to RDF. An implementation of the W3C CSVW specifications
Eclipse Public License 1.0
26 stars 6 forks source link

Build Graal native images in circle, publish to github release #319

Closed callum-oakley closed 1 year ago

callum-oakley commented 1 year ago

Rebases the changes from #54 on to master, and sets circle up to build native images and publish them as a release for each tag. For example: https://github.com/Swirrl/csv2rdf/releases/tag/release-test-23

Does not address testing of the native builds, so that's something we might want to address in a future PR.

Also does not provide arm64 builds for macOS (circle CI doesn't have an arm environment so we can't build them there currently) nor windows builds (does anyone want those? I suspect you can run the linux builds on windows anyway with wsl)

Adds bin/generate-nativecfg which runs csv2rdf against the test files in w3c-csvw/tests to trace reflection etc, as described in Assisted Configuration with Tracing Agent.

closes #54

also cherry picks #325 and

closes #322

RickMoynihan commented 1 year ago

I was speaking to @lkitching about the logging stuff on #325, and it reminded me that one issue with this PR is that when I did the initial prep work, I just did the minimum to get it working and replaced all the logging calls with println's.

I was thinking we might want to not merge his logging PR, and modify this one such that some of the common entry points provide a way for API users to bring their own logger

e.g. (csv2rdf/whatever-the-entry-point-is "my.csv" "my.json" {:loggers {:warn (fn [& args] (apply log/warn args) :info ,,, }})

The CLI app could then supply those by passing in println perhaps with some additional wrapping so that stderr / stdout are used?

It would be good to fix this before merging.

callum-oakley commented 1 year ago

@RickMoynihan turns out csv2rdf.logging already provides a "bring your own logger" interface in the form of the with-logger macro, so I've hooked a println logger in there only when running under graalvm.