From a2c31530280612f40b53cc8b6a61f059e3196621 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 14:07:42 +0530 Subject: [PATCH 01/11] Changed libzim linux url Currently linux libzim tar file containing 0 byte .so file, so for now we are changing the libzim linux tar file url. Once this issue is fixed we will remove this temporary url. --- lib/build.gradle | 54 +++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index a063b89..8c65a53 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -77,7 +77,9 @@ dependencies { ext.libkiwix_base_url = 'https://download.kiwix.org/nightly' ext.libzim_base_url = 'https://download.openzim.org/nightly' -// change this date to get latest libzim .so and header files +// temporary url for libzim linux variant zim file, Once https://github.com/openzim/libzim/issues/772 fixed, then we can remove this +ext.linux_libzim_base_url = 'https://download.openzim.org/nightly/2023-03-20' + ext.nightly_date_for_libkiwix = project.properties["nightly_date_for_libkiwix"] ?: "" ext.nightly_date_for_libkiwix_linux = project.properties["nightly_date_for_libkiwix_linux"] ?: "" ext.nightly_date_for_libzim = project.properties["nightly_date_for_libzim"] ?: "" @@ -92,7 +94,7 @@ task downloadLibzimSoAndHeaderFiles(type: Download) { libzim_base_url + '/libzim_android-arm64.tar.gz', libzim_base_url + '/libzim_android-x86.tar.gz', libzim_base_url + '/libzim_android-x86_64.tar.gz', - libzim_base_url + '/libzim_linux-x86_64.tar.gz' + linux_libzim_base_url + '/libzim_linux-x86_64-2023-03-20.tar.gz' ]) dest buildDir overwrite true @@ -120,7 +122,7 @@ task unzipLibzim(type: Copy) { from tarTree(buildDir.path + "/libzim_android-x86_64.tar.gz") into buildDir // unzip linux x86_64 - from tarTree(buildDir.path + "/libzim_linux-x86_64.tar.gz") + from tarTree(buildDir.path + "/libzim_linux-x86_64-2023-03-20.tar.gz") into buildDir } @@ -300,30 +302,30 @@ task generateHeaderFilesFromJavaWrapper(type: Exec) { String getLibkiwixFiles() { return "${projectDir}/src/main/java/org/kiwix/libkiwix/Book.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Bookmark.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Filter.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/JNIICU.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Illustration.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/JNIKiwixException.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Library.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Manager.java " + - "${projectDir}/src/main/java/org/kiwix/libkiwix/Server.java" + "${projectDir}/src/main/java/org/kiwix/libkiwix/Bookmark.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/Filter.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/JNIICU.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/Illustration.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/JNIKiwixException.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/Library.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/Manager.java " + + "${projectDir}/src/main/java/org/kiwix/libkiwix/Server.java" } String getLibzimFiles() { return "${projectDir}/src/main/java/org/kiwix/libzim/Archive.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Blob.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/DirectAccessInfo.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/EntryIterator.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Entry.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Item.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Query.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Searcher.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/SearchIterator.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/Search.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionItem.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionIterator.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearcher.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " + - "${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java" -} + "${projectDir}/src/main/java/org/kiwix/libzim/Blob.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/DirectAccessInfo.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/EntryIterator.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/Entry.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/Item.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/Query.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/Searcher.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/SearchIterator.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/Search.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionItem.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionIterator.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearcher.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " + + "${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java" +} \ No newline at end of file From 2bda54747cb2d73508a04d356141e6f11c615de2 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 14:23:53 +0530 Subject: [PATCH 02/11] Renamed generateHeaderFilesFromJavaWrapper method This method is for building headers files, so for the better naming of this method we have renamed this as buildHeaders. --- .github/workflows/pull_request.yml | 2 +- .github/workflows/release.yml | 3 +-- README.md | 2 +- lib/build.gradle | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 26d97e9..c35dbb4 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -26,7 +26,7 @@ jobs: - name: Compile Project run: | - ./gradlew generateHeaderFilesFromJavaWrapper build + ./gradlew buildHeaders build - name: create unit coverage run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bd95407..3236798 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,8 +30,7 @@ jobs: - name: Compile Project run: | - ./gradlew generateHeaderFilesFromJavaWrapper - ./gradlew build + ./gradlew buildHeaders build - name: Release build run: | diff --git a/README.md b/README.md index 93d6add..ecebb30 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ cd java-libkiwix ```bash -./gradlew generateHeaderFilesFromJavaWrapper +./gradlew buildHeaders ./gradlew build ``` diff --git a/lib/build.gradle b/lib/build.gradle index 8c65a53..ef903a1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -295,7 +295,7 @@ task checkCurrentJavaVersion() { } -task generateHeaderFilesFromJavaWrapper(type: Exec) { +task buildHeaders(type: Exec) { workingDir "${projectDir}/src/main/java/org/kiwix/" commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${projectDir}/src/test/ ${getLibzimFiles()} ${getLibkiwixFiles()}" } From 392f54451e4df753bb101c9f0419013bc457d441 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 15:08:27 +0530 Subject: [PATCH 03/11] Generating .aar and .so file via CMakeList To avoid recompiling the source in test cases. Now we are generating .so file while building the .aar file. For this we have created buildLinuxBinding task which dependsOn build target. As now test/CMakeList is unused so we have removed it. --- lib/build.gradle | 9 +- lib/src/main/cpp/CMakeLists.txt | 144 ++++++++++++++++++++------------ lib/src/test/CMakeLists.txt | 44 ---------- lib/src/test/test.java | 3 +- 4 files changed, 99 insertions(+), 101 deletions(-) delete mode 100644 lib/src/test/CMakeLists.txt diff --git a/lib/build.gradle b/lib/build.gradle index ef903a1..11ac4de 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -328,4 +328,11 @@ String getLibzimFiles() { "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearcher.java " + "${projectDir}/src/main/java/org/kiwix/libzim/SuggestionSearch.java " + "${projectDir}/src/main/java/org/kiwix/libzim/ZimFileFormatException.java" -} \ No newline at end of file +} + +task buildLinuxBinding(type: Exec) { + workingDir "${projectDir}/src/main/cpp/" + commandLine 'bash', '-c', "cmake . -B ${buildDir} && make -C ${buildDir}" +} + +build.dependsOn buildLinuxBinding \ No newline at end of file diff --git a/lib/src/main/cpp/CMakeLists.txt b/lib/src/main/cpp/CMakeLists.txt index f768ff2..a80bebb 100644 --- a/lib/src/main/cpp/CMakeLists.txt +++ b/lib/src/main/cpp/CMakeLists.txt @@ -2,12 +2,23 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) cmake_minimum_required(VERSION 3.18.1) -set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static) - project("libkiwix_wrapper") -add_library( - zim_wrapper +set(BUILD_DIR_PATH "${BUILD_DIR}") + +if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(BUILD_DIR_PATH "./../../../build") +endif () + +include_directories( + ${CMAKE_SOURCE_DIR} + ${BUILD_DIR_PATH}/include/libkiwix + ${BUILD_DIR_PATH}/include/libzim + ${BUILD_DIR_PATH}/include/javah_generated + #${CMAKE_SOURCE_DIR}/include/utils +) + +add_library(zim_wrapper SHARED libzim/archive.cpp @@ -25,24 +36,8 @@ add_library( libzim/suggestion_item.cpp ) -find_library(libzim - zim - PATHS - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim) -if (NOT libzim) - message(FATAL_ERROR "libzim not found!") -endif() -add_library(libzim SHARED IMPORTED) - -set_property(TARGET - libzim - PROPERTY - IMPORTED_LOCATION - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so) - -add_library( - kiwix_wrapper +add_library(kiwix_wrapper SHARED libkiwix/book.cpp @@ -55,43 +50,82 @@ add_library( libkiwix/illustration.cpp ) -find_library(libkiwix - kiwix - PATHS - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix) -if (NOT libkiwix) - message(FATAL_ERROR "libkiwix not found!") -endif() -add_library(libkiwix SHARED IMPORTED) - -set_property(TARGET - libkiwix - PROPERTY - IMPORTED_LOCATION - ${BUILD_DIR}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so) +# Linux target +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") -include_directories( -${CMAKE_SOURCE_DIR} -${BUILD_DIR}/include/libkiwix -${BUILD_DIR}/include/libzim -${BUILD_DIR}/include/javah_generated -#${CMAKE_SOURCE_DIR}/include/utils -) + find_package(JNI) + + include_directories( + ${JNI_INCLUDE_DIRS} + ) -find_library( - log-lib - log) + add_library(libzim SHARED IMPORTED) + set_target_properties(libzim PROPERTIES IMPORTED_LOCATION libzim.so) -target_link_libraries( - zim_wrapper - libzim - ${log-lib} -) + add_library(libkiwix SHARED IMPORTED) + set_target_properties(libkiwix PROPERTIES IMPORTED_LOCATION libkiwix.so) -target_link_libraries( - kiwix_wrapper - libkiwix - libzim - ${log-lib} + target_link_libraries( + zim_wrapper + libzim ) + target_link_libraries( + kiwix_wrapper + libkiwix + libzim + ) +endif () + +# Android target +if (ANDROID) + set(CMAKE_ANDROID_STL_TYPE llvm-libc++_static) + + find_library( + log-lib + log) + + find_library(libzim + zim + PATHS + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim) + if (NOT libzim) + message(FATAL_ERROR "libzim not found!") + endif () + add_library(libzim SHARED IMPORTED) + + set_property(TARGET + libzim + PROPERTY + IMPORTED_LOCATION + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libzim/libzim.so) + + + find_library(libkiwix + kiwix + PATHS + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix) + if (NOT libkiwix) + message(FATAL_ERROR "libkiwix not found!") + endif () + add_library(libkiwix SHARED IMPORTED) + + set_property(TARGET + libkiwix + PROPERTY + IMPORTED_LOCATION + ${BUILD_DIR_PATH}/jniLibs/${CMAKE_ANDROID_ARCH_ABI}/libkiwix/libkiwix.so) + + target_link_libraries( + zim_wrapper + libzim + ${log-lib} + ) + + target_link_libraries( + kiwix_wrapper + libkiwix + libzim + ${log-lib} + ) +endif () \ No newline at end of file diff --git a/lib/src/test/CMakeLists.txt b/lib/src/test/CMakeLists.txt deleted file mode 100644 index e5d7ae5..0000000 --- a/lib/src/test/CMakeLists.txt +++ /dev/null @@ -1,44 +0,0 @@ -cmake_minimum_required (VERSION 3.16) -project (buildkiwix) - -add_library(buildkiwix -SHARED -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/book.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/bookmark.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/filter.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/illustration.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixicu.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixserver.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/library.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/manager.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/archive.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/blob.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/item.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/query.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/searcher.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_item.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_iterator.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_search.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_searcher.cpp -${PROJECT_SOURCE_DIR}/../main/cpp/utils.h -) - -find_package(JNI) - -include_directories( -${JNI_INCLUDE_DIRS} -${PROJECT_SOURCE_DIR}/../main/cpp -${PROJECT_SOURCE_DIR}/../../build/include/libkiwix -${PROJECT_SOURCE_DIR}/../../build/include/libzim -${PROJECT_SOURCE_DIR}/../../build/include/javah_generated -) - -target_link_libraries(buildkiwix -LINK_PUBLIC -${PROJECT_SOURCE_DIR}/../../build/libkiwix.so -${PROJECT_SOURCE_DIR}/../../build/libzim.so -) diff --git a/lib/src/test/test.java b/lib/src/test/test.java index e78cb9d..a6f049b 100644 --- a/lib/src/test/test.java +++ b/lib/src/test/test.java @@ -12,7 +12,8 @@ public class test { static { System.loadLibrary("kiwix"); System.loadLibrary("zim"); - System.loadLibrary("buildkiwix"); + System.loadLibrary("kiwix_wrapper"); + System.loadLibrary("zim_wrapper"); } private static byte[] getFileContent(String path) From 14109ec299f98dabc3ef1413268a2e606fc83819 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 16:43:40 +0530 Subject: [PATCH 04/11] Removed different copying tasks Earlier in gradle, There are so many tasks for copying headers and .so files of libzim, libkiwix. Now, we are copying everything in copyLibzimHeaderAndSoFiles, copyLibkiwixHeaderAndSoFiles tasks. --- install_deps.sh | 6 +- lib/build.gradle | 130 +++++++++++++-------------- lib/src/test/compile_and_run_test.sh | 4 - 3 files changed, 67 insertions(+), 73 deletions(-) diff --git a/install_deps.sh b/install_deps.sh index 6b58322..1e1ecd3 100755 --- a/install_deps.sh +++ b/install_deps.sh @@ -15,7 +15,7 @@ printf "${Green}Downloading libzim ${NC}\n" printf "\n${Green}Done! ${NC}\n" printf "${Green}Coping libzim header and so files ${NC}\n" -./gradlew checkCurrentLibzimDate checkCurrentLinuxLibzimDate copyLibzimHeaderFiles copyLibzimAndroidArm copyLibzimAndroidArm64 copyLibzimAndroidx86 copyLibzimAndroidx86_64 copyLibzimLinux_x86_64 renameLibzimSoFile +./gradlew checkCurrentLibzimDate checkCurrentLinuxLibzimDate copyLibzimHeaderAndSoFiles renameLibzimSoFile printf "\n${Green}Down! ${NC}\n" printf "${Green}Downloading libkiwix ${NC}\n" @@ -23,5 +23,5 @@ printf "${Green}Downloading libkiwix ${NC}\n" printf "\n${Green}Done! ${NC}\n" printf "${Green}Coping libkiwix header and so files ${NC}\n" -./gradlew checkCurrentLibkiwixDate checkCurrentLinuxLibkiwixDate copyLibkiwixHeaderFiles copyLibkiwixAndroidArm copyLibkiwixAndroidArm64 copyLibkiwixAndroidx86 copyLibkiwixAndroidx86_64 copyLibkiwixLinux_x86_64 renameLibkiwixSoFile -printf "\n${Green}Done! ${NC}\n" +./gradlew checkCurrentLibkiwixDate checkCurrentLinuxLibkiwixDate copyLibkiwixHeaderAndSoFiles renameLibkiwixSoFile +printf "\n${Green}Done! ${NC}\n" \ No newline at end of file diff --git a/lib/build.gradle b/lib/build.gradle index 11ac4de..ba87aaa 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -126,41 +126,43 @@ task unzipLibzim(type: Copy) { into buildDir } -task copyLibzimHeaderFiles(type: Copy) { - // copying header file - from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/include/' - into buildDir.path + "/include/libzim/" -} +task copyLibzimHeaderAndSoFiles(type: Copy) { + copy { + // copying header file + from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/include/' + into buildDir.path + "/include/libzim/" + } -task copyLibzimAndroidArm(type: Copy) { - // copying android_arm so file - from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/lib/arm-linux-androideabi/' - into buildDir.path + "/jniLibs/armeabi-v7a/libzim/" -} + copy { + // copying android_arm so file + from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/lib/arm-linux-androideabi/' + into buildDir.path + "/jniLibs/armeabi-v7a/libzim/" + } -task copyLibzimAndroidArm64(type: Copy) { - // copying android_arm64 so file - from buildDir.path + "/libzim_android-arm64-" + nightly_date_for_libzim + '/lib/aarch64-linux-android/' - into buildDir.path + "/jniLibs/arm64-v8a/libzim/" -} + copy { + // copying android_arm64 so file + from buildDir.path + "/libzim_android-arm64-" + nightly_date_for_libzim + '/lib/aarch64-linux-android/' + into buildDir.path + "/jniLibs/arm64-v8a/libzim/" + } -task copyLibzimAndroidx86(type: Copy) { - // copying android_x86 so file - from buildDir.path + "/libzim_android-x86-" + nightly_date_for_libzim + '/lib/i686-linux-android/' - into buildDir.path + "/jniLibs/x86/libzim/" -} + copy { + // copying android_x86 so file + from buildDir.path + "/libzim_android-x86-" + nightly_date_for_libzim + '/lib/i686-linux-android/' + into buildDir.path + "/jniLibs/x86/libzim/" + } -task copyLibzimAndroidx86_64(type: Copy) { - // copying android_x86_64 so file - from buildDir.path + "/libzim_android-x86_64-" + nightly_date_for_libzim + '/lib/x86_64-linux-android/' - into buildDir.path + "/jniLibs/x86_64/libzim/" -} + copy { + // copying android_x86_64 so file + from buildDir.path + "/libzim_android-x86_64-" + nightly_date_for_libzim + '/lib/x86_64-linux-android/' + into buildDir.path + "/jniLibs/x86_64/libzim/" + } -task copyLibzimLinux_x86_64(type: Copy) { - // copying linux_x86_64 so file - project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/")) - from buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/" + libzim_version - into buildDir.path + copy { + // copying linux_x86_64 so file + project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/")) + from buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/" + libzim_version + into buildDir.path + } } task renameLibzimSoFile(type: Copy) { @@ -221,41 +223,43 @@ task unzipLibkiwix(type: Copy) { into buildDir } -task copyLibkiwixHeaderFiles(type: Copy) { - // copying header file - from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/include/kiwix/' - into buildDir.path + "/include/libkiwix/" -} +task copyLibkiwixHeaderAndSoFiles(type: Copy) { + copy { + // copying header file + from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/include/kiwix/' + into buildDir.path + "/include/libkiwix/" + } -task copyLibkiwixAndroidArm(type: Copy) { - // copying android_arm so file - from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/lib/arm-linux-androideabi/' - into buildDir.path + "/jniLibs/armeabi-v7a/libkiwix/" -} + copy { + // copying android_arm so file + from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/lib/arm-linux-androideabi/' + into buildDir.path + "/jniLibs/armeabi-v7a/libkiwix/" + } -task copyLibkiwixAndroidArm64(type: Copy) { - // copying android_arm64 so file - from buildDir.path + "/libkiwix_android-arm64-" + nightly_date_for_libkiwix + '/lib/aarch64-linux-android/' - into buildDir.path + "/jniLibs/arm64-v8a/libkiwix/" -} + copy { + // copying android_arm64 so file + from buildDir.path + "/libkiwix_android-arm64-" + nightly_date_for_libkiwix + '/lib/aarch64-linux-android/' + into buildDir.path + "/jniLibs/arm64-v8a/libkiwix/" + } -task copyLibkiwixAndroidx86(type: Copy) { - // copying android_x86 so file - from buildDir.path + "/libkiwix_android-x86-" + nightly_date_for_libkiwix + '/lib/i686-linux-android/' - into buildDir.path + "/jniLibs/x86/libkiwix/" -} + copy { + // copying android_x86 so file + from buildDir.path + "/libkiwix_android-x86-" + nightly_date_for_libkiwix + '/lib/i686-linux-android/' + into buildDir.path + "/jniLibs/x86/libkiwix/" + } -task copyLibkiwixAndroidx86_64(type: Copy) { - // copying android_x86_64 so file - from buildDir.path + "/libkiwix_android-x86_64-" + nightly_date_for_libkiwix + '/lib/x86_64-linux-android/' - into buildDir.path + "/jniLibs/x86_64/libkiwix/" -} + copy { + // copying android_x86_64 so file + from buildDir.path + "/libkiwix_android-x86_64-" + nightly_date_for_libkiwix + '/lib/x86_64-linux-android/' + into buildDir.path + "/jniLibs/x86_64/libkiwix/" + } -task copyLibkiwixLinux_x86_64(type: Copy) { - // copying linux_x86_64 so file - project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/")) - from buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/" + libkiwix_version - into buildDir.path + copy { + // copying linux_x86_64 so file + project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/")) + from buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/" + libkiwix_version + into buildDir.path + } } static String getFileFromFolder(String path) { @@ -277,12 +281,6 @@ task renameLibkiwixSoFile(type: Copy) { } } -task copyBuildKiwixSoFile(type: Copy) { - // copying linux_x86_64 so file - from projectDir.path + "/src/test/libbuildkiwix.so" - into buildDir.path -} - task createCodeCoverageReport(type: Exec) { workingDir "${projectDir}/src/test/" commandLine 'sh', '-c', "bash 'compile_and_run_test.sh' ${buildDir}/libs/*lib*.jar $buildDir" diff --git a/lib/src/test/compile_and_run_test.sh b/lib/src/test/compile_and_run_test.sh index e4337a2..97fc6d4 100755 --- a/lib/src/test/compile_and_run_test.sh +++ b/lib/src/test/compile_and_run_test.sh @@ -9,10 +9,6 @@ die() exit 1 } -# This is for building wrapper so file -cmake . -make - # Copy generated .so file to build directory to run test cases cd ../../../ ./gradlew copyBuildKiwixSoFile From fadf201750ed66810a9bec4c15e0d4e7f1211457 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 18:45:43 +0530 Subject: [PATCH 05/11] Run test cases via gradle task We are compiling and running test cases via gradle task and removing compile_and_run_test.sh as it is only for running test cases. --- .github/workflows/release.yml | 2 +- lib/build.gradle | 14 ++++++++- lib/src/test/compile_and_run_test.sh | 46 ---------------------------- 3 files changed, 14 insertions(+), 48 deletions(-) delete mode 100755 lib/src/test/compile_and_run_test.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3236798..8118c2c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,7 +36,7 @@ jobs: run: | ./gradlew assemble - - name: Genrate Source jar + - name: Generate Source jar run: | ./gradlew androidSourcesJar diff --git a/lib/build.gradle b/lib/build.gradle index ba87aaa..a1871fa 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -281,9 +281,21 @@ task renameLibkiwixSoFile(type: Copy) { } } +task compileTestFile(type: Exec) { + workingDir "${projectDir}/src/test/" + commandLine 'javac', '-g', '-d', '.', '-s', '.', '-cp', 'junit-4.13.jar:' + buildDir.path +'/libs/*', 'test.java' +} + +task runTests(type: Exec) { + workingDir "${projectDir}/src/test/" + dependsOn compileTestFile + commandLine 'java', '-Djava.library.path=' + buildDir.path, '-javaagent:jacoco-0.8.7/lib/jacocoagent.jar', '-cp', 'junit-4.13.jar:hamcrest-core-1.3.jar:' + buildDir.path +'/libs/*lib*.jar' + ':.', 'org.junit.runner.JUnitCore', 'test' +} + task createCodeCoverageReport(type: Exec) { workingDir "${projectDir}/src/test/" - commandLine 'sh', '-c', "bash 'compile_and_run_test.sh' ${buildDir}/libs/*lib*.jar $buildDir" + dependsOn runTests + commandLine 'java', '-jar', 'jacoco-0.8.7/lib/jacococli.jar', 'report', 'jacoco.exec', '--classfiles', 'org/kiwix/libkiwix/', '--classfiles', 'org/kiwix/libzim/', '--html', '../../build/coverage-report', '--xml', 'coverage.xml' } task checkCurrentJavaVersion() { diff --git a/lib/src/test/compile_and_run_test.sh b/lib/src/test/compile_and_run_test.sh deleted file mode 100755 index 97fc6d4..0000000 --- a/lib/src/test/compile_and_run_test.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/bash - -# This script compiles and runs the unit test to test the java wrapper. -# This is not integrated in meson because ... this is not so easy. - -die() -{ - echo >&2 "!!! ERROR: $*" - exit 1 -} - -# Copy generated .so file to build directory to run test cases -cd ../../../ -./gradlew copyBuildKiwixSoFile -cd lib/src/test - -KIWIX_LIB_JAR=$1 -if [ -z $KIWIX_LIB_JAR ] -then - die "You must give the path to the kiwixlib.jar as first argument" -fi - -KIWIX_LIB_DIR=$2 -if [ -z $KIWIX_LIB_DIR ] -then - die "You must give the path to directory containing libkiwix.so as second argument" -fi - -KIWIX_LIB_JAR=$(readlink -f "$KIWIX_LIB_JAR") -KIWIX_LIB_DIR=$(readlink -f "$KIWIX_LIB_DIR") -TEST_SOURCE_DIR=$(dirname "$(readlink -f $0)") - -cd "$TEST_SOURCE_DIR" - -javac -g -d . -s . -cp "junit-4.13.jar:$KIWIX_LIB_JAR" test.java \ - || die "Compilation failed" - -java -Djava.library.path="$KIWIX_LIB_DIR" \ - -javaagent:jacoco-0.8.7/lib/jacocoagent.jar -cp "junit-4.13.jar:hamcrest-core-1.3.jar:$KIWIX_LIB_JAR:." \ - org.junit.runner.JUnitCore test \ - || die "Unit test failed" - -java -jar jacoco-0.8.7/lib/jacococli.jar report jacoco.exec \ ---classfiles org/kiwix/libkiwix/ \ ---classfiles org/kiwix/libzim/ \ ---html ../../build/coverage-report --xml coverage.xml \ No newline at end of file From b3f7c98659f2bfaf35c17f66949774c7a007ddff Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 18:51:45 +0530 Subject: [PATCH 06/11] Removed dependency from date variable Earlier we are depending on the date variable to copy headers and .so files from folder. Now we introduce removeDateFromFolderName method for removing the date from folders name, so it would be more easy to getting files from folder. --- install_deps.sh | 4 +-- lib/build.gradle | 77 ++++++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/install_deps.sh b/install_deps.sh index 1e1ecd3..60e1671 100755 --- a/install_deps.sh +++ b/install_deps.sh @@ -15,7 +15,7 @@ printf "${Green}Downloading libzim ${NC}\n" printf "\n${Green}Done! ${NC}\n" printf "${Green}Coping libzim header and so files ${NC}\n" -./gradlew checkCurrentLibzimDate checkCurrentLinuxLibzimDate copyLibzimHeaderAndSoFiles renameLibzimSoFile +./gradlew renameLibzimFolders copyLibzimHeaderAndSoFiles renameLibzimSoFile printf "\n${Green}Down! ${NC}\n" printf "${Green}Downloading libkiwix ${NC}\n" @@ -23,5 +23,5 @@ printf "${Green}Downloading libkiwix ${NC}\n" printf "\n${Green}Done! ${NC}\n" printf "${Green}Coping libkiwix header and so files ${NC}\n" -./gradlew checkCurrentLibkiwixDate checkCurrentLinuxLibkiwixDate copyLibkiwixHeaderAndSoFiles renameLibkiwixSoFile +./gradlew renameLibkiwixFolders copyLibkiwixHeaderAndSoFiles renameLibkiwixSoFile printf "\n${Green}Done! ${NC}\n" \ No newline at end of file diff --git a/lib/build.gradle b/lib/build.gradle index a1871fa..67865fc 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -68,6 +68,12 @@ android { } ndkVersion '21.4.7075529' + configurations { + testCompileClasspath.extendsFrom(compileClasspath) + testRuntimeClasspath.extendsFrom(testCompileClasspath) + testImplementation.extendsFrom(implementation) + testRuntimeOnly.extendsFrom(runtimeOnly) + } } dependencies { @@ -80,11 +86,6 @@ ext.libzim_base_url = 'https://download.openzim.org/nightly' // temporary url for libzim linux variant zim file, Once https://github.com/openzim/libzim/issues/772 fixed, then we can remove this ext.linux_libzim_base_url = 'https://download.openzim.org/nightly/2023-03-20' -ext.nightly_date_for_libkiwix = project.properties["nightly_date_for_libkiwix"] ?: "" -ext.nightly_date_for_libkiwix_linux = project.properties["nightly_date_for_libkiwix_linux"] ?: "" -ext.nightly_date_for_libzim = project.properties["nightly_date_for_libzim"] ?: "" -ext.nightly_date_for_libzim_linux = project.properties["nightly_date_for_libzim_linux"] ?: "" - ext.libkiwix_version = project.properties["libkiwix_version"] ?: "" ext.libzim_version = project.properties["libzim_version"] ?: "" @@ -100,14 +101,6 @@ task downloadLibzimSoAndHeaderFiles(type: Download) { overwrite true } -task checkCurrentLibzimDate() { - project.ext.set("nightly_date_for_libzim", getDateFromPath(buildDir.path, "libzim_android-arm64-")) -} - -task checkCurrentLinuxLibzimDate() { - project.ext.set("nightly_date_for_libzim_linux", getDateFromPath(buildDir.path, "libzim_linux-x86_64-")) -} - task unzipLibzim(type: Copy) { // unzip android arm from tarTree(buildDir.path + "/libzim_android-arm.tar.gz") @@ -126,41 +119,45 @@ task unzipLibzim(type: Copy) { into buildDir } +task renameLibzimFolders() { + removeDateFromFolderName(buildDir.path,"libzim_") +} + task copyLibzimHeaderAndSoFiles(type: Copy) { copy { // copying header file - from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/include/' + from buildDir.path + "/libzim_android-arm/include/" into buildDir.path + "/include/libzim/" } copy { // copying android_arm so file - from buildDir.path + "/libzim_android-arm-" + nightly_date_for_libzim + '/lib/arm-linux-androideabi/' + from buildDir.path + "/libzim_android-arm/lib/arm-linux-androideabi/" into buildDir.path + "/jniLibs/armeabi-v7a/libzim/" } copy { // copying android_arm64 so file - from buildDir.path + "/libzim_android-arm64-" + nightly_date_for_libzim + '/lib/aarch64-linux-android/' + from buildDir.path + "/libzim_android-arm64/lib/aarch64-linux-android/" into buildDir.path + "/jniLibs/arm64-v8a/libzim/" } copy { // copying android_x86 so file - from buildDir.path + "/libzim_android-x86-" + nightly_date_for_libzim + '/lib/i686-linux-android/' + from buildDir.path + "/libzim_android-x86/lib/i686-linux-android/" into buildDir.path + "/jniLibs/x86/libzim/" } copy { // copying android_x86_64 so file - from buildDir.path + "/libzim_android-x86_64-" + nightly_date_for_libzim + '/lib/x86_64-linux-android/' + from buildDir.path + "/libzim_android-x86_64/lib/x86_64-linux-android/" into buildDir.path + "/jniLibs/x86_64/libzim/" } copy { // copying linux_x86_64 so file - project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/")) - from buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/" + libzim_version + project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64/lib/x86_64-linux-gnu/")) + from buildDir.path + "/libzim_linux-x86_64/lib/x86_64-linux-gnu/" + libzim_version into buildDir.path } } @@ -186,22 +183,20 @@ task downloadLibkiwixSoAndHeaderFiles(type: Download) { overwrite true } -task checkCurrentLibkiwixDate() { - project.ext.set("nightly_date_for_libkiwix", getDateFromPath(buildDir.path, "libkiwix_android-arm64-")) +task renameLibkiwixFolders() { + removeDateFromFolderName(buildDir.path,"libkiwix_") } -task checkCurrentLinuxLibkiwixDate() { - project.ext.set("nightly_date_for_libkiwix_linux", getDateFromPath(buildDir.path, "libkiwix_linux-x86_64-")) -} - -static String getDateFromPath(String path, String matchesString) { - File folder = new File(path) - if (folder.exists()) { - return folder.listFiles() - .stream() - .filter(f -> f.name.startsWith(matchesString)) - .map(s -> s.name.replace(matchesString, "")) - .collect(Collectors.toList())[0] +static void removeDateFromFolderName(String path, String startWith) { + File directory = new File(path) + if (directory.exists() && directory.isDirectory()) { + Arrays.stream(directory.listFiles()) + .filter(folder -> folder.isDirectory() && folder.getName().startsWith(startWith)) + .forEach(file -> { + String newName = file.getName().replaceAll("-\\d{4}-\\d{2}-\\d{2}", "") + File newFile = new File(directory, newName) + file.renameTo(newFile) + }) } } @@ -226,38 +221,38 @@ task unzipLibkiwix(type: Copy) { task copyLibkiwixHeaderAndSoFiles(type: Copy) { copy { // copying header file - from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/include/kiwix/' + from buildDir.path + "/libkiwix_android-arm/include/kiwix/" into buildDir.path + "/include/libkiwix/" } copy { // copying android_arm so file - from buildDir.path + "/libkiwix_android-arm-" + nightly_date_for_libkiwix + '/lib/arm-linux-androideabi/' + from buildDir.path + "/libkiwix_android-arm/lib/arm-linux-androideabi/" into buildDir.path + "/jniLibs/armeabi-v7a/libkiwix/" } copy { // copying android_arm64 so file - from buildDir.path + "/libkiwix_android-arm64-" + nightly_date_for_libkiwix + '/lib/aarch64-linux-android/' + from buildDir.path + "/libkiwix_android-arm64/lib/aarch64-linux-android/" into buildDir.path + "/jniLibs/arm64-v8a/libkiwix/" } copy { // copying android_x86 so file - from buildDir.path + "/libkiwix_android-x86-" + nightly_date_for_libkiwix + '/lib/i686-linux-android/' + from buildDir.path + "/libkiwix_android-x86/lib/i686-linux-android/" into buildDir.path + "/jniLibs/x86/libkiwix/" } copy { // copying android_x86_64 so file - from buildDir.path + "/libkiwix_android-x86_64-" + nightly_date_for_libkiwix + '/lib/x86_64-linux-android/' + from buildDir.path + "/libkiwix_android-x86_64/lib/x86_64-linux-android/" into buildDir.path + "/jniLibs/x86_64/libkiwix/" } copy { // copying linux_x86_64 so file - project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/")) - from buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/" + libkiwix_version + project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64/lib/x86_64-linux-gnu/")) + from buildDir.path + "/libkiwix_linux-x86_64/lib/x86_64-linux-gnu/" + libkiwix_version into buildDir.path } } From 3500f20a0d2960e778a19f92467c8ff52e562842 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 18:55:18 +0530 Subject: [PATCH 07/11] Removed javac bash commands to compile test cases Earlier we are using the java commands to compile and run test cases, Now we are using gradle for building and running test cases. --- lib/build.gradle | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 67865fc..55d9b2d 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -67,13 +67,6 @@ android { viewBinding true } ndkVersion '21.4.7075529' - - configurations { - testCompileClasspath.extendsFrom(compileClasspath) - testRuntimeClasspath.extendsFrom(testCompileClasspath) - testImplementation.extendsFrom(implementation) - testRuntimeOnly.extendsFrom(runtimeOnly) - } } dependencies { @@ -276,21 +269,40 @@ task renameLibkiwixSoFile(type: Copy) { } } -task compileTestFile(type: Exec) { - workingDir "${projectDir}/src/test/" - commandLine 'javac', '-g', '-d', '.', '-s', '.', '-cp', 'junit-4.13.jar:' + buildDir.path +'/libs/*', 'test.java' +task testSourceJar(type: Jar) { + from android.sourceSets.test.java.srcDirs + archiveName = 'test-sources.jar' } -task runTests(type: Exec) { - workingDir "${projectDir}/src/test/" +task compileTestFile(type: JavaCompile) { + dependsOn testSourceJar + source = fileTree('src/test/') + destinationDirectory = file('src/test/') + classpath = files("src/test/junit-4.13.jar" , "src/test/hamcrest-core-1.4.jar", "build/libs/test-sources.jar") +} + +task runTests(type: JavaExec) { + workingDir("$projectDir/src/test/") dependsOn compileTestFile - commandLine 'java', '-Djava.library.path=' + buildDir.path, '-javaagent:jacoco-0.8.7/lib/jacocoagent.jar', '-cp', 'junit-4.13.jar:hamcrest-core-1.3.jar:' + buildDir.path +'/libs/*lib*.jar' + ':.', 'org.junit.runner.JUnitCore', 'test' + classpath = files('src/test/', 'src/test/java/', 'src/test/junit-4.13.jar', 'src/test/hamcrest-core-1.3.jar') + main = 'org.junit.runner.JUnitCore' + args = ['test'] + jvmArgs = [ + '-Djava.library.path=' + buildDir.path, + '-javaagent:jacoco-0.8.7/lib/jacocoagent.jar' + ] } -task createCodeCoverageReport(type: Exec) { +task createCodeCoverageReport(type: JavaExec) { workingDir "${projectDir}/src/test/" dependsOn runTests - commandLine 'java', '-jar', 'jacoco-0.8.7/lib/jacococli.jar', 'report', 'jacoco.exec', '--classfiles', 'org/kiwix/libkiwix/', '--classfiles', 'org/kiwix/libzim/', '--html', '../../build/coverage-report', '--xml', 'coverage.xml' + classpath = files('src/test/', 'src/test/java/', 'src/test/junit-4.13.jar', 'src/test/hamcrest-core-1.3.jar', 'src/test/jacoco-0.8.7/lib/*') + main = 'org.jacoco.cli.internal.Main' + args = [ + 'report', 'jacoco.exec', + '--classfiles', 'java/org/kiwix/libkiwix/', '--classfiles', 'java/org/kiwix/libzim/', + '--html', '../../build/coverage-report', '--xml', 'coverage.xml' + ] } task checkCurrentJavaVersion() { @@ -300,9 +312,9 @@ task checkCurrentJavaVersion() { } -task buildHeaders(type: Exec) { +task generateHeader(type: Exec) { workingDir "${projectDir}/src/main/java/org/kiwix/" - commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${projectDir}/src/test/ ${getLibzimFiles()} ${getLibkiwixFiles()}" + commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${projectDir}/src/test/java/ ${getLibzimFiles()} ${getLibkiwixFiles()}" } String getLibkiwixFiles() { From d1c2194553fd1267a08452bc5f14becbc5b4f380 Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 18:57:09 +0530 Subject: [PATCH 08/11] Fixed source file path in compileTestFile task --- lib/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 55d9b2d..2d809da 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -276,7 +276,7 @@ task testSourceJar(type: Jar) { task compileTestFile(type: JavaCompile) { dependsOn testSourceJar - source = fileTree('src/test/') + source = file('src/test/test.java') destinationDirectory = file('src/test/') classpath = files("src/test/junit-4.13.jar" , "src/test/hamcrest-core-1.4.jar", "build/libs/test-sources.jar") } @@ -312,7 +312,7 @@ task checkCurrentJavaVersion() { } -task generateHeader(type: Exec) { +task buildHeaders(type: Exec) { workingDir "${projectDir}/src/main/java/org/kiwix/" commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${projectDir}/src/test/java/ ${getLibzimFiles()} ${getLibkiwixFiles()}" } From c694f6f8f04bb25a0d11ef51186d87729322080f Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 18:59:06 +0530 Subject: [PATCH 09/11] Generating test binding and jacoco reports in build directory --- lib/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 2d809da..75454ea 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -277,19 +277,19 @@ task testSourceJar(type: Jar) { task compileTestFile(type: JavaCompile) { dependsOn testSourceJar source = file('src/test/test.java') - destinationDirectory = file('src/test/') + destinationDirectory = file("$buildDir") classpath = files("src/test/junit-4.13.jar" , "src/test/hamcrest-core-1.4.jar", "build/libs/test-sources.jar") } task runTests(type: JavaExec) { workingDir("$projectDir/src/test/") dependsOn compileTestFile - classpath = files('src/test/', 'src/test/java/', 'src/test/junit-4.13.jar', 'src/test/hamcrest-core-1.3.jar') + classpath = files("$buildDir", 'src/test/java/', 'src/test/junit-4.13.jar', 'src/test/hamcrest-core-1.3.jar') main = 'org.junit.runner.JUnitCore' args = ['test'] jvmArgs = [ '-Djava.library.path=' + buildDir.path, - '-javaagent:jacoco-0.8.7/lib/jacocoagent.jar' + '-javaagent:jacoco-0.8.7/lib/jacocoagent.jar=destfile=../../build/jacoco/jacoco.exec' ] } @@ -299,9 +299,9 @@ task createCodeCoverageReport(type: JavaExec) { classpath = files('src/test/', 'src/test/java/', 'src/test/junit-4.13.jar', 'src/test/hamcrest-core-1.3.jar', 'src/test/jacoco-0.8.7/lib/*') main = 'org.jacoco.cli.internal.Main' args = [ - 'report', 'jacoco.exec', + 'report', '../../build/jacoco/jacoco.exec', '--classfiles', 'java/org/kiwix/libkiwix/', '--classfiles', 'java/org/kiwix/libzim/', - '--html', '../../build/coverage-report', '--xml', 'coverage.xml' + '--html', '../../build/coverage-report', '--xml', '../../build/coverage.xml' ] } From 1a1bd731987837542aab91443aad3347d4fc9bbc Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 19:00:10 +0530 Subject: [PATCH 10/11] Now we are using ubuntu-20.04 since ubuntu-18.04 is deprecated --- .github/workflows/pull_request.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index c35dbb4..653568d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,7 +9,7 @@ jobs: build_job: name: Build Pull Request - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v1 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8118c2c..8c91aa1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ on: jobs: publish: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 From fea35c2651a916c66ba258552561b34f1863afab Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Thu, 6 Apr 2023 19:04:20 +0530 Subject: [PATCH 11/11] Since linux libzim tar file issue is fixed so we have removed the temporary url --- lib/build.gradle | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 75454ea..938be1a 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -76,8 +76,6 @@ dependencies { ext.libkiwix_base_url = 'https://download.kiwix.org/nightly' ext.libzim_base_url = 'https://download.openzim.org/nightly' -// temporary url for libzim linux variant zim file, Once https://github.com/openzim/libzim/issues/772 fixed, then we can remove this -ext.linux_libzim_base_url = 'https://download.openzim.org/nightly/2023-03-20' ext.libkiwix_version = project.properties["libkiwix_version"] ?: "" ext.libzim_version = project.properties["libzim_version"] ?: "" @@ -88,7 +86,7 @@ task downloadLibzimSoAndHeaderFiles(type: Download) { libzim_base_url + '/libzim_android-arm64.tar.gz', libzim_base_url + '/libzim_android-x86.tar.gz', libzim_base_url + '/libzim_android-x86_64.tar.gz', - linux_libzim_base_url + '/libzim_linux-x86_64-2023-03-20.tar.gz' + libzim_base_url + '/libzim_linux-x86_64.tar.gz' ]) dest buildDir overwrite true @@ -108,7 +106,7 @@ task unzipLibzim(type: Copy) { from tarTree(buildDir.path + "/libzim_android-x86_64.tar.gz") into buildDir // unzip linux x86_64 - from tarTree(buildDir.path + "/libzim_linux-x86_64-2023-03-20.tar.gz") + from tarTree(buildDir.path + "/libzim_linux-x86_64.tar.gz") into buildDir }