diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml deleted file mode 100644 index dd2d2911..00000000 --- a/.github/workflows/benchmarks.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Performance monitoring -on: - push: - branches: - - "master" - pull_request: - -jobs: - benchmarks: - strategy: - matrix: - os: [ubuntu-latest] - jvm: [17,19] - benchmark: [BindingsBenchmarks, TransferBenchmarks] - jit: [NoJIT, Standard] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v3 - - uses: coursier/cache-action@v6 - - uses: VirtusLab/scala-cli-setup@v0.1.20 - with: - jvm: temurin:1.${{ matrix.jvm }} - apps: mill - - run: mill j${{ matrix.jvm }}.benchmarks.test -f1 -wi 2 -i 2 -o j${{ matrix.jvm }}-${{ matrix.os }}.bench -rff j${{ matrix.jvm }}-${{ matrix.os }}.json -rf json .*${{ matrix.benchmark }}${{ matrix.jit }}.* - - run: scala-cli run scripts/PublishBenchmarkReport.sc -- "Java ${{ matrix.jvm}}" ${{ matrix.os }} out/j${{ matrix.jvm }}/benchmarks/test/jmhRun.dest/j${{ matrix.jvm }}-${{ matrix.os }}.json ${{ matrix.benchmark }} ${{ matrix.jit }} >> $GITHUB_STEP_SUMMARY - - uses: actions/upload-artifact@v3 - with: - path: out/j${{ matrix.jvm }}/benchmarks/test/jmhRun.dest/* diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bdb4452d..96369839 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,85 +12,15 @@ jobs: steps: - uses: actions/checkout@v3 - uses: coursier/cache-action@v6 - - uses: coursier/setup-action@v1.3.0 - with: - jvm: temurin:1.17 - apps: mill - - run: mill mill.scalalib.scalafmt.ScalafmtModule/checkFormatAll __.sources + - uses: bleep-build/bleep-setup-action@0.0.1 + - run: bleep fmt --check unit-tests: - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: coursier/cache-action@v6 - - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: | - 17 - 19 + - uses: bleep-build/bleep-setup-action@0.0.1 - run: mkdir reports - name: Core tests - run: | - ./mill core.compile - ./mill core.test - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64}} - - - run: | - ./mill core.scoverage.xmlReport - cp out/core/scoverage/xmlReport.dest/scoverage.xml reports/core-coverage.xml - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64}} - - - - - name: Java 17 Implementation test - run: | - ./mill j17.compile - ./mill j17.test - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64}} - - - run: | - ./mill j17.scoverage.xmlReport - cp out/j17/scoverage/xmlReport.dest/scoverage.xml reports/java17-coverage.xml - - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64}} - - - name: Java 19 Implementation test - run: | - ./mill j19.compile - ./mill j19.test - - - run: | - ./mill j19.scoverage.xmlReport - cp out/j19/scoverage/xmlReport.dest/scoverage.xml reports/java19-coverage.xml - - - name: Runtime 17 implementation tests - run: ./mill runtime.test - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64 }} - - - run: | - ./mill runtime.scoverage.xmlReport - cp out/runtime/scoverage/xmlReport.dest/scoverage.xml reports/java-17-runtime-coverage.xml - - env: - JAVA_HOME: ${{ env.JAVA_HOME_17_X64 }} - - - name: Runtime 19 implementation tests - run: ./mill runtime.test - - run: | - ./mill runtime.scoverage.xmlReport - cp out/runtime/scoverage/xmlReport.dest/scoverage.xml reports/java-19-runtime-coverage.xml - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - directory: reports - flags: ${{ matrix.os }} \ No newline at end of file + run: bleep test core-tests \ No newline at end of file diff --git a/bleep.yaml b/bleep.yaml new file mode 100644 index 00000000..5db22669 --- /dev/null +++ b/bleep.yaml @@ -0,0 +1,52 @@ +$schema: https://raw.githubusercontent.com/oyvindberg/bleep/master/schema.json +$version: 0.0.2 +jvm: + name: temurin:1.17 +projects: + core: + dependencies: org.scala-lang::scala3-staging:3.3.0 + extends: + - template-common + + + core-tests: + dependencies: + - org.scalameta::munit:1.0.0-M7 + - org.scalameta::munit-scalacheck:1.0.0-M7 + dependsOn: core + extends: + - template-common + isTestProject: true + my-scripts: + extends: + - template-common + dependencies: + - build.bleep::bleep-plugin-dynver:${BLEEP_VERSION} + - org.scoverage::scalac-scoverage-reporter:2.0.10 + - org.scoverage::scalac-scoverage-domain:2.0.10 + - org.scoverage::scalac-scoverage-serializer:2.0.10 + +scripts: + my-publish-local: my-scripts/fr.hammons.slinc.scripts.PublishLocal + scoverage-report: my-scripts/fr.hammons.slinc.scripts.ScoverageReport +# main: fr.hammons.slinc.scripts.PublishLocal +# project: scripts + +templates: + template-common: + platform: + name: jvm + scala: + version: 3.3.0 + options: + - -deprecation + - -Wunused:all + - -feature + - -unchecked + - -Xcheck-macros + - -Xprint-suspension + - -Yexplicit-nulls + - -Ysafe-init + - -source:future + - -Ykind-projector + - -Vprofile diff --git a/core/test/resources/native/test.c b/core-tests/src/resources/native/test.c similarity index 100% rename from core/test/resources/native/test.c rename to core-tests/src/resources/native/test.c diff --git a/core/test/src/fr/hammons/slinc/BindingSpec.scala b/core-tests/src/scala/fr/hammons/slinc/BindingSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/BindingSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/BindingSpec.scala diff --git a/core/test/src/fr/hammons/slinc/FSetRuntimeSpec.scala b/core-tests/src/scala/fr/hammons/slinc/FSetRuntimeSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/FSetRuntimeSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/FSetRuntimeSpec.scala diff --git a/core/test/src/fr/hammons/slinc/FSetSpec.scala b/core-tests/src/scala/fr/hammons/slinc/FSetSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/FSetSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/FSetSpec.scala diff --git a/core/test/src/fr/hammons/slinc/SetSizeArraySpec.scala b/core-tests/src/scala/fr/hammons/slinc/SetSizeArraySpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/SetSizeArraySpec.scala rename to core-tests/src/scala/fr/hammons/slinc/SetSizeArraySpec.scala diff --git a/core/test/src/fr/hammons/slinc/StdlibSpec.scala b/core-tests/src/scala/fr/hammons/slinc/StdlibSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/StdlibSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/StdlibSpec.scala diff --git a/core/test/src/fr/hammons/slinc/TransferSpec.scala b/core-tests/src/scala/fr/hammons/slinc/TransferSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/TransferSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/TransferSpec.scala diff --git a/core/test/src/fr/hammons/slinc/TypeDescriptorSpec.scala b/core-tests/src/scala/fr/hammons/slinc/TypeDescriptorSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/TypeDescriptorSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/TypeDescriptorSpec.scala diff --git a/core/test/src/fr/hammons/slinc/TypesSpec.scala b/core-tests/src/scala/fr/hammons/slinc/TypesSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/TypesSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/TypesSpec.scala diff --git a/core/test/src/fr/hammons/slinc/jitc/JitSpecification.scala b/core-tests/src/scala/fr/hammons/slinc/jitc/JitSpecification.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/jitc/JitSpecification.scala rename to core-tests/src/scala/fr/hammons/slinc/jitc/JitSpecification.scala diff --git a/core/test/src/fr/hammons/slinc/modules/DescriptorSpec.scala b/core-tests/src/scala/fr/hammons/slinc/modules/DescriptorSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/modules/DescriptorSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/modules/DescriptorSpec.scala diff --git a/core/test/src/fr/hammons/slinc/modules/LinkageToolsSpec.scala b/core-tests/src/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala similarity index 100% rename from core/test/src/fr/hammons/slinc/modules/LinkageToolsSpec.scala rename to core-tests/src/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala diff --git a/core/src/fr/hammons/slinc/Alias.scala b/core/src/scala/fr/hammons/slinc/Alias.scala similarity index 100% rename from core/src/fr/hammons/slinc/Alias.scala rename to core/src/scala/fr/hammons/slinc/Alias.scala diff --git a/core/src/fr/hammons/slinc/Allocator.scala b/core/src/scala/fr/hammons/slinc/Allocator.scala similarity index 100% rename from core/src/fr/hammons/slinc/Allocator.scala rename to core/src/scala/fr/hammons/slinc/Allocator.scala diff --git a/core/src/fr/hammons/slinc/Bytes.scala b/core/src/scala/fr/hammons/slinc/Bytes.scala similarity index 100% rename from core/src/fr/hammons/slinc/Bytes.scala rename to core/src/scala/fr/hammons/slinc/Bytes.scala diff --git a/core/src/fr/hammons/slinc/CFunctionDescriptor.scala b/core/src/scala/fr/hammons/slinc/CFunctionDescriptor.scala similarity index 100% rename from core/src/fr/hammons/slinc/CFunctionDescriptor.scala rename to core/src/scala/fr/hammons/slinc/CFunctionDescriptor.scala diff --git a/core/src/fr/hammons/slinc/CUnion.scala b/core/src/scala/fr/hammons/slinc/CUnion.scala similarity index 100% rename from core/src/fr/hammons/slinc/CUnion.scala rename to core/src/scala/fr/hammons/slinc/CUnion.scala diff --git a/core/src/fr/hammons/slinc/DescriptorOf.scala b/core/src/scala/fr/hammons/slinc/DescriptorOf.scala similarity index 100% rename from core/src/fr/hammons/slinc/DescriptorOf.scala rename to core/src/scala/fr/hammons/slinc/DescriptorOf.scala diff --git a/core/src/fr/hammons/slinc/FSet.scala b/core/src/scala/fr/hammons/slinc/FSet.scala similarity index 100% rename from core/src/fr/hammons/slinc/FSet.scala rename to core/src/scala/fr/hammons/slinc/FSet.scala diff --git a/core/src/fr/hammons/slinc/FunctionBindingGenerator.scala b/core/src/scala/fr/hammons/slinc/FunctionBindingGenerator.scala similarity index 100% rename from core/src/fr/hammons/slinc/FunctionBindingGenerator.scala rename to core/src/scala/fr/hammons/slinc/FunctionBindingGenerator.scala diff --git a/core/src/fr/hammons/slinc/FunctionContext.scala b/core/src/scala/fr/hammons/slinc/FunctionContext.scala similarity index 100% rename from core/src/fr/hammons/slinc/FunctionContext.scala rename to core/src/scala/fr/hammons/slinc/FunctionContext.scala diff --git a/core/src/fr/hammons/slinc/FunctionDescriptor.scala b/core/src/scala/fr/hammons/slinc/FunctionDescriptor.scala similarity index 100% rename from core/src/fr/hammons/slinc/FunctionDescriptor.scala rename to core/src/scala/fr/hammons/slinc/FunctionDescriptor.scala diff --git a/core/src/fr/hammons/slinc/InlineHelpers.scala b/core/src/scala/fr/hammons/slinc/InlineHelpers.scala similarity index 100% rename from core/src/fr/hammons/slinc/InlineHelpers.scala rename to core/src/scala/fr/hammons/slinc/InlineHelpers.scala diff --git a/core/src/fr/hammons/slinc/MacroHelpers.scala b/core/src/scala/fr/hammons/slinc/MacroHelpers.scala similarity index 100% rename from core/src/fr/hammons/slinc/MacroHelpers.scala rename to core/src/scala/fr/hammons/slinc/MacroHelpers.scala diff --git a/core/src/fr/hammons/slinc/Mem.scala b/core/src/scala/fr/hammons/slinc/Mem.scala similarity index 100% rename from core/src/fr/hammons/slinc/Mem.scala rename to core/src/scala/fr/hammons/slinc/Mem.scala diff --git a/core/src/fr/hammons/slinc/MethodCompatible.scala b/core/src/scala/fr/hammons/slinc/MethodCompatible.scala similarity index 100% rename from core/src/fr/hammons/slinc/MethodCompatible.scala rename to core/src/scala/fr/hammons/slinc/MethodCompatible.scala diff --git a/core/src/fr/hammons/slinc/MethodHandleFacade.java b/core/src/scala/fr/hammons/slinc/MethodHandleFacade.java similarity index 100% rename from core/src/fr/hammons/slinc/MethodHandleFacade.java rename to core/src/scala/fr/hammons/slinc/MethodHandleFacade.java diff --git a/core/src/fr/hammons/slinc/MethodHandleTools.scala b/core/src/scala/fr/hammons/slinc/MethodHandleTools.scala similarity index 100% rename from core/src/fr/hammons/slinc/MethodHandleTools.scala rename to core/src/scala/fr/hammons/slinc/MethodHandleTools.scala diff --git a/core/src/fr/hammons/slinc/MethodHandler.scala b/core/src/scala/fr/hammons/slinc/MethodHandler.scala similarity index 100% rename from core/src/fr/hammons/slinc/MethodHandler.scala rename to core/src/scala/fr/hammons/slinc/MethodHandler.scala diff --git a/core/src/fr/hammons/slinc/Ptr.scala b/core/src/scala/fr/hammons/slinc/Ptr.scala similarity index 100% rename from core/src/fr/hammons/slinc/Ptr.scala rename to core/src/scala/fr/hammons/slinc/Ptr.scala diff --git a/core/src/fr/hammons/slinc/Scope.scala b/core/src/scala/fr/hammons/slinc/Scope.scala similarity index 100% rename from core/src/fr/hammons/slinc/Scope.scala rename to core/src/scala/fr/hammons/slinc/Scope.scala diff --git a/core/src/fr/hammons/slinc/SetSizeArray.scala b/core/src/scala/fr/hammons/slinc/SetSizeArray.scala similarity index 100% rename from core/src/fr/hammons/slinc/SetSizeArray.scala rename to core/src/scala/fr/hammons/slinc/SetSizeArray.scala diff --git a/core/src/fr/hammons/slinc/Slinc.scala b/core/src/scala/fr/hammons/slinc/Slinc.scala similarity index 100% rename from core/src/fr/hammons/slinc/Slinc.scala rename to core/src/scala/fr/hammons/slinc/Slinc.scala diff --git a/core/src/fr/hammons/slinc/SlincImpl.scala b/core/src/scala/fr/hammons/slinc/SlincImpl.scala similarity index 100% rename from core/src/fr/hammons/slinc/SlincImpl.scala rename to core/src/scala/fr/hammons/slinc/SlincImpl.scala diff --git a/core/src/fr/hammons/slinc/Struct.scala b/core/src/scala/fr/hammons/slinc/Struct.scala similarity index 100% rename from core/src/fr/hammons/slinc/Struct.scala rename to core/src/scala/fr/hammons/slinc/Struct.scala diff --git a/core/src/fr/hammons/slinc/TypeDescriptor.scala b/core/src/scala/fr/hammons/slinc/TypeDescriptor.scala similarity index 100% rename from core/src/fr/hammons/slinc/TypeDescriptor.scala rename to core/src/scala/fr/hammons/slinc/TypeDescriptor.scala diff --git a/core/src/fr/hammons/slinc/VarArgs.scala b/core/src/scala/fr/hammons/slinc/VarArgs.scala similarity index 100% rename from core/src/fr/hammons/slinc/VarArgs.scala rename to core/src/scala/fr/hammons/slinc/VarArgs.scala diff --git a/core/src/fr/hammons/slinc/VarArgsBuilder.scala b/core/src/scala/fr/hammons/slinc/VarArgsBuilder.scala similarity index 100% rename from core/src/fr/hammons/slinc/VarArgsBuilder.scala rename to core/src/scala/fr/hammons/slinc/VarArgsBuilder.scala diff --git a/core/src/fr/hammons/slinc/Variadic.scala b/core/src/scala/fr/hammons/slinc/Variadic.scala similarity index 100% rename from core/src/fr/hammons/slinc/Variadic.scala rename to core/src/scala/fr/hammons/slinc/Variadic.scala diff --git a/core/src/fr/hammons/slinc/VoidHelper.java b/core/src/scala/fr/hammons/slinc/VoidHelper.java similarity index 100% rename from core/src/fr/hammons/slinc/VoidHelper.java rename to core/src/scala/fr/hammons/slinc/VoidHelper.java diff --git a/core/src/fr/hammons/slinc/annotations/DependencyAnnotation.scala b/core/src/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala similarity index 100% rename from core/src/fr/hammons/slinc/annotations/DependencyAnnotation.scala rename to core/src/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala diff --git a/core/src/fr/hammons/slinc/annotations/NameOverride.scala b/core/src/scala/fr/hammons/slinc/annotations/NameOverride.scala similarity index 100% rename from core/src/fr/hammons/slinc/annotations/NameOverride.scala rename to core/src/scala/fr/hammons/slinc/annotations/NameOverride.scala diff --git a/core/src/fr/hammons/slinc/annotations/Needs.scala b/core/src/scala/fr/hammons/slinc/annotations/Needs.scala similarity index 100% rename from core/src/fr/hammons/slinc/annotations/Needs.scala rename to core/src/scala/fr/hammons/slinc/annotations/Needs.scala diff --git a/core/src/fr/hammons/slinc/annotations/NeedsFile.scala b/core/src/scala/fr/hammons/slinc/annotations/NeedsFile.scala similarity index 100% rename from core/src/fr/hammons/slinc/annotations/NeedsFile.scala rename to core/src/scala/fr/hammons/slinc/annotations/NeedsFile.scala diff --git a/core/src/fr/hammons/slinc/annotations/NeedsResource.scala b/core/src/scala/fr/hammons/slinc/annotations/NeedsResource.scala similarity index 100% rename from core/src/fr/hammons/slinc/annotations/NeedsResource.scala rename to core/src/scala/fr/hammons/slinc/annotations/NeedsResource.scala diff --git a/core/src/fr/hammons/slinc/container/Capabilities.scala b/core/src/scala/fr/hammons/slinc/container/Capabilities.scala similarity index 100% rename from core/src/fr/hammons/slinc/container/Capabilities.scala rename to core/src/scala/fr/hammons/slinc/container/Capabilities.scala diff --git a/core/src/fr/hammons/slinc/container/Container.scala b/core/src/scala/fr/hammons/slinc/container/Container.scala similarity index 100% rename from core/src/fr/hammons/slinc/container/Container.scala rename to core/src/scala/fr/hammons/slinc/container/Container.scala diff --git a/core/src/fr/hammons/slinc/container/ContextProof.scala b/core/src/scala/fr/hammons/slinc/container/ContextProof.scala similarity index 100% rename from core/src/fr/hammons/slinc/container/ContextProof.scala rename to core/src/scala/fr/hammons/slinc/container/ContextProof.scala diff --git a/core/src/fr/hammons/slinc/container/ContextSet.scala b/core/src/scala/fr/hammons/slinc/container/ContextSet.scala similarity index 100% rename from core/src/fr/hammons/slinc/container/ContextSet.scala rename to core/src/scala/fr/hammons/slinc/container/ContextSet.scala diff --git a/core/src/fr/hammons/slinc/container/LocationInCap.scala b/core/src/scala/fr/hammons/slinc/container/LocationInCap.scala similarity index 100% rename from core/src/fr/hammons/slinc/container/LocationInCap.scala rename to core/src/scala/fr/hammons/slinc/container/LocationInCap.scala diff --git a/core/src/fr/hammons/slinc/fnutils/Fn.scala b/core/src/scala/fr/hammons/slinc/fnutils/Fn.scala similarity index 100% rename from core/src/fr/hammons/slinc/fnutils/Fn.scala rename to core/src/scala/fr/hammons/slinc/fnutils/Fn.scala diff --git a/core/src/fr/hammons/slinc/fnutils/NativeFn.scala b/core/src/scala/fr/hammons/slinc/fnutils/NativeFn.scala similarity index 100% rename from core/src/fr/hammons/slinc/fnutils/NativeFn.scala rename to core/src/scala/fr/hammons/slinc/fnutils/NativeFn.scala diff --git a/core/src/fr/hammons/slinc/fset/Dependency.scala b/core/src/scala/fr/hammons/slinc/fset/Dependency.scala similarity index 100% rename from core/src/fr/hammons/slinc/fset/Dependency.scala rename to core/src/scala/fr/hammons/slinc/fset/Dependency.scala diff --git a/core/src/fr/hammons/slinc/fset/FSetBacking.scala b/core/src/scala/fr/hammons/slinc/fset/FSetBacking.scala similarity index 100% rename from core/src/fr/hammons/slinc/fset/FSetBacking.scala rename to core/src/scala/fr/hammons/slinc/fset/FSetBacking.scala diff --git a/core/src/fr/hammons/slinc/jitc/Intrumentation.scala b/core/src/scala/fr/hammons/slinc/jitc/Intrumentation.scala similarity index 100% rename from core/src/fr/hammons/slinc/jitc/Intrumentation.scala rename to core/src/scala/fr/hammons/slinc/jitc/Intrumentation.scala diff --git a/core/src/fr/hammons/slinc/jitc/JitCService.scala b/core/src/scala/fr/hammons/slinc/jitc/JitCService.scala similarity index 100% rename from core/src/fr/hammons/slinc/jitc/JitCService.scala rename to core/src/scala/fr/hammons/slinc/jitc/JitCService.scala diff --git a/core/src/fr/hammons/slinc/jitc/OptimizableFn.scala b/core/src/scala/fr/hammons/slinc/jitc/OptimizableFn.scala similarity index 95% rename from core/src/fr/hammons/slinc/jitc/OptimizableFn.scala rename to core/src/scala/fr/hammons/slinc/jitc/OptimizableFn.scala index f40fdaeb..cc01b215 100644 --- a/core/src/fr/hammons/slinc/jitc/OptimizableFn.scala +++ b/core/src/scala/fr/hammons/slinc/jitc/OptimizableFn.scala @@ -12,13 +12,12 @@ class OptimizableFn[F]( )(optimized: JitCompiler => F): private val _fn: AtomicReference[F] = AtomicReference(f(inst)) val uuid = UUID.randomUUID().nn - private val _optFn: AtomicReference[F] = AtomicReference( + private val _optFn: AtomicReference[F] = if inst.getCount() >= limit then var opt: F | Null = null optimizer.jitC(uuid, jitCompiler => opt = optimized(jitCompiler)) - opt - else null - ) + AtomicReference(opt.nn) + else AtomicReference() def get: F = val optFn = _optFn.getOpaque() diff --git a/core/src/fr/hammons/slinc/modules/CacheFile.scala b/core/src/scala/fr/hammons/slinc/modules/CacheFile.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/CacheFile.scala rename to core/src/scala/fr/hammons/slinc/modules/CacheFile.scala diff --git a/core/src/fr/hammons/slinc/modules/DependentTrieMap.scala b/core/src/scala/fr/hammons/slinc/modules/DependentTrieMap.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/DependentTrieMap.scala rename to core/src/scala/fr/hammons/slinc/modules/DependentTrieMap.scala diff --git a/core/src/fr/hammons/slinc/modules/DescriptorModule.scala b/core/src/scala/fr/hammons/slinc/modules/DescriptorModule.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/DescriptorModule.scala rename to core/src/scala/fr/hammons/slinc/modules/DescriptorModule.scala diff --git a/core/src/fr/hammons/slinc/modules/FSetModule.scala b/core/src/scala/fr/hammons/slinc/modules/FSetModule.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/FSetModule.scala rename to core/src/scala/fr/hammons/slinc/modules/FSetModule.scala diff --git a/core/src/fr/hammons/slinc/modules/LinkageModule.scala b/core/src/scala/fr/hammons/slinc/modules/LinkageModule.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/LinkageModule.scala rename to core/src/scala/fr/hammons/slinc/modules/LinkageModule.scala diff --git a/core/src/fr/hammons/slinc/modules/LinkageTools.scala b/core/src/scala/fr/hammons/slinc/modules/LinkageTools.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/LinkageTools.scala rename to core/src/scala/fr/hammons/slinc/modules/LinkageTools.scala diff --git a/core/src/fr/hammons/slinc/modules/ReadWriteModule.scala b/core/src/scala/fr/hammons/slinc/modules/ReadWriteModule.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/ReadWriteModule.scala rename to core/src/scala/fr/hammons/slinc/modules/ReadWriteModule.scala diff --git a/core/src/fr/hammons/slinc/modules/TransitionModule.scala b/core/src/scala/fr/hammons/slinc/modules/TransitionModule.scala similarity index 100% rename from core/src/fr/hammons/slinc/modules/TransitionModule.scala rename to core/src/scala/fr/hammons/slinc/modules/TransitionModule.scala diff --git a/core/src/fr/hammons/slinc/types/Arch.scala b/core/src/scala/fr/hammons/slinc/types/Arch.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/Arch.scala rename to core/src/scala/fr/hammons/slinc/types/Arch.scala diff --git a/core/src/fr/hammons/slinc/types/Basic.scala b/core/src/scala/fr/hammons/slinc/types/Basic.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/Basic.scala rename to core/src/scala/fr/hammons/slinc/types/Basic.scala diff --git a/core/src/fr/hammons/slinc/types/CLong.scala b/core/src/scala/fr/hammons/slinc/types/CLong.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/CLong.scala rename to core/src/scala/fr/hammons/slinc/types/CLong.scala diff --git a/core/src/fr/hammons/slinc/types/HostDependentTypes.scala b/core/src/scala/fr/hammons/slinc/types/HostDependentTypes.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/HostDependentTypes.scala rename to core/src/scala/fr/hammons/slinc/types/HostDependentTypes.scala diff --git a/core/src/fr/hammons/slinc/types/IntegralAlias.scala b/core/src/scala/fr/hammons/slinc/types/IntegralAlias.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/IntegralAlias.scala rename to core/src/scala/fr/hammons/slinc/types/IntegralAlias.scala diff --git a/core/src/fr/hammons/slinc/types/OS.scala b/core/src/scala/fr/hammons/slinc/types/OS.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/OS.scala rename to core/src/scala/fr/hammons/slinc/types/OS.scala diff --git a/core/src/fr/hammons/slinc/types/SizeT.scala b/core/src/scala/fr/hammons/slinc/types/SizeT.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/SizeT.scala rename to core/src/scala/fr/hammons/slinc/types/SizeT.scala diff --git a/core/src/fr/hammons/slinc/types/TimeT.scala b/core/src/scala/fr/hammons/slinc/types/TimeT.scala similarity index 100% rename from core/src/fr/hammons/slinc/types/TimeT.scala rename to core/src/scala/fr/hammons/slinc/types/TimeT.scala diff --git a/my-scripts/src/scala/fr/hammons/slinc/scripts/AddCoverage.scala b/my-scripts/src/scala/fr/hammons/slinc/scripts/AddCoverage.scala new file mode 100644 index 00000000..dd8436fd --- /dev/null +++ b/my-scripts/src/scala/fr/hammons/slinc/scripts/AddCoverage.scala @@ -0,0 +1,41 @@ +package fr.hammons.slinc.scripts + +import bleep.rewrites.BuildRewrite +import bleep.model.BuildRewriteName +import bleep.model.Build +import bleep.model.CrossProjectName +import bleep.model.Project +import bleep.model.Options +import bleep.PathOps +import java.nio.file.Paths +import java.nio.file.Files + +object AddCoverage extends BuildRewrite: + override val name: BuildRewriteName = BuildRewriteName("add-coverage") + + override protected def newExplodedProjects( + oldBuild: Build + ): Map[CrossProjectName, Project] = + val buildTarget = Paths.get(".bleep").nn / "builds" / name.value / ".bloop" + oldBuild.explodedProjects + .map: (crossName, p) => + if !p.isTestProject.getOrElse(false) then + val projectTarget = + buildTarget / crossName.value / "scoverage-reports" + + Files.createDirectories(projectTarget) + crossName -> p.copy(scala = + p.scala.map(s => + s.copy(options = + s.options.union( + Options.parse( + List( + s"-coverage-out:${projectTarget.toFile().nn.getAbsoluteFile().nn.toString()}/" + ), + None + ) + ) + ) + ) + ) + else crossName -> p diff --git a/my-scripts/src/scala/fr/hammons/slinc/scripts/PublishLocal.scala b/my-scripts/src/scala/fr/hammons/slinc/scripts/PublishLocal.scala new file mode 100644 index 00000000..3930710f --- /dev/null +++ b/my-scripts/src/scala/fr/hammons/slinc/scripts/PublishLocal.scala @@ -0,0 +1,24 @@ +package fr.hammons.slinc.scripts + +import bleep.* +import bleep.plugin.dynver.DynVerPlugin + +object PublishLocal extends BleepScript("PublishLocal"): + def run(started: Started, commands: Commands, args: List[String]): Unit = { + val dynVer = new DynVerPlugin( + baseDirectory = started.buildPaths.buildDir.toFile.nn, + dynverSonatypeSnapshots = true, + dynverTagPrefix = Some("") + ) + val projects = started.build.explodedProjects.keys.toArray + .filter(projectsToPublish.include) + + commands.publishLocal( + bleep.commands.PublishLocal.Options( + groupId = "build.bleep", + version = dynVer.version, + publishTarget = bleep.commands.PublishLocal.LocalIvy, + projects = projects + ) + ) + } diff --git a/my-scripts/src/scala/fr/hammons/slinc/scripts/ScoverageReport.scala b/my-scripts/src/scala/fr/hammons/slinc/scripts/ScoverageReport.scala new file mode 100644 index 00000000..c90073fe --- /dev/null +++ b/my-scripts/src/scala/fr/hammons/slinc/scripts/ScoverageReport.scala @@ -0,0 +1,81 @@ +package fr.hammons.slinc.scripts + +import bleep.BleepScript +import bleep.Started +import bleep.Commands +import bleep.rewrites.BuildRewrite +import bleep.PathOps + +import scoverage.reporter.CoverageAggregator +import scoverage.reporter.ScoverageXmlWriter +import java.io.File +import java.nio.file.Files +import scala.jdk.CollectionConverters.* +import scala.jdk.StreamConverters.* +import java.nio.file.Paths + +object ScoverageReport extends BleepScript("ScoverageReport"): + override val rewrites: List[BuildRewrite] = List(AddCoverage) + def run(started: Started, commands: Commands, args: List[String]): Unit = + + val testProjects = started.build.explodedProjects + .filter((_, p) => p.isTestProject.getOrElse(false)) + .keySet + .toList + + commands.compile( + started.build.explodedProjects.keys.toList + ) + + commands.test( + started.build.explodedProjects + .filter((_, p) => p.isTestProject.exists(identity)) + .keys + .toList + ) + + val projectPaths = started.build.explodedProjects + .filter((_, p) => !p.isTestProject.getOrElse(false)) + .map((cp, p) => started.buildPaths.project(cp, p)) + + + projectPaths + .flatMap: p => + Files + .list(p.targetDir / "scoverage-reports") + .nn + .toScala(List) + .filter(_.endsWith("scoverage.coverage")) + .foreach: df => + val mod = Files + .readAllLines(df) + .nn + .asScala + .map: s => + if s.startsWith("../") then + started.buildPaths.buildDir.toAbsolutePath().nn.relativize(Paths.get(s.stripPrefix(".."))).nn.toString() + else s + + Files.write(df, mod.mkString("\n").getBytes()) + + val coverage = projectPaths + .map(p => p.sourcesDirs.all -> p.targetDir / "scoverage-reports") + .map((sources, data) => + ( + sources, + data, + CoverageAggregator + .aggregate( + Seq(data.toFile().nn), + started.buildPaths.buildDir.toFile().nn + ) + ) + ) + + coverage.foreach: (sources, dataDir, coverage) => + ScoverageXmlWriter( + sources.map(_.toFile().nn).toSeq, + dataDir.toFile().nn, + false, + None + ).write(coverage.get) diff --git a/my-scripts/src/scala/fr/hammons/slinc/scripts/projectsToPublish.scala b/my-scripts/src/scala/fr/hammons/slinc/scripts/projectsToPublish.scala new file mode 100644 index 00000000..e1f873ff --- /dev/null +++ b/my-scripts/src/scala/fr/hammons/slinc/scripts/projectsToPublish.scala @@ -0,0 +1,13 @@ +package fr.hammons.slinc.scripts + +import bleep.model + +object projectsToPublish { + // will publish these with dependencies + def include(crossName: model.CrossProjectName): Boolean = + crossName.name.value match { + case "core" => true + case name if name.startsWith("bleep-plugin") => true + case _ => false + } +} \ No newline at end of file