GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||
GeezerVison is showing github.com — Add support for Linux and Mac ARM platforms by alandavidreyes · Pull Request #216 · lmdbjava/lmdbjava ConversationThis commit is the counterpart change (and depends on) this PR in the native repo. It adds support for two additional versions of the underlying LMDB library, which are cross-compiled to add support for Linux and Mac ARM64 platforms.
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page. All reactions
Member
All reactions
Sorry, something went wrong. Uh oh!
There was an error while loading. Please reload this page.
|
There was an error while loading. Please reload this page.
|
This looks fantastic. Thank you for all of this work! I've successfully installed zig 0.10.1 on my Apple M1, and cross-compiled PR #217 using the e.g. [INFO] Running org.lmdbjava.EnvTest [ERROR] Tests run: 24, Failures: 1, Errors: 1, Skipped: 0, Time elapsed: 0.551 s <<< FAILURE! - in org.lmdbjava.EnvTest [ERROR] setMapSize(org.lmdbjava.EnvTest) Time elapsed: 0.003 s <<< ERROR! org.lmdbjava.Env$MapFullException: Environment mapsize reached (-30792) at org.lmdbjava.ResultCodeMapper.checkRc(ResultCodeMapper.java:86) at org.lmdbjava.Dbi.<init>(Dbi.java:72) at org.lmdbjava.Env.openDbi(Env.java:401) at org.lmdbjava.Env.openDbi(Env.java:350) But compiled/packaged/installed using mvn -B install -Dtest=VerifierTest -DverificationSeconds=10 instead as per the GitHub actions. I'll see if I have the same issue on Linux later on. In any case, I then switched to using lmdbjava 0.9.0-SNAPSHOT in my own application and have successfully run my own test suite, which obviously uses lmdbjava. ➜ hermes git:(main) ✗ clj -M:test Running tests in #{"test"} Testing com.eldrix.hermes.api-test Testing com.eldrix.hermes.cmd-test Testing com.eldrix.hermes.core-test Testing com.eldrix.hermes.ecl-test Testing com.eldrix.hermes.graph-test Testing com.eldrix.hermes.scg-test Testing com.eldrix.hermes.search-test Testing com.eldrix.hermes.ser-test Testing com.eldrix.hermes.server-test Testing com.eldrix.hermes.snomed-test Testing com.eldrix.hermes.store-test Testing com.eldrix.hermes.synth-test Testing com.eldrix.hermes.verhoeff-test Ran 82 tests containing 307060 assertions. 0 failures, 0 errors. which would imply that the native arm64 lmdb library is working well. I then built an uberjar of my own application using 0.9.0-SNAPSHOT, and have successfully run on Mac OS X M1 (ARM), Linux x86 and Windows x86 without having to install a native library manually. So, in summary, v0.9.0-SNAPSHOT appears to work on M1 Mac, Linux x86 and Windows x86. Out of interest, I also have the application installed on FreeBSD... so I took the liberty of testing there. Previously, with 0.8.3 this worked without needing to set a path manually, as the lmdb library was somehow picked up automatically [obviously after I manually installed it using the FreeBSD package manager). But with 0.9.0-SNAPSHOT: 2023-04-23 10:31:07,760 [main] ERROR com.eldrix.hermes.cmd.core - Uncaught exception on "main" java.lang.ExceptionInInitializerError: null at org.lmdbjava.Library.<clinit>(Library.java:75) at org.lmdbjava.Env$Builder.open(Env.java:580) at org.lmdbjava.Env$Builder.open(Env.java:606) at com.eldrix.hermes.impl.lmdb$open_STAR_.invokeStatic(lmdb.clj:94) at com.eldrix.hermes.impl.lmdb$open_store.invokeStatic(lmdb.clj:123) at com.eldrix.hermes.impl.lmdb$open_store.invoke(lmdb.clj:123) at com.eldrix.hermes.impl.lmdb$open_store.invokeStatic(lmdb.clj:125) at com.eldrix.hermes.impl.store$open_store.invokeStatic(store.clj:49) at com.eldrix.hermes.core$open.invokeStatic(core.clj:1004) at com.eldrix.hermes.core$status.invokeStatic(core.clj:1138) at com.eldrix.hermes.cmd.core$status.invokeStatic(core.clj:67) at com.eldrix.hermes.cmd.core$status.invoke(core.clj:66) at com.eldrix.hermes.cmd.core$invoke_command.invokeStatic(core.clj:124) at com.eldrix.hermes.cmd.core$_main.invokeStatic(core.clj:152) at com.eldrix.hermes.cmd.core$_main.doInvoke(core.clj:133) at clojure.lang.RestFn.applyTo(RestFn.java:137) at com.eldrix.hermes.cmd.core.main(Unknown Source) Caused by: java.lang.UnsupportedOperationException: Unsupported os.name (please set system property lmdbjava.native.lib to the path of an external LMDB native library or property lmdbjava.embedded.lib to the name of an LmdbJava embedded library; os.arch='amd64' os.name='FreeBSD') at org.lmdbjava.TargetName.resolveOs(TargetName.java:149) at org.lmdbjava.TargetName.resolveFilename(TargetName.java:98) at org.lmdbjava.TargetName.<clinit>(TargetName.java:74) ... 17 common frames omitted As an aside, I can confirm that setting the flag ec2-user@freebsd:~ $ java -Dlmdbjava.native.lib=/usr/local/lib/liblmdb.so -jar hermes-1.2.1147.jar --db Dev/hermes/snome
d.db status |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Thanks for testing this, @wardle. I have since merged PR #217. The FreeBSD probably worked as it used to fall back to the default LMDB library name if it couldn't extract. I feel it's better what we're now doing, namely requiring an explicit I wonder why the Apple Silicon test gave the I am closing this PR and the corresponding native project PR given PR 217 provides the same capability (ie Apple Silicon native library and consistent naming conventions for all native libraries). |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Thanks for all the work and for taking the Zig approach suggestion! I have seen a similar Unit tests fail with similar messages as the |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
I'm really not in a position to explore this as I don't have an Apple machine. There is an old PR #165 which includes some treatment related to page sizes and "Environment mapsize reached (-30792)" errors. For example: I wonder if someone with an Apple might be able to comment, try it out, or update the PR (or raise a new one)? I am happy to apply changes that fix this of course. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.