Skip to content

Commit 66ebc4e

Browse files
authored
Merge pull request #27 from kiwix/FixBrokenCi
Fixes of Broken CI
2 parents 4b5cc44 + 160428d commit 66ebc4e

File tree

10 files changed

+200
-131
lines changed

10 files changed

+200
-131
lines changed

.github/workflows/pull_request.yml

+2-3
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ jobs:
2626

2727
- name: Compile Project
2828
run: |
29-
./gradlew generateHeaderFilesFromJavaWrapper
30-
./gradlew build
29+
./gradlew generateHeaderFilesFromJavaWrapper build
3130
3231
- name: create unit coverage
3332
run: |
@@ -42,4 +41,4 @@ jobs:
4241
with:
4342
name: Tests Coverage Report
4443
path: |
45-
android-libkiwixbuild/build/coverage-report/
44+
lib/build/coverage-report/

install_deps.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ printf "${Green}Downloading libzim ${NC}\n"
1515
printf "\n${Green}Done! ${NC}\n"
1616

1717
printf "${Green}Coping libzim header and so files ${NC}\n"
18-
./gradlew checkCurrentLibzimDate copyLibzimHeaderFiles copyLibzimAndroidArm copyLibzimAndroidArm64 copyLibzimAndroidx86 copyLibzimAndroidx86_64 copyLibzimLinux_x86_64 renameLibzimSoFile
18+
./gradlew checkCurrentLibzimDate checkCurrentLinuxLibzimDate copyLibzimHeaderFiles copyLibzimAndroidArm copyLibzimAndroidArm64 copyLibzimAndroidx86 copyLibzimAndroidx86_64 copyLibzimLinux_x86_64 renameLibzimSoFile
1919
printf "\n${Green}Down! ${NC}\n"
2020

2121
printf "${Green}Downloading libkiwix ${NC}\n"
2222
./gradlew downloadLibkiwixSoAndHeaderFiles unzipLibkiwix
2323
printf "\n${Green}Done! ${NC}\n"
2424

2525
printf "${Green}Coping libkiwix header and so files ${NC}\n"
26-
./gradlew checkCurrentLibkiwixDate copyLibkiwixHeaderFiles copyLibkiwixAndroidArm copyLibkiwixAndroidArm64 copyLibkiwixAndroidx86 copyLibkiwixAndroidx86_64 copyLibkiwixLinux_x86_64 renameLibkiwixSoFile
26+
./gradlew checkCurrentLibkiwixDate checkCurrentLinuxLibkiwixDate copyLibkiwixHeaderFiles copyLibkiwixAndroidArm copyLibkiwixAndroidArm64 copyLibkiwixAndroidx86 copyLibkiwixAndroidx86_64 copyLibkiwixLinux_x86_64 renameLibkiwixSoFile
2727
printf "\n${Green}Done! ${NC}\n"

lib/build.gradle

+18-8
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ ext.libkiwix_base_url = 'https://download.kiwix.org/nightly'
7979
ext.libzim_base_url = 'https://download.openzim.org/nightly'
8080
// change this date to get latest libzim .so and header files
8181
ext.nightly_date_for_libkiwix = project.properties["nightly_date_for_libkiwix"] ?: ""
82+
ext.nightly_date_for_libkiwix_linux = project.properties["nightly_date_for_libkiwix_linux"] ?: ""
8283
ext.nightly_date_for_libzim = project.properties["nightly_date_for_libzim"] ?: ""
84+
ext.nightly_date_for_libzim_linux = project.properties["nightly_date_for_libzim_linux"] ?: ""
8385

8486
ext.libkiwix_version = project.properties["libkiwix_version"] ?: ""
8587
ext.libzim_version = project.properties["libzim_version"] ?: ""
@@ -100,6 +102,10 @@ task checkCurrentLibzimDate() {
100102
project.ext.set("nightly_date_for_libzim", getDateFromPath(buildDir.path, "libzim_android-arm64-"))
101103
}
102104

105+
task checkCurrentLinuxLibzimDate() {
106+
project.ext.set("nightly_date_for_libzim_linux", getDateFromPath(buildDir.path, "libzim_linux-x86_64-"))
107+
}
108+
103109
task unzipLibzim(type: Copy) {
104110
// unzip android arm
105111
from tarTree(buildDir.path + "/libzim_android-arm.tar.gz")
@@ -150,8 +156,8 @@ task copyLibzimAndroidx86_64(type: Copy) {
150156

151157
task copyLibzimLinux_x86_64(type: Copy) {
152158
// copying linux_x86_64 so file
153-
project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim + "/lib/x86_64-linux-gnu/"))
154-
from buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim + "/lib/x86_64-linux-gnu/" + libzim_version
159+
project.ext.set("libzim_version", getFileFromFolder(buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/"))
160+
from buildDir.path + "/libzim_linux-x86_64-" + nightly_date_for_libzim_linux + "/lib/x86_64-linux-gnu/" + libzim_version
155161
into buildDir.path
156162
}
157163

@@ -180,6 +186,10 @@ task checkCurrentLibkiwixDate() {
180186
project.ext.set("nightly_date_for_libkiwix", getDateFromPath(buildDir.path, "libkiwix_android-arm64-"))
181187
}
182188

189+
task checkCurrentLinuxLibkiwixDate() {
190+
project.ext.set("nightly_date_for_libkiwix_linux", getDateFromPath(buildDir.path, "libkiwix_linux-x86_64-"))
191+
}
192+
183193
static String getDateFromPath(String path, String matchesString) {
184194
File folder = new File(path)
185195
if (folder.exists()) {
@@ -241,8 +251,8 @@ task copyLibkiwixAndroidx86_64(type: Copy) {
241251

242252
task copyLibkiwixLinux_x86_64(type: Copy) {
243253
// copying linux_x86_64 so file
244-
project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix + "/lib/x86_64-linux-gnu/"))
245-
from buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix + "/lib/x86_64-linux-gnu/" + libkiwix_version
254+
project.ext.set("libkiwix_version", getFileFromFolder(buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/"))
255+
from buildDir.path + "/libkiwix_linux-x86_64-" + nightly_date_for_libkiwix_linux + "/lib/x86_64-linux-gnu/" + libkiwix_version
246256
into buildDir.path
247257
}
248258

@@ -267,13 +277,13 @@ task renameLibkiwixSoFile(type: Copy) {
267277

268278
task copyBuildKiwixSoFile(type: Copy) {
269279
// copying linux_x86_64 so file
270-
from projectDir.path + "/src/androidTests/java/org/kiwix/kiwixlib/libbuildkiwix.so"
280+
from projectDir.path + "/src/test/libbuildkiwix.so"
271281
into buildDir.path
272282
}
273283

274284
task createCodeCoverageReport(type: Exec) {
275-
workingDir "${projectDir}/src/androidTests/java/org/kiwix/kiwixlib/"
276-
commandLine 'sh', '-c', "bash 'compile_and_run_test.sh' ${buildDir}/libs/*app*.jar $buildDir"
285+
workingDir "${projectDir}/src/test/"
286+
commandLine 'sh', '-c', "bash 'compile_and_run_test.sh' ${buildDir}/libs/*lib*.jar $buildDir"
277287
}
278288

279289
task checkCurrentJavaVersion() {
@@ -285,7 +295,7 @@ task checkCurrentJavaVersion() {
285295

286296
task generateHeaderFilesFromJavaWrapper(type: Exec) {
287297
workingDir "${projectDir}/src/main/java/org/kiwix/"
288-
commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${buildDir}/libzim/ ${getLibzimFiles()} ${getLibkiwixFiles()}"
298+
commandLine 'bash', '-c', "javac -h ${buildDir}/include/javah_generated/ -d ${projectDir}/src/test/ ${getLibzimFiles()} ${getLibkiwixFiles()}"
289299
}
290300

291301
String getLibkiwixFiles() {

lib/src/main/cpp/libkiwix/library.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,14 @@ METHOD(jobjectArray, getBookmarks, jboolean onlyValidBookmarks) {
9797
auto bookmarks = THIS->getBookmarks(TO_C(onlyValidBookmarks));
9898
jobjectArray retArray = createArray(env, bookmarks.size(), "org/kiwix/libkiwix/Bookmark");
9999
size_t index = 0;
100+
jclass wrapperClass = env->FindClass("org/kiwix/libkiwix/Bookmark");
101+
jmethodID initMethod = env->GetMethodID(wrapperClass, "<init>", "(J)V");
102+
100103
for (auto bookmark: bookmarks) {
101-
auto wrapper = BUILD_WRAPPER("org/kiwix/libkiwx/Bookmark", bookmark);
104+
// This double new is necessary as we need to allocate the bookmark itself (as a shared_ptr) on the heap but
105+
// we also want the shared_ptr to be stored in the head as we want to have a ptr (cast as long) to it.
106+
shared_ptr<kiwix::Bookmark>* handle = new shared_ptr<kiwix::Bookmark>(new kiwix::Bookmark(std::move(bookmark)));
107+
jobject wrapper = env->NewObject(wrapperClass, initMethod, reinterpret_cast<jlong>(handle));
102108
env->SetObjectArrayElement(retArray, index++, wrapper);
103109
}
104110
return retArray;

lib/src/main/cpp/utils.h

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
#include <jni.h>
2626

2727
#include <mutex>
28+
#include <memory>
29+
#include <cassert>
2830
#include <string>
2931
#include <vector>
3032
#include <set>

lib/src/main/java/org/kiwix/libkiwix/Bookmark.java

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ public Bookmark() {
2525
setNativeBookmark();
2626
}
2727

28+
private Bookmark(long handle) {
29+
nativeHandle = handle;
30+
}
31+
2832
public native void setBookId(String bookId);
2933
public native void setBookTitle(String bookTitle);
3034
public native void setUrl(String url);

lib/src/test/CMakeLists.txt

+31-26
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,43 @@ cmake_minimum_required (VERSION 3.16)
22
project (buildkiwix)
33

44
add_library(buildkiwix
5-
SHARED
6-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/base64.cpp
7-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/book.cpp
8-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/filter.cpp
9-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/kiwixicu.cpp
10-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/kiwixreader.cpp
11-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/kiwixsearcher.cpp
12-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/kiwixserver.cpp
13-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/library.cpp
14-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/manager.cpp
15-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/utils.h
5+
SHARED
6+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/book.cpp
7+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/bookmark.cpp
8+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/filter.cpp
9+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/illustration.cpp
10+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixicu.cpp
11+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/kiwixserver.cpp
12+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/library.cpp
13+
${PROJECT_SOURCE_DIR}/../main/cpp/libkiwix/manager.cpp
14+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/archive.cpp
15+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/blob.cpp
16+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry.cpp
17+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/entry_iterator.cpp
18+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/item.cpp
19+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/query.cpp
20+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search.cpp
21+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/search_iterator.cpp
22+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/searcher.cpp
23+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_item.cpp
24+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_iterator.cpp
25+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_search.cpp
26+
${PROJECT_SOURCE_DIR}/../main/cpp/libzim/suggestion_searcher.cpp
27+
${PROJECT_SOURCE_DIR}/../main/cpp/utils.h
1628
)
1729

1830
find_package(JNI)
1931

20-
if (JNI_FOUND)
21-
message (STATUS "JNI_INCLUDE_DIRS=${JNI_INCLUDE_DIRS}")
22-
message (STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}")
23-
endif()
24-
2532
include_directories(
26-
/opt/hostedtoolcache/jdk/11.0.17/x64/include
27-
/opt/hostedtoolcache/jdk/11.0.17/x64/include/linux
28-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp
29-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/include/libkiwix
30-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/include/libzim
31-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/include/javah_generated
32-
${CMAKE_SOURCE_DIR}/../../../../../main/cpp/include/utils
33+
${JNI_INCLUDE_DIRS}
34+
${PROJECT_SOURCE_DIR}/../main/cpp
35+
${PROJECT_SOURCE_DIR}/../../build/include/libkiwix
36+
${PROJECT_SOURCE_DIR}/../../build/include/libzim
37+
${PROJECT_SOURCE_DIR}/../../build/include/javah_generated
3338
)
3439

3540
target_link_libraries(buildkiwix
36-
LINK_PUBLIC
37-
${CMAKE_SOURCE_DIR}/../../../../../../build/libkiwix.so
38-
${CMAKE_SOURCE_DIR}/../../../../../../build/libzim.so
41+
LINK_PUBLIC
42+
${PROJECT_SOURCE_DIR}/../../build/libkiwix.so
43+
${PROJECT_SOURCE_DIR}/../../build/libzim.so
3944
)

lib/src/test/compile_and_run_test.sh

+5-4
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ cmake .
1414
make
1515

1616
# Copy generated .so file to build directory to run test cases
17-
cd ../../../../../../../
17+
cd ../../../
1818
./gradlew copyBuildKiwixSoFile
19-
cd app/src/androidTests/java/org/kiwix/kiwixlib/
19+
cd lib/src/test
2020

2121
KIWIX_LIB_JAR=$1
2222
if [ -z $KIWIX_LIB_JAR ]
@@ -45,5 +45,6 @@ java -Djava.library.path="$KIWIX_LIB_DIR" \
4545
|| die "Unit test failed"
4646

4747
java -jar jacoco-0.8.7/lib/jacococli.jar report jacoco.exec \
48-
--classfiles org/kiwix/kiwixlib/ \
49-
--html ../../../../../../../build/coverage-report --xml coverage.xml
48+
--classfiles org/kiwix/libkiwix/ \
49+
--classfiles org/kiwix/libzim/ \
50+
--html ../../build/coverage-report --xml coverage.xml
+6-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
<html>
2-
<head>
2+
<head>
33
<meta charset="UTF-8">
44
<title>Test ZIM file</title>
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
</head>
6+
</head>
77

8-
<body>
9-
Test ZIM file
10-
</body>
11-
</html>
8+
<body>
9+
Test ZIM file
10+
</body>
11+
</html>

0 commit comments

Comments
 (0)