Skip to content

deploy the compiled code #1

@performantdata

Description

@performantdata

We need a deployment process for the native or LLVM IR libraries and JARs generated by the build process. It should be possible to upload a package of such contents to an Ivy or Maven repository. If only Coursier is supported, that's OK for now. There is apparently no standard defined for this yet. Required features:

  • An archive format that can hold JARs, native libraries (shared or static) for multiple architectures, Python wheels, and other language-specific archives.
  • A packaging type that can be uploaded to/downloaded from an Ivy or Maven repository like Maven Central, Artifactory or Nexus. This likely requires a new packaging type and thus a Coursier plugin to support it. The standard Maven packaging types include only those Java-specific ones for which Maven was created: JAR, WAR, EAR, RAR, POM, etc. Most packaging types seem to be based on ZIP, so we'd probably go with that.

native-only

I asked on SO about a standard solely for native and LLVM IR libraries, but it only got 10 hits and no answers. I don't think that such a standard exists except for the OS-level packaging that I mentioned there, RPM and DEB and such. While such packages can be deployed locally, they seem like overkill for the

JAR overloading

Some people have sought ways to use the JAR format for deploying non-JAR resources; for example, packaging native libraries into the JAR (under META-INF). A JAR can be used as an archive like this,
The problem with this is that the loading

AAR

There's an Android Archive format that is capable of storing JARs and native libraries. I'm not sure whether it supports LLVM IR libraries. Its contents are very specific to Android's needs.

Prefab

Included in the AAR is the Prefab archive format. This is the part of the AAR that contains the native libraries. Prefab is also a tool that generates the CMake integration needed to consume the modules in a Prefab package. This may provide the

Nix

Metadata

Metadata

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions