Skip to content
Snippets Groups Projects
Commit 19b73c2c authored by Jari-Matti Mäkelä's avatar Jari-Matti Mäkelä
Browse files

Adjustments for a modular build

parent fcef2ca6
No related branches found
No related tags found
No related merge requests found
Pipeline #78601 passed
image: maven:3-eclipse-temurin-17
variables:
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version"
cache:
key: "$CI_JOB_NAME"
paths:
- .m2/repository
stages:
- build
- deploy
build:
stage: build
script:
- ./processor.sh
- mvn install -s ci_settings.xml
artifacts:
paths:
- target/
- src/
deploy:
stage: deploy
rules:
- if: $CI_COMMIT_TAG
script:
- mvn deploy -s ci_settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Job-Token</name>
<value>${env.CI_JOB_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
</settings>
module fi.utu.tech.kmqtt {
requires kotlin.stdlib;
requires kotlinx.atomicfu;
//requires kotlinx.coroutines.core;
exports fi.utu.tech.kmqtt;
exports fi.utu.tech.kmqtt.mqtt;
exports fi.utu.tech.kmqtt.mqtt.packets;
exports fi.utu.tech.kmqtt.mqtt.packets.mqtt;
exports fi.utu.tech.kmqtt.mqtt.packets.mqttv4;
exports fi.utu.tech.kmqtt.mqtt.packets.mqttv5;
exports fi.utu.tech.kmqtt.socket;
exports fi.utu.tech.kmqtt.socket.streams;
exports fi.utu.tech.kmqtt.socket.tcp;
exports fi.utu.tech.kmqtt.socket.tls;
}
pom.xml 0 → 100644
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>fi.utu.tech</groupId>
<artifactId>kmqtt-jpms</artifactId>
<version>0.4.8</version>
<name>MQTT client by io.github.davidepianca98</name>
<packaging>jar</packaging>
<properties>
<!--<project.mainclass>TestKt</project.mainclass>-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
<jdk.version>17</jdk.version>
<kotlin.version>2.0.20</kotlin.version>
<jqwik.version>1.8.4</jqwik.version>
<junit.version>5.10.2</junit.version>
<junitplatform.version>1.10.2</junitplatform.version>
</properties>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.jqwik</groupId>
<artifactId>jqwik</artifactId>
<version>${jqwik.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>${junitplatform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency><!--
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-core-jvm</artifactId>
<version>1.9.0</version>
</dependency>-->
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>atomicfu-jvm</artifactId>
<version>0.25.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>${jdk.version}</jvmTarget>
</configuration>
</plugin><!--
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>${project.mainclass}</mainClass>
<cleanupDaemonThreads>false</cleanupDaemonThreads>
</configuration>
</plugin>-->
</plugins>
</build>
<distributionManagement>
<repository>
<id>gitlab-maven</id>
<url>${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
</repository>
<snapshotRepository>
<id>gitlab-maven</id>
<url>${env.CI_API_V4_URL}/projects/${env.CI_PROJECT_ID}/packages/maven</url>
</snapshotRepository>
</distributionManagement>
</project>
PREFIX=fi/utu/tech/kmqtt
#PREFIX=io/github/davidepianca98/kmqtt
PREFIX2="${PREFIX//\//.}"
mkdir KMQTT
cp -r km* KMQTT
#git clone https://github.com/davidepianca98/KMQTT KMQTT
[ ! -e kmqtt-new ] || rm -fr kmqtt-new
mkdir -p kmqtt-new
for dir in $(find KMQTT/ -maxdepth 1 -type d -name 'km*'); do
mkdir -p ${dir/KMQTT/kmqtt-new}
done
for f in $(find KMQTT/ -type f -name '*kt'); do
D="$(dirname "$f")"
D="${D/KMQTT/kmqtt-new}"
D="${D/kotlin/kotlin/$PREFIX}"
F="$(basename $f)"
mkdir -p "$D"
# adjust the package declarations
echo $D|sed 's|\([^/]*/\)\{5\}|package |;s/\//./g;s/$//' > "$D/$F"
# remove old package declarations
sed 's/^package .*//g' "$f" >> "$D/$F"
# adjust FQNs for imports
sed -i "s/^import mqtt/import ${PREFIX2}.mqtt/g;s/^import socket/import ${PREFIX2}.socket/g;s/^import toUByteArray/import ${PREFIX2}.toUByteArray/g;s/^import validateUTF8String/import ${PREFIX2}.validateUTF8String/g;s/^import validatePayloadFormat/import ${PREFIX2}.validatePayloadFormat/g;s/^import currentTimeMillis/import ${PREFIX2}.currentTimeMillis/g" "$D/$F"
done
# ---
# create a jvm only build
[ ! -e kmqtt-jvm ] || rm -fr kmqtt-jvm
mkdir -p kmqtt-jvm/src/main/java/
# merge the sources
for m in kmqtt-common kmqtt-client; do
cp -r kmqtt-new/$m/src/commonMain/kotlin/* kmqtt-jvm/src/main/java/
cp -r kmqtt-new/$m/src/jvmMain/kotlin/* kmqtt-jvm/src/main/java/
done
for f in $(find kmqtt-jvm/ -type f -name '*kt'); do
# disable coroutines
sed -i 's/import kotlinx.coroutines/\/\//g' "$f"
sed -i 's/public fun runSuspend.*/private fun unImplemented() {/g' "$f"
sed -i 's/public fun runSuspend.*/private fun unImplemented() {/g' "$f"
sed -i 's/CoroutineScope(dispatcher).launch/synchronized(lock)/g' "$f"
# simplify locking
sed -i 's/private val lock = ReentrantLock()/private val lock = Object()/g' "$f"
sed -i 's/lock.withLock/synchronized(lock)/g' "$f"
# remove expect/actual annotations
sed -i "s/^public expect fun.*//g" "$f"
sed -i "s/actual \(fun\|val\|annotation\|constructor\|class\|override\|open\)/\1/g" "$f"
done
cp kmqtt-jvm/src . -r
cp module-info.java src/main/java
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment