#!/usr/bin/make -f include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/pkg-info.mk KOTLIN_VERSION_TO_BUILD := $(firstword $(subst +, ,$(DEB_VERSION))) KOTLIN_VERSION_INSTALLED := $(shell dpkg-query --showformat='$${Version}\n' -W kotlin) KOTLIN_VERSION_TO_USE := $(firstword $(subst +, ,$(KOTLIN_VERSION_INSTALLED))) COMMON_GRADLE_OPTIONS := -Dkotlin.compiler.execution.strategy=in-proces export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-$(DEB_BUILD_ARCH) export JDK_16=$(JAVA_HOME) %: dh $(@:_build=build) --buildsystem=gradle --with-maven-repo-helper # Allow retrying `debian/rules build` with an existing `build` subdir .PHONY: build build: _build debian/kotlin.poms: debian/kotlin.poms.in sed -e "s|__VERSION__|$(KOTLIN_VERSION_TO_BUILD)|g" < $< > $@ override_dh_auto_build: debian/kotlin.poms # Build Kotlin mkdir --parents buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib mkdir --parents buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellij-core mkdir --parents buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/jps-standalone cp -u /usr/share/java/guava.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/guava-25.1-jre.jar cp -u /usr/share/java/jdom2-intellij.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/jdom.jar cp -u /usr/share/java/jna.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/jna.jar cp -u /usr/share/java/jna-platform.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/jna-platform.jar cp -u /usr/share/java/log4j-1.2.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/log4j.jar cp -u /usr/share/java/oro.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/oro-2.0.8.jar cp -u /usr/share/java/picocontainer-1.3.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/picocontainer-1.2.jar cp -u /usr/share/java/libtrove-intellij.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/trove4j.jar cp -u /usr/share/java/intellij-java-compatibility.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellij-core/java-compatibility-1.0.1.jar cp -u /usr/share/java/streamex.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/streamex-0.6.7.jar cp -u /usr/share/java/lz4-java.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/lz4-1.3.0.jar cp -u /usr/share/java/guava.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/guava-25.1-jre.jar cp -u /usr/share/java/intellij-util-all.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/util.jar cp -u /usr/share/java/intellij-jps-model-all.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/jps-standalone/jps-model.jar cp -u /usr/share/java/intellij-extensions.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/extensions.jar cp -u /usr/share/java/intellij-platform-api.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/platform-api.jar cp -u /usr/share/java/intellij-platform-impl.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellijUltimate/lib/platform-impl.jar cp -u /usr/share/java/intellij-core.jar buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellij-core/intellij-core.jar ant -f ./debian/buildprotobufkotlin.xml cp ./debian/protobuf-debian.pom ./debian/maven-repo-cache/org/jetbrains/kotlin/protobuf/protobuf/debian/protobuf-debian.pom # Work around a rebuild issue by patching the compiler jar # This block can be removed once the version below is no longer # available and the dependency on kotlin in debian/control is updated # to >> 1.3.31+ds1-1 # Note 1: can't use --init-script due to # https://github.com/gradle/gradle/issues/1055 (fixed only in 8.0) # Note 2: jarjar + adhoc jar repack to overwrite only the relocated # intellij-core # Note 3: no symlinks as the build needs to be able to overwrite these files # Note 4: in-flight update of hardcoded java home paths set by patches if dpkg --compare-versions $(KOTLIN_VERSION_INSTALLED) le 1.3.31+ds1-1 ; then \ sed -i -e 's:/usr/lib/jvm/[^"]\+:$(JAVA_HOME):' build.gradle gradle.properties && \ ant -f debian/repack-intellij-core.xml && \ mkdir -p debian/tmp-repack-jar && \ cd debian/tmp-repack-jar && \ jar --extract --file=/usr/share/java/kotlin-compiler-embeddable.jar && \ cp -a META-INF/MANIFEST.MF META-INF/MANIFEST.MF.orig && \ jar --extract --file=$(CURDIR)/buildSrc/prepare-deps/intellij-sdk/repo/kotlin.build.custom.deps/183.5153.4/intellij-core/repacked-intellij-core.jar && \ cp -a META-INF/MANIFEST.MF.orig META-INF/MANIFEST.MF && \ $(RM) META-INF/MANIFEST.MF.orig && \ mkdir -p ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/$(KOTLIN_VERSION_TO_USE) && \ mkdir -p ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/debian && \ jar --create --file=../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/$(KOTLIN_VERSION_TO_USE)/kotlin-compiler-embeddable-$(KOTLIN_VERSION_TO_USE).jar \ --no-compress --manifest=META-INF/MANIFEST.MF . && \ cp -a --remove-destination \ ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/$(KOTLIN_VERSION_TO_USE)/kotlin-compiler-embeddable-$(KOTLIN_VERSION_TO_USE).jar \ ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/debian/kotlin-compiler-embeddable-debian.jar && \ cp -a --remove-destination \ /usr/share/maven-repo/org/jetbrains/kotlin/kotlin-compiler-embeddable/$(KOTLIN_VERSION_TO_USE)/kotlin-compiler-embeddable-$(KOTLIN_VERSION_TO_USE).pom \ ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/$(KOTLIN_VERSION_TO_USE)/. && \ cp -a --remove-destination \ /usr/share/maven-repo/org/jetbrains/kotlin/kotlin-compiler-embeddable/debian/kotlin-compiler-embeddable-debian.pom \ ../maven-repo-cache/org/jetbrains/kotlin/kotlin-compiler-embeddable/debian/. && \ cd - && \ $(RM) -R debian/tmp-repack-jar && \ mkdir -p .gradle/init.d && \ cp debian/init.gradle .gradle/init.d/init2.gradle ; \ fi dh_auto_build -- $(COMMON_GRADLE_OPTIONS) \ -PkotlinVersionToBuild=$(KOTLIN_VERSION_TO_BUILD) \ -PbuildSrc.kotlin.version=$(KOTLIN_VERSION_TO_USE) \ -Pbootstrap.kotlin.version=$(KOTLIN_VERSION_TO_USE) \ dist install \ -x :kotlin-android-extensions-runtime:compileKotlin \ -x :plugins:android-extensions-compiler:compileKotlin ln -sfT .gradle/daemon/4.4.1/.m2 .m2 dh_auto_configure --buildsystem=maven dh_auto_build --buildsystem=maven -- --file=libraries/pom.xml package override_dh_auto_clean: execute_before_dh_clean: debian/kotlin.poms # Compensate for not running clean on potential left outs. # .gitignore on upstream project has 'build/' as a pattern, so this should be safe. find buildSrc -name 'build' -and -type d | xargs rm -rf # Compensate for not being able to run maven with 'clean' as goal. find libraries -name target -and -type d | xargs rm -rf # Undo a file edit done by the Kotlin build system but not cleaned sed --in-place --regexp-extended --expression='s|(val CURRENT: KotlinVersion = KotlinVersion)\(([[:digit:]]+), ([[:digit:]]+), ([[:digit:]]+)\)|\1(\2, \3, 0)|' libraries/stdlib/src/kotlin/util/KotlinVersion.kt mh_unpatchpoms --package=kotlin rm -rf ./debian/kotlin.poms execute_before_dh_install: mh_install mh_install --rules=debian/maven.rules.debian override_dh_auto_test: