diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 621bb03..cee32fa 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -81,7 +81,7 @@ jobs: -DgroupId=org.jmeos -DartifactId=meos -Dversion=1.0 -Dpackaging=jar - name: Build the application jar the image copies - run: mvn -B -Dmeos.lib.dir=/usr/local/lib -Dmeos.enabled=true -pl benchmark -am package + run: mvn -B -Dmeos.lib.dir=/usr/local/lib -pl benchmark -am package - name: Build the image run: docker build --progress=plain -f benchmark/Dockerfile -t flink-benchmark-ci:${{ github.sha }} benchmark/ diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index d85367d..2bb1275 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -97,7 +97,7 @@ jobs: # the smoke tests exercise the facades against the freshly built libmeos from /usr/local/lib. run: | set -o pipefail - mvn -B -Dmeos.lib.dir=/usr/local/lib -Dmeos.enabled=true clean test | tee "$RUNNER_TEMP/build.log" + mvn -B -Dmeos.lib.dir=/usr/local/lib clean test | tee "$RUNNER_TEMP/build.log" # The build's own summary states two things this job's conclusion does # not: a test reported SKIPPED asserts nothing while the job still reads diff --git a/GENERATION.md b/GENERATION.md index 24127ff..aad1571 100644 --- a/GENERATION.md +++ b/GENERATION.md @@ -89,8 +89,7 @@ tools/refresh-from-master.sh --mdb ~/src/MobilityDB # refresh against a local This repo's last leg is `tools/refresh.conf`: the `binding` Maven module, the `org.jmeos:meos:1.0` jar coordinates, and the `mvn … clean test` command. `generate-sources` runs `tools/codegen_jvm.py --engine flink` over the staged `tools/meos-idl.json` and the installed jar, so the facades are -regenerated by the build itself; `meos.lib.dir` is where the smoke tests find `libmeos.so` and -`meos.enabled` turns them on. +regenerated by the build itself; `meos.lib.dir` is where the smoke tests find `libmeos.so`. The chain's per-leg commands, which `refresh-jvm-chain.sh` composes, are in `MEOS-API/GENERATION.md` (`provision-meos.sh`) and `JMEOS/GENERATION.md` (`regen-from-catalog.sh`). diff --git a/benchmark/pom.xml b/benchmark/pom.xml index 112bd8f..6124fd1 100644 --- a/benchmark/pom.xml +++ b/benchmark/pom.xml @@ -251,9 +251,6 @@ ${sedona.source.excludes} - - ${sedona.source.excludes} - @@ -299,18 +296,14 @@ - + org.apache.maven.plugins maven-surefire-plugin 3.2.5 false - - ${meos.enabled} - ${meos.lib.dir} @@ -345,12 +338,4 @@ - \ No newline at end of file diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java index edcd5f4..dc1e4cc 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java @@ -51,7 +51,7 @@ * *

Typical usage — per-vehicle-pair "did they come within * 100m of each other in the last 5 minutes?" via - * {@code MeosOpsTGeo.edwithin_tgeo_tgeo} (tier = {@code cross-stream}): + * {@code MeosOpsFreeGeo.edwithin_tgeo_tgeo} (tier = {@code cross-stream}): * *

{@code
  * KeyedStream a = streamA.keyBy(VehiclePosition::regionId);
@@ -64,7 +64,7 @@
  *             (left, right, ctx) -> {
  *                 Pointer leftT  = left.toTGeoPointer();
  *                 Pointer rightT = right.toTGeoPointer();
- *                 if (MeosOpsTGeo.edwithin_tgeo_tgeo(leftT, rightT, 100.0) != 0) {
+ *                 if (MeosOpsFreeGeo.edwithin_tgeo_tgeo(leftT, rightT, 100.0) != 0) {
  *                     return new MeetingEvent(left.id(), right.id(), ctx.getLeftTimestamp());
  *                 }
  *                 return null;  // no output for non-matches
diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
index 8e3329c..0685443 100644
--- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
+++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
@@ -44,14 +44,14 @@
  * independently.
  *
  * 

Typical usage: scalar-predicate filter against the - * generated {@code MeosOpsTBox.overlaps_tbox_tbox} (tier = + * generated {@code MeosOpsFreeCore.overlaps_tbox_tbox} (tier = * {@code stateless}): * *

{@code
  * DataStream in = ...;
  * DataStream overlapping = in.filter(
  *     new MeosStatelessFilter<>(
- *         pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)));
+ *         pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)));
  * }
* *

For int-coded predicates (JMEOS returns {@code int} for some MEOS diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java index 8ef1709..dafd21c 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java @@ -52,14 +52,14 @@ * *

Typical usage: register a stateless MEOS predicate / arithmetic * call as a per-event map step in a DataStream pipeline. Example with - * the generated {@code MeosOpsTBox.overlaps_tbox_tbox} (tier = + * the generated {@code MeosOpsFreeCore.overlaps_tbox_tbox} (tier = * {@code stateless}, per the codegen manifest): * *

{@code
  * DataStream in = ...;            // (tboxA, tboxB)
  * DataStream overlap = in.map(
  *     new MeosStatelessMap<>(
- *         pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)));
+ *         pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)));
  * }
* *

Tier coverage: as of the codegen state on the parent PR, diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java index b4d26f5..6921c9c 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java @@ -38,8 +38,8 @@ * *

The {@code windowed} tier is "output cardinality changes; needs a * window". The canonical examples are - * {@code temporal_length(tgeo)} (one length per trajectory window), - * {@code temporal_twavg(tnumber)} (one time-weighted average per + * {@code tpoint_length(tpoint)} (one length per trajectory window), + * {@code tnumber_twavg(tnumber)} (one time-weighted average per * window), and the per-class {@code _trajectory} / {@code _time} / * {@code _timespan} accessors that reduce a full sequence to a single * derived value. @@ -61,7 +61,7 @@ * per-window. * *

Typical usage — per-vehicle per-tumbling-window - * trajectory length via {@code MeosOpsTemporal.temporal_length} (tier + * trajectory length via {@code MeosOpsTPoint.tpoint_length} (tier * = {@code windowed}): * *

{@code
@@ -73,7 +73,7 @@
  *     .process(new MeosWindowedAggregate(
  *         (window, events, ctx) -> {
  *             Pointer trajectory = buildTrajectoryFromPoints(events);  // adopter helper
- *             double length = MeosOpsTemporal.temporal_length(trajectory);
+ *             double length = MeosOpsTPoint.tpoint_length(trajectory);
  *             return new VehicleLength(ctx.getCurrentKey(), window.getStart(), length);
  *         }));
  * }
diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/README.md b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/README.md index b79ec19..bb55641 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/README.md +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/README.md @@ -38,11 +38,11 @@ The pattern is the same across all four tiers: ```java // 1. Pick the generated MeosOps method // (Javadoc tier marker tells you which wiring to use) -boolean overlap = MeosOpsTBox.overlaps_tbox_tbox(boxA, boxB); // tier = stateless +boolean overlap = MeosOpsFreeCore.overlaps_tbox_tbox(boxA, boxB); // tier = stateless // 2. Wrap with the matching wiring MeosStatelessFilter filter = MeosStatelessFilter.fromIntPredicate( - pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)); + pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)); // 3. Apply to the DataStream DataStream overlapping = stream.filter(filter); @@ -61,9 +61,9 @@ through a 3-stage DataStream pipeline using two of the generated facades wired through `MeosStatelessMap` + `MeosStatelessFilter`: 1. Parse a stream of TBox WKT strings via - `MeosOpsFreeCore.tbox_in` (io-meta, no state). + `MeosOpsTBox.tbox_in` (io-meta, no state). 2. Filter to those overlapping a fixed query box via - `MeosOpsTBox.overlaps_tbox_tbox` (stateless predicate). + `MeosOpsFreeCore.overlaps_tbox_tbox` (stateless predicate). 3. Serialize each survivor to hex-WKB via `MeosOpsTBox.tbox_as_hexwkb` (io-meta, no state). @@ -72,7 +72,7 @@ Run with: ```bash mvn -q exec:java \ -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWiringsDemoJob \ - -Dmeos.enabled=true + -Dmobilityflink.meos.enabled=true ``` Output (expected): two `overlapping-tbox-hex` lines (the two input diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java index 136d5ca..9744c68 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java @@ -99,7 +99,7 @@ *
{@code
  * mvn -q exec:java \
  *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosAllTiersCapstoneDemo \
- *     -Dmeos.enabled=true
+ *     -Dmobilityflink.meos.enabled=true
  * }
*/ public final class MeosAllTiersCapstoneDemo { diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java index ee9d289..2ecc56e 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java @@ -72,7 +72,7 @@ *
{@code
  * mvn -q exec:java \
  *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosBoundedStateDemoJob \
- *     -Dmeos.enabled=true
+ *     -Dmobilityflink.meos.enabled=true
  * }
* *

Expected output: 6 lines (3 per vehicle), each showing the growing diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java index 21e08b6..21c12ea 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java @@ -77,7 +77,7 @@ *

{@code
  * mvn -q exec:java \
  *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosCrossStreamDemoJob \
- *     -Dmeos.enabled=true
+ *     -Dmobilityflink.meos.enabled=true
  * }
*/ public final class MeosCrossStreamDemoJob { diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java index a9f63be..02a9572 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java @@ -75,7 +75,7 @@ *
{@code
  * mvn -q exec:java \
  *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWindowedDemoJob \
- *     -Dmeos.enabled=true
+ *     -Dmobilityflink.meos.enabled=true
  * }
* *

Expected output: 4 lines (2 windows × 2 vehicles), each showing diff --git a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java index bb70f79..91b20bd 100644 --- a/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java +++ b/benchmark/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java @@ -49,7 +49,7 @@ *

  • Parses each into a JMEOS {@code Pointer} via * {@code MeosOpsTBox.tbox_in} (tier = {@code io-meta}).
  • *
  • Filters to those that overlap with a fixed query TBox via - * {@code MeosOpsTBox.overlaps_tbox_tbox} wrapped as a + * {@code MeosOpsFreeCore.overlaps_tbox_tbox} wrapped as a * {@link MeosStatelessFilter} (tier = {@code stateless}).
  • *
  • Maps each surviving TBox to its serialized WKB hex via * {@code MeosOpsTBox.tbox_as_hexwkb} wrapped as a @@ -62,11 +62,11 @@ *
    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWiringsDemoJob \
    - *     -Dmeos.enabled=true   # require libmeos loadable
    + *     -Dmobilityflink.meos.enabled=true   # require libmeos loadable
      * }
    * *

    If libmeos is not loadable on the runtime (or - * {@code -Dmeos.enabled=false}), every wrapped MeosOps + * {@code -Dmobilityflink.meos.enabled=false}), every wrapped MeosOps * call throws {@code UnsupportedOperationException} with a clear * message — the demo prints the throw shape and exits non-zero. */ @@ -89,7 +89,7 @@ public static void main(String[] args) throws Exception { // fires the first time any MeosOps class is touched). if (!MeosOpsTBox.MEOS_AVAILABLE) { LOG.error("MEOS not available — the demo requires libmeos. " - + "Set -Dmeos.enabled=true and ensure libmeos is loadable."); + + "Set -Dmobilityflink.meos.enabled=true and ensure libmeos is loadable."); System.exit(1); } diff --git a/benchmark/src/test/java/berlinmod/BerlinMODBenchmarkTest.java b/benchmark/src/test/java/berlinmod/BerlinMODBenchmarkTest.java index 129f297..488a6f1 100644 --- a/benchmark/src/test/java/berlinmod/BerlinMODBenchmarkTest.java +++ b/benchmark/src/test/java/berlinmod/BerlinMODBenchmarkTest.java @@ -4,7 +4,6 @@ import java.util.List; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -15,10 +14,9 @@ * only runnable as a {@code main}. Runs one keyed cell and one single-subtask * ({@code keyBy(x -> 0)}) cell through {@link BerlinMODBenchmark#runCell}, which * builds and executes a real Flink job whose spatial predicate evaluates through - * MEOS. Runs only with an extended libmeos on the loader path - * ({@code -Dmeos.enabled=true}), like the other MEOS-backed tests. + * MEOS, so it needs an extended libmeos on the loader path, like the other + * MEOS-backed tests. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class BerlinMODBenchmarkTest { /** Two vehicles moving on nearby WGS84 tracks — enough for the Flink jobs to run. */ diff --git a/benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java b/benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java index 3dba8f6..c334be2 100644 --- a/benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java +++ b/benchmark/src/test/java/berlinmod/BerlinMODSetSetJoinTest.java @@ -29,7 +29,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import org.mobilitydb.meos.MeosSetSetJoin; import java.util.HashSet; @@ -43,10 +42,8 @@ * {@link MeosSetSetJoin} set-set family) against an independent per-pair scalar * baseline ({@code edwithin_tgeo_tgeo} / {@code eintersects_tgeo_tgeo}). The two * code paths must agree exactly on which trip pairs ever meet / are always - * disjoint. Runs only with {@code -Dmeos.enabled=true} and an extended libmeos - * on the library path. + * disjoint. It needs an extended libmeos on the library path. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class BerlinMODSetSetJoinTest { // Four trajectory trips: T1 crosses T0's path mid-window; T3 coincides with diff --git a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java index 4bad5d4..6406df5 100644 --- a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java +++ b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -43,7 +42,6 @@ * family ({@code -DCBUFFER=ON}); the family requires a libmeos built with * {@code -DCBUFFER=ON}. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosCbufferSmokeTest { @BeforeAll @@ -59,9 +57,9 @@ static void finalizeMeos() { @Test void cbuffer() { - Pointer cb = MeosOpsFreeCbuffer.cbuffer_make(MeosOpsFreeGeo.geom_in("POINT(1 1)", 0), 0.5); + Pointer cb = MeosOpsCbuffer.cbuffer_make(MeosOpsGeometry.geom_in("POINT(1 1)", 0), 0.5); assertNotNull(cb); - assertEquals(0.5, MeosOpsFreeCbuffer.cbuffer_radius(cb), 1e-9); - assertNotNull(MeosOpsFreeCbuffer.cbuffer_out(cb, 6)); + assertEquals(0.5, MeosOpsCbuffer.cbuffer_radius(cb), 1e-9); + assertNotNull(MeosOpsCbuffer.cbuffer_out(cb, 6)); } } diff --git a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java index 539dc1c..be423b1 100644 --- a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java +++ b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -40,14 +39,11 @@ /** * Runtime check that the always-built MEOS facade families (core and geo) call * into libmeos and return correct results. Each constructs a value through a - * {@code MeosOps*} facade method and reads it back. Runs only with - * {@code -Dmeos.enabled=true} and a libmeos on the load path. The - * optional families have their own gated smoke tests + * {@code MeosOps*} facade method and reads it back, against a libmeos on the + * load path. The optional families have their own smoke tests * ({@link MeosCbufferSmokeTest}, {@link MeosNpointSmokeTest}, - * {@link MeosPoseSmokeTest}), each compiled only when its build flag includes - * the family. + * {@link MeosPoseSmokeTest}). */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosFacadeSmokeTest { @BeforeAll @@ -86,8 +82,8 @@ void geoStbox() { @Test void geoGeometry() { - Pointer geom = MeosOpsFreeGeo.geom_in("POINT(1 1)", 0); + Pointer geom = MeosOpsGeometry.geom_in("POINT(1 1)", 0); assertNotNull(geom); - assertTrue(MeosOpsFreeGeo.geo_as_text(geom, 6).toUpperCase().contains("POINT")); + assertTrue(MeosOpsGeo.geo_as_text(geom, 6).toUpperCase().contains("POINT")); } } diff --git a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java index 0cfaf41..b6a300f 100644 --- a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java +++ b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -42,7 +41,6 @@ * correct results. Compiled and run when the build includes the npoint family * (the default; dropped with {@code -DNPOINT=OFF}). */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosNpointSmokeTest { @BeforeAll @@ -58,9 +56,9 @@ static void finalizeMeos() { @Test void npoint() { - Pointer np = MeosOpsFreeNpoint.npoint_make(1, 0.5); + Pointer np = MeosOpsNpoint.npoint_make(1, 0.5); assertNotNull(np); - assertEquals(1, MeosOpsFreeNpoint.npoint_route(np)); - assertEquals(0.5, MeosOpsFreeNpoint.npoint_position(np), 1e-9); + assertEquals(1, MeosOpsNpoint.npoint_route(np)); + assertEquals(0.5, MeosOpsNpoint.npoint_position(np), 1e-9); } } diff --git a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java index d395a55..0bbfb57 100644 --- a/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java +++ b/benchmark/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -43,7 +42,6 @@ * family ({@code -DPOSE=ON}); the family requires a libmeos built with * {@code -DPOSE=ON}. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosPoseSmokeTest { @BeforeAll @@ -59,9 +57,9 @@ static void finalizeMeos() { @Test void pose() { - Pointer pose = MeosOpsFreePose.pose_in("Pose(Point(1 1), 0.5)"); + Pointer pose = MeosOpsPose.pose_in("Pose(Point(1 1), 0.5)"); assertNotNull(pose); - assertNotNull(MeosOpsFreePose.pose_out(pose, 6)); - assertEquals(0.5, MeosOpsFreePose.pose_yaw(pose), 1e-9); + assertNotNull(MeosOpsPose.pose_out(pose, 6)); + assertEquals(0.5, MeosOpsPose.pose_yaw(pose), 1e-9); } } diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java index edcd5f4..dc1e4cc 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosCrossStreamJoin.java @@ -51,7 +51,7 @@ * *

    Typical usage — per-vehicle-pair "did they come within * 100m of each other in the last 5 minutes?" via - * {@code MeosOpsTGeo.edwithin_tgeo_tgeo} (tier = {@code cross-stream}): + * {@code MeosOpsFreeGeo.edwithin_tgeo_tgeo} (tier = {@code cross-stream}): * *

    {@code
      * KeyedStream a = streamA.keyBy(VehiclePosition::regionId);
    @@ -64,7 +64,7 @@
      *             (left, right, ctx) -> {
      *                 Pointer leftT  = left.toTGeoPointer();
      *                 Pointer rightT = right.toTGeoPointer();
    - *                 if (MeosOpsTGeo.edwithin_tgeo_tgeo(leftT, rightT, 100.0) != 0) {
    + *                 if (MeosOpsFreeGeo.edwithin_tgeo_tgeo(leftT, rightT, 100.0) != 0) {
      *                     return new MeetingEvent(left.id(), right.id(), ctx.getLeftTimestamp());
      *                 }
      *                 return null;  // no output for non-matches
    diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
    index 8e3329c..0685443 100644
    --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
    +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessFilter.java
    @@ -44,14 +44,14 @@
      * independently.
      *
      * 

    Typical usage: scalar-predicate filter against the - * generated {@code MeosOpsTBox.overlaps_tbox_tbox} (tier = + * generated {@code MeosOpsFreeCore.overlaps_tbox_tbox} (tier = * {@code stateless}): * *

    {@code
      * DataStream in = ...;
      * DataStream overlapping = in.filter(
      *     new MeosStatelessFilter<>(
    - *         pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)));
    + *         pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)));
      * }
    * *

    For int-coded predicates (JMEOS returns {@code int} for some MEOS diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java index 8ef1709..dafd21c 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosStatelessMap.java @@ -52,14 +52,14 @@ * *

    Typical usage: register a stateless MEOS predicate / arithmetic * call as a per-event map step in a DataStream pipeline. Example with - * the generated {@code MeosOpsTBox.overlaps_tbox_tbox} (tier = + * the generated {@code MeosOpsFreeCore.overlaps_tbox_tbox} (tier = * {@code stateless}, per the codegen manifest): * *

    {@code
      * DataStream in = ...;            // (tboxA, tboxB)
      * DataStream overlap = in.map(
      *     new MeosStatelessMap<>(
    - *         pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)));
    + *         pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)));
      * }
    * *

    Tier coverage: as of the codegen state on the parent PR, diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java index b4d26f5..6921c9c 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/MeosWindowedAggregate.java @@ -38,8 +38,8 @@ * *

    The {@code windowed} tier is "output cardinality changes; needs a * window". The canonical examples are - * {@code temporal_length(tgeo)} (one length per trajectory window), - * {@code temporal_twavg(tnumber)} (one time-weighted average per + * {@code tpoint_length(tpoint)} (one length per trajectory window), + * {@code tnumber_twavg(tnumber)} (one time-weighted average per * window), and the per-class {@code _trajectory} / {@code _time} / * {@code _timespan} accessors that reduce a full sequence to a single * derived value. @@ -61,7 +61,7 @@ * per-window. * *

    Typical usage — per-vehicle per-tumbling-window - * trajectory length via {@code MeosOpsTemporal.temporal_length} (tier + * trajectory length via {@code MeosOpsTPoint.tpoint_length} (tier * = {@code windowed}): * *

    {@code
    @@ -73,7 +73,7 @@
      *     .process(new MeosWindowedAggregate(
      *         (window, events, ctx) -> {
      *             Pointer trajectory = buildTrajectoryFromPoints(events);  // adopter helper
    - *             double length = MeosOpsTemporal.temporal_length(trajectory);
    + *             double length = MeosOpsTPoint.tpoint_length(trajectory);
      *             return new VehicleLength(ctx.getCurrentKey(), window.getStart(), length);
      *         }));
      * }
    diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/README.md b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/README.md index b79ec19..bb55641 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/README.md +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/README.md @@ -38,11 +38,11 @@ The pattern is the same across all four tiers: ```java // 1. Pick the generated MeosOps method // (Javadoc tier marker tells you which wiring to use) -boolean overlap = MeosOpsTBox.overlaps_tbox_tbox(boxA, boxB); // tier = stateless +boolean overlap = MeosOpsFreeCore.overlaps_tbox_tbox(boxA, boxB); // tier = stateless // 2. Wrap with the matching wiring MeosStatelessFilter filter = MeosStatelessFilter.fromIntPredicate( - pair -> MeosOpsTBox.overlaps_tbox_tbox(pair.a, pair.b)); + pair -> MeosOpsFreeCore.overlaps_tbox_tbox(pair.a, pair.b)); // 3. Apply to the DataStream DataStream overlapping = stream.filter(filter); @@ -61,9 +61,9 @@ through a 3-stage DataStream pipeline using two of the generated facades wired through `MeosStatelessMap` + `MeosStatelessFilter`: 1. Parse a stream of TBox WKT strings via - `MeosOpsFreeCore.tbox_in` (io-meta, no state). + `MeosOpsTBox.tbox_in` (io-meta, no state). 2. Filter to those overlapping a fixed query box via - `MeosOpsTBox.overlaps_tbox_tbox` (stateless predicate). + `MeosOpsFreeCore.overlaps_tbox_tbox` (stateless predicate). 3. Serialize each survivor to hex-WKB via `MeosOpsTBox.tbox_as_hexwkb` (io-meta, no state). @@ -72,7 +72,7 @@ Run with: ```bash mvn -q exec:java \ -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWiringsDemoJob \ - -Dmeos.enabled=true + -Dmobilityflink.meos.enabled=true ``` Output (expected): two `overlapping-tbox-hex` lines (the two input diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java index 136d5ca..9744c68 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosAllTiersCapstoneDemo.java @@ -99,7 +99,7 @@ *
    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosAllTiersCapstoneDemo \
    - *     -Dmeos.enabled=true
    + *     -Dmobilityflink.meos.enabled=true
      * }
    */ public final class MeosAllTiersCapstoneDemo { diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java index ee9d289..2ecc56e 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosBoundedStateDemoJob.java @@ -72,7 +72,7 @@ *
    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosBoundedStateDemoJob \
    - *     -Dmeos.enabled=true
    + *     -Dmobilityflink.meos.enabled=true
      * }
    * *

    Expected output: 6 lines (3 per vehicle), each showing the growing diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java index 21e08b6..21c12ea 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosCrossStreamDemoJob.java @@ -77,7 +77,7 @@ *

    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosCrossStreamDemoJob \
    - *     -Dmeos.enabled=true
    + *     -Dmobilityflink.meos.enabled=true
      * }
    */ public final class MeosCrossStreamDemoJob { diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java index a9f63be..02a9572 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWindowedDemoJob.java @@ -75,7 +75,7 @@ *
    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWindowedDemoJob \
    - *     -Dmeos.enabled=true
    + *     -Dmobilityflink.meos.enabled=true
      * }
    * *

    Expected output: 4 lines (2 windows × 2 vehicles), each showing diff --git a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java index bb70f79..91b20bd 100644 --- a/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java +++ b/binding/src/main/java/org/mobilitydb/flink/meos/wirings/demo/MeosWiringsDemoJob.java @@ -49,7 +49,7 @@ *

  • Parses each into a JMEOS {@code Pointer} via * {@code MeosOpsTBox.tbox_in} (tier = {@code io-meta}).
  • *
  • Filters to those that overlap with a fixed query TBox via - * {@code MeosOpsTBox.overlaps_tbox_tbox} wrapped as a + * {@code MeosOpsFreeCore.overlaps_tbox_tbox} wrapped as a * {@link MeosStatelessFilter} (tier = {@code stateless}).
  • *
  • Maps each surviving TBox to its serialized WKB hex via * {@code MeosOpsTBox.tbox_as_hexwkb} wrapped as a @@ -62,11 +62,11 @@ *
    {@code
      * mvn -q exec:java \
      *     -Dexec.mainClass=org.mobilitydb.flink.meos.wirings.demo.MeosWiringsDemoJob \
    - *     -Dmeos.enabled=true   # require libmeos loadable
    + *     -Dmobilityflink.meos.enabled=true   # require libmeos loadable
      * }
    * *

    If libmeos is not loadable on the runtime (or - * {@code -Dmeos.enabled=false}), every wrapped MeosOps + * {@code -Dmobilityflink.meos.enabled=false}), every wrapped MeosOps * call throws {@code UnsupportedOperationException} with a clear * message — the demo prints the throw shape and exits non-zero. */ @@ -89,7 +89,7 @@ public static void main(String[] args) throws Exception { // fires the first time any MeosOps class is touched). if (!MeosOpsTBox.MEOS_AVAILABLE) { LOG.error("MEOS not available — the demo requires libmeos. " - + "Set -Dmeos.enabled=true and ensure libmeos is loadable."); + + "Set -Dmobilityflink.meos.enabled=true and ensure libmeos is loadable."); System.exit(1); } diff --git a/binding/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java b/binding/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java index 4bad5d4..6406df5 100644 --- a/binding/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java +++ b/binding/src/test/java/org/mobilitydb/flink/meos/MeosCbufferSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -43,7 +42,6 @@ * family ({@code -DCBUFFER=ON}); the family requires a libmeos built with * {@code -DCBUFFER=ON}. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosCbufferSmokeTest { @BeforeAll @@ -59,9 +57,9 @@ static void finalizeMeos() { @Test void cbuffer() { - Pointer cb = MeosOpsFreeCbuffer.cbuffer_make(MeosOpsFreeGeo.geom_in("POINT(1 1)", 0), 0.5); + Pointer cb = MeosOpsCbuffer.cbuffer_make(MeosOpsGeometry.geom_in("POINT(1 1)", 0), 0.5); assertNotNull(cb); - assertEquals(0.5, MeosOpsFreeCbuffer.cbuffer_radius(cb), 1e-9); - assertNotNull(MeosOpsFreeCbuffer.cbuffer_out(cb, 6)); + assertEquals(0.5, MeosOpsCbuffer.cbuffer_radius(cb), 1e-9); + assertNotNull(MeosOpsCbuffer.cbuffer_out(cb, 6)); } } diff --git a/binding/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java b/binding/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java index 539dc1c..be423b1 100644 --- a/binding/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java +++ b/binding/src/test/java/org/mobilitydb/flink/meos/MeosFacadeSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -40,14 +39,11 @@ /** * Runtime check that the always-built MEOS facade families (core and geo) call * into libmeos and return correct results. Each constructs a value through a - * {@code MeosOps*} facade method and reads it back. Runs only with - * {@code -Dmeos.enabled=true} and a libmeos on the load path. The - * optional families have their own gated smoke tests + * {@code MeosOps*} facade method and reads it back, against a libmeos on the + * load path. The optional families have their own smoke tests * ({@link MeosCbufferSmokeTest}, {@link MeosNpointSmokeTest}, - * {@link MeosPoseSmokeTest}), each compiled only when its build flag includes - * the family. + * {@link MeosPoseSmokeTest}). */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosFacadeSmokeTest { @BeforeAll @@ -86,8 +82,8 @@ void geoStbox() { @Test void geoGeometry() { - Pointer geom = MeosOpsFreeGeo.geom_in("POINT(1 1)", 0); + Pointer geom = MeosOpsGeometry.geom_in("POINT(1 1)", 0); assertNotNull(geom); - assertTrue(MeosOpsFreeGeo.geo_as_text(geom, 6).toUpperCase().contains("POINT")); + assertTrue(MeosOpsGeo.geo_as_text(geom, 6).toUpperCase().contains("POINT")); } } diff --git a/binding/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java b/binding/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java index 0cfaf41..b6a300f 100644 --- a/binding/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java +++ b/binding/src/test/java/org/mobilitydb/flink/meos/MeosNpointSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -42,7 +41,6 @@ * correct results. Compiled and run when the build includes the npoint family * (the default; dropped with {@code -DNPOINT=OFF}). */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosNpointSmokeTest { @BeforeAll @@ -58,9 +56,9 @@ static void finalizeMeos() { @Test void npoint() { - Pointer np = MeosOpsFreeNpoint.npoint_make(1, 0.5); + Pointer np = MeosOpsNpoint.npoint_make(1, 0.5); assertNotNull(np); - assertEquals(1, MeosOpsFreeNpoint.npoint_route(np)); - assertEquals(0.5, MeosOpsFreeNpoint.npoint_position(np), 1e-9); + assertEquals(1, MeosOpsNpoint.npoint_route(np)); + assertEquals(0.5, MeosOpsNpoint.npoint_position(np), 1e-9); } } diff --git a/binding/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java b/binding/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java index d395a55..0bbfb57 100644 --- a/binding/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java +++ b/binding/src/test/java/org/mobilitydb/flink/meos/MeosPoseSmokeTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -43,7 +42,6 @@ * family ({@code -DPOSE=ON}); the family requires a libmeos built with * {@code -DPOSE=ON}. */ -@EnabledIfSystemProperty(named = "meos.enabled", matches = "true") class MeosPoseSmokeTest { @BeforeAll @@ -59,9 +57,9 @@ static void finalizeMeos() { @Test void pose() { - Pointer pose = MeosOpsFreePose.pose_in("Pose(Point(1 1), 0.5)"); + Pointer pose = MeosOpsPose.pose_in("Pose(Point(1 1), 0.5)"); assertNotNull(pose); - assertNotNull(MeosOpsFreePose.pose_out(pose, 6)); - assertEquals(0.5, MeosOpsFreePose.pose_yaw(pose), 1e-9); + assertNotNull(MeosOpsPose.pose_out(pose, 6)); + assertEquals(0.5, MeosOpsPose.pose_yaw(pose), 1e-9); } } diff --git a/pom.xml b/pom.xml index ba96119..0032fe7 100644 --- a/pom.xml +++ b/pom.xml @@ -28,10 +28,9 @@ 2.17.2 1.0 2.1.10 - - true /usr/local/lib @@ -52,9 +51,6 @@ 3.2.5 false - - ${meos.enabled} - ${meos.lib.dir} diff --git a/tools/refresh.conf b/tools/refresh.conf index 0ebca64..cf1e84f 100644 --- a/tools/refresh.conf +++ b/tools/refresh.conf @@ -7,4 +7,4 @@ ENGINE=flink BUILD_DIR=. JMEOS_COORDS=org.jmeos:meos:1.0 GENERATOR_DEST=tools -BUILD_CMD='LD_LIBRARY_PATH="$PREFIX/lib" mvn -B -Dmeos.lib.dir="$PREFIX/lib" -Dmeos.enabled=true clean test' +BUILD_CMD='LD_LIBRARY_PATH="$PREFIX/lib" mvn -B -Dmeos.lib.dir="$PREFIX/lib" clean test'