Commit Graph

239 Commits

Author SHA1 Message Date
Matthieu Gautier ab273f7d12 Run apple command as list. 2023-12-01 11:12:32 +01:00
Matthieu Gautier b7c4854d83 Build only libzim dependencies on bionic.
We compile only libzim on bionic, for compatibility with old libc.
No need to compile all other dependencies (and fight with some of them not
compiling)
2023-12-01 11:12:32 +01:00
Matthieu Gautier a0978a6ab4 Remove SvnClone.
We don't use it since a long time.
2023-12-01 11:12:32 +01:00
Matthieu Gautier 985643089a Detect the command instead of hardcoding them. 2023-12-01 11:11:26 +01:00
Matthieu Gautier c99a9bd91f Run the command without using shell=True.
It mainly allow to run command in directory containing space.
(Hello, `C:\Program Files\...`)
It would also allow to work on directory containning spaces
(`C:\Users\John Doe`) but xapian configure (at least) expressly doesn't
support it :/

- Run the command without shell=True
- The command must be a list instead of a string.
- All options must also be a list (or an iterable).
2023-12-01 11:11:24 +01:00
Matthieu Gautier e87835c61d Correctly set the environment.
When running command without `shell=True`, python's subproccess will look
for variable `"PATH"` and `b"PATH"` and will complain if both are set.
So the defaultdict should not return something for `b"PATH"`.

We also escape space ` ` in the environment variables to not break
everything with directory containing space.
2023-12-01 11:10:34 +01:00
Matthieu Gautier 88cc75475c Build libzim and libkiwix in debug mode on android.
Fix #623
2023-11-20 11:10:24 +01:00
Matthieu Gautier 861682ecaa Update emsdk version. 2023-11-17 12:28:14 +01:00
Emmanuel Engelhart 6a9093642c Bump-up aria2 to 1.37.0 2023-11-17 12:21:39 +01:00
renaud gaudin ac22caca6d
Don't set context.no_skip on meson builder
no_skip is thus computed automatically depending on project being our or not.
We dont want to skip configure on our own projetcs (limited impact, simplifies deps mgmt)
2023-11-15 08:50:38 +00:00
renaud gaudin a063b91349
Build CoreKiwix.xcframework
CoreKiwix.xcframework is the packaging format required by Kiwix apple (macOS/iOS) reader for libkiwix.
Naming will hopefully be revisited later (libkiwix.xcframework?)

This folder is a combination of all static archive (*.a): dependencies and libkiwix itself
for all apple-supported platforms: macOS x86_64, macOS arm64, iOS arm64 and iOS x86_64.
It also includes the headers.
Note: while iOS archs are separated in the framework, the macOS archs are bundled as a fat binary.

This thus adds:

- A new `apple_all_static` target that lists mentioned sub-platforms.
- A new `AppleXCFramework` virtual dependency and builder
  -  requires `libkiwix`
  - merges the archives into one per target
  - creates the fat binary for macOS
  - creates the xcframework
- `libkiwix_xcframework-VERSION.tar.gz` because platformname is xcframework
  - it only contains the xcframework but in libkiwix_xcframework-VERSION/lib folder
    Because with this virtual target, there are no other files
  - requires a new `xcframework` platform_name in builddef
- subplatforms deps and macOS/iOS _ok files to make_deps_archive

---

https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle
2023-11-15 08:50:00 +00:00
renaud gaudin 09dacaa25e
disabled bitcode support, as deprecated since xcode14
See https://stackoverflow.com/questions/72543728/xcode-14-deprecates-bitcode-but-why
2023-11-09 08:14:52 +00:00
Matthieu Gautier 2a5a5c3a42 Correctly build ICU data when building for wasm.
When we use `--disable-tools` (ie, when we are cross-compiling), ICU
will build the data only if it detects we are cross-compiling.

This make sens until we cross-compiling for wasm.
Wasm output is a script file with the interpreter in the sdk we have
installed. So ICU's configure can run the test binary and so doesn't detect
we are cross-compiling.

So we have to patch ICU Makefile to make it build the ICU data anyway.
2023-11-02 17:33:51 +01:00
Matthieu Gautier beadc3b16c Use custom data.
ICU is used to:
- List locales (`locales_tree`)
- Get information about those locales in different languages (`lang_tree`)
- Remove accents (`translit`)

Tracing ICU without custom data, we also load `likelySubtags` and
`metadata`. Not sure why and what happen when missing but let's be
conservatives and include them.
2023-11-02 11:14:04 +01:00
Matthieu Gautier 717dcd801d Move to ICU 73.2 2023-11-02 11:14:04 +01:00
Matthieu Gautier 8cf6c39d11 Extend `ReleaseDownload` source to be composed of several archives. 2023-11-02 11:13:29 +01:00
Emmanuel Engelhart e966385069 Bump-up Xapian to version 1.4.23 2023-10-31 11:39:29 +01:00
Matthieu Gautier b57f83ed25 Move all toolchain installation in TOOLCHAIN directory.
This is a clearer install and it simplify the base_deps archive creation.
2023-10-24 10:53:31 +02:00
Matthieu Gautier 149c1d25fb Use musl toolchain with gcc 10.
We need a "old" gcc version to be able to run on "old" systems
(libstdc++.6.0.28)
2023-10-23 10:19:12 +02:00
Matthieu Gautier c3d3cc5a97 Add x86_64 musl toolchain and platform. 2023-10-23 10:19:12 +02:00
Matthieu Gautier f0ad7b126a Rename `arm_musl.py` to `musl.py`.
Those files will contain toolchain for musl. Not specific to arm.
2023-10-23 10:19:12 +02:00
Matthieu Gautier 7807e10325 Rename files containing toolchain to `tc_*` 2023-10-23 10:19:12 +02:00
Matthieu Gautier 65dd03e58f Move back to the old toolchain for aarch64
Fix #634
2023-08-11 16:18:25 +02:00
Matthieu Gautier 5884909b25 Add target aarch64_musl_*
I have to mention that adding a new cross compiled target never seems
so simple.
2023-06-14 15:57:49 +02:00
Matthieu Gautier 897e7f292c Switch (again) to new arm cross-compilation toolchain.
This introduce a difference between armv6 and armv8.
2023-05-22 19:03:57 +02:00
Emmanuel Engelhart 5057444acd
Disable decompression feature in libmagic 2023-05-20 13:23:25 +02:00
Emmanuel Engelhart e0d4eea050
Bump-up libmagic to version 5.44 2023-05-19 15:28:34 +02:00
Matthieu Gautier fd85b80b2c Move back to gcc 6.3.0 when compiling to aarch64. 2023-04-26 16:54:35 +02:00
Matthieu Gautier 5ef7e2a017 New version of xapian 1.4.22
Fix #599
2023-04-25 16:54:40 +02:00
Matthieu Gautier ab2cbdbe5b Introduce aarch64 target.
In opposition to 32 bits, it is adapted to all PI (as long as they are
in 64 bits).
2023-03-28 17:47:48 +02:00
Matthieu Gautier 4e88c6eb10 Correctly set the armhf toolchain to a 32 bits arch.
cross-gcc-10.3.0-pi_64.tar.gz for 64 bits architecture and armhf
is about 32 bits.

However, we know use a pi 2 and 3 and Stretch only[*] toolchains

[*] To be tested. Maybe the only is for the target compilation but binary
run elsewhere too.
2023-03-28 17:46:31 +02:00
Matthieu Gautier 31771fa35c Introduce MixedMixin
We will need to create "mixed linkage" library for other arch than native.
It is better to move associated code in a separate part.
2023-03-28 17:40:12 +02:00
Matthieu Gautier b8cd12a360 Update armhf toolschain. 2023-03-28 16:16:22 +02:00
Emmanuel Engelhart 7e88bf14a2
Bumpup libmicrohttpd to 0.9.76 2023-03-01 10:10:15 +01:00
Matthieu Gautier 1f8ccde487 "main" is now our default branch for all our projects. 2023-01-03 10:19:52 +01:00
Matthieu Gautier 344b9328c3 libzim and zim-tools are now using "main" for the default branch. 2022-12-22 14:32:13 +01:00
Matthieu Gautier d76819390e Do not always fallback to master. 2022-12-22 14:31:20 +01:00
Matthieu Gautier f6cd94366a Fix wasm compilation.
On wasm, we cannot do mmap. We have to do plain read.

Fix openzim/libzim#751
2022-12-06 19:01:38 +01:00
Matthieu Gautier cd0c2da542 Correctly compile libkiwix on native_mixed 2022-11-30 12:20:40 +01:00
Matthieu Gautier fd8044ba76 Reduce base dependencies to ony what needed on wasm. 2022-11-16 16:37:05 +01:00
Matthieu Gautier 6f8b82ad7d Fallback to lzma-5.2.6
Version 5.2.7 include this commit
https://git.tukaani.org/?p=xz.git;a=commit;h=31d80c6b261b24220776dfaeb8a04f80f80e0a24

With this change, compiling libzim mixed (libzim dynamic and dependencies,
so lzma, statically) fails at libzim linking with a
`src/libzim.so.8.0.1: version node not found for symbol lzma_get_progress@XZ_5.2.2`
error message.

This can be "workaround" by passing `--disable-symbol-versions` to
configure script but then, it is the compilation of kiwix-desktop in
native_dyn which falling with

```
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_code@XZ_5.0'
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_end@XZ_5.0'
/usr/bin/ld: /usr/lib64/libsystemd.so.0: undefined reference to `lzma_stream_decoder@XZ_5.0'
/usr/bin/ld: /usr/lib64/libxml2.so.2: undefined reference to `lzma_auto_decoder@XZ_5.0'
/usr/bin/ld: /usr/lib64/libxml2.so.2: undefined reference to `lzma_properties_decode@XZ_5.0'
```

Probably because some native dependencies (Qt ?) use versionned symbols.

This have to be fixed somehow but until then, let's go back to 5.2.6
2022-11-16 16:37:05 +01:00
Matthieu Gautier 180fb249f6 Add a support to compile libzim for wasm.
`icu4c_wasm.patch` is build by :
 - Copying config.sub from liblzma source as new version of config.sub there
   knows about wasm architecture.
 - Copying `mh-linux` on `mh-unknown` as specified in (origin) `mh-unknown`.
   This is because icu4c configure doesn't detect `emscripten` platform and
   "fallback" to `mh-unknown`.
2022-11-16 16:37:05 +01:00
Matthieu Gautier b8c120b179 Pass the path of the patch in the command line instead of as stdin.
This way, we can see the applied patch in the log.
2022-11-16 10:46:06 +01:00
Matthieu Gautier a7809b33fc Update lzma version to 5.2.7
On top of using a more recent version (which is good it itself),
version 5.2.7 use a autotools version which knows about wasm.
2022-11-16 10:46:06 +01:00
Matthieu Gautier ce82860b85 Introduce configure and make wrapper.
This way, we can use small wrapper tools from sdk to run configure and
make.
2022-11-16 10:45:57 +01:00
Matthieu Gautier 3847844c54 Update android_ndk to version r21e
To do this, we need to update the android api to 24.
We lost all users using a android under api 24.
2022-09-29 09:45:15 +02:00
Matthieu Gautier bcbb164d49 Build libzim dynamically on android. 2022-06-28 12:23:35 +02:00
Matthieu Gautier aa4250dd41 Build libkiwix with the right new option on android 2022-06-09 10:30:37 +02:00
Matthieu Gautier 72c271a74c Remove LibkiwixApp
The project was used to assemble all android compilation in one
multiplatform java archive.

This allow use to remove android_sdk and Gradle builder
2022-06-09 10:28:59 +02:00
Matthieu Gautier b7a3187b45 Update version of zstd.
No need to update base_deps_meta_version as it is already updated in
this same PR.
2022-04-11 18:08:08 +02:00
Emmanuel Engelhart 500d3bec86 Use zlib 1.2.12 2022-04-11 17:47:56 +02:00
Matthieu Gautier 8b9b74d577 Better flatpak command options.
This mainly add the option `--nointeractive` when installing the sdk.
2022-03-10 16:21:14 +01:00
Matthieu Gautier fe74ad7aff Do not compile libkiwix on android with werror
The java wrapper is using deprecated methods,
so we cannot compile with `werror`.
2022-01-18 11:42:16 +01:00
Matthieu Gautier 462538f4a5 Do not try to cross compile aria2.
Aria2 is a special case. We actually don't really need to compile it.
kiwix-desktop through libkiwix use the aria2c binary but we always
use (package) the system binary or a prebuild release.

And we don't cross compile kiwix-desktop to windows, so we don't need
aria2c neither.
2021-12-24 13:08:29 +01:00
Matthieu Gautier ea7fa1f207 Remove unnecessary aria2 patch
This patch was to compile libaria2 on android.
But we don't compile it for android since a long time.
As it doesn't apply anymore, let's remove it.
2021-12-23 18:50:50 +01:00
Emmanuel Engelhart 71b1c2799a Update aria2c to 1.36.0 2021-12-23 18:50:50 +01:00
Matthieu Gautier 276343c6af Add missing dependency `aria2` to "all" dependencies.
`AllBaseDependencies` is used as a dummy target to build all base
dependencies in the CI.
2021-12-23 18:50:50 +01:00
Matthieu Gautier 4ee28541cd Remove unnecessary zstd patch. 2021-12-23 18:50:48 +01:00
Emmanuel Engelhart 1a3df6fa3b Use recent zstdlib 1.5.1 2021-12-22 16:04:27 +01:00
renaud gaudin a3f662a3de Fixed #501: disable extra libcurl dependencies 2021-10-26 18:13:15 +02:00
Matthieu Gautier 274aec60d2 Copy the right directory on libkiwix android.
The sub-directory `android-kiwix-lib-publisher` has not been renamed.
We plan to move this code in another repository anyway.
It is better for now to use the existing name instead of change the
directory.
2021-07-02 11:19:18 +02:00
Matthieu Gautier 11fc5a0a9c Use correct name for the qtwebengine class.
Wrong copy/paste.
This is not important as we reference dependencies by their name
attribute, not by the class name.
But it is better to have a correct name.
2021-07-02 11:16:02 +02:00
Matthieu Gautier c7ea2a31cb Correctly detect qmake command.
qmake may be named qmake-qt5 on some distribution.
2021-07-02 11:14:13 +02:00
Matthieu Gautier aa349a18e7 Rename kiwix-lib to libkiwix.
The new name of kiwix-lib is libkiwix. Let kiwix-build adopt the name.
2021-06-30 16:45:54 +02:00
Matthieu Gautier b8160de652 Correctly install io.qt.qtwebengine.BaseApp for flatpak build. 2021-06-29 16:06:53 +02:00
Matthieu Gautier afd17b2986 Make kiwix-desktop flatpak use last version of Qt (5.15).
Adapt flatpack_builder to generate the same manifest than PR
flathub/org.kiwix.desktop#6
2021-06-23 17:59:25 +02:00
Matthieu Gautier f1dfa32a8d Use the correct archive for zim-testing-suite 0.3 2021-06-23 14:57:24 +02:00
Matthieu Gautier 7dcf57e32b Do not download zim-testing-suite when building in flatpak. 2021-05-05 15:07:29 +02:00
Matthieu Gautier 1cafcbf412 Get the "source" `zim-testing-suite` step.
The source step (install source) always exists.
The `plaformInfo.name` step may not exists
(On mixed target, we build all deps static and the last project dyn)
So the `native_dyn` doesn't exists for `zim-testing-suite`.
2021-05-05 15:06:35 +02:00
Matthieu Gautier 9d90568204 Make libzim use the test data dire downloaded with zim-testing-tool. 2021-04-28 16:26:43 +02:00
Matthieu Gautier 2d3c5ed4c7 Add zim-testing-suite dependency. 2021-04-28 16:26:43 +02:00
Matthieu Gautier 11a7ec4020 Use the full_name as for the skip file marker.
This way we are sure to download the last archive all the time.
2021-04-28 16:26:43 +02:00
Matthieu Gautier dca64eb5d5 Allow builder to set a build environment for projects using it. 2021-04-12 18:14:23 +02:00
Matthieu Gautier b286be1207 Introduce new method `get_env` to create the env. 2021-04-12 18:11:05 +02:00
Matthieu Gautier 76aa746f84 Add the `dont_skip` attribute on dependency.
Instead of explicitly add the target associated to the toolchain
if we use `build_nodeps` option let add an attribute base ourself on it
to know if we need to add it or not.

This way, we may have other dependency we must not skip.
2021-04-12 18:09:52 +02:00
Veloman Yunkan 4498eb2885 Added xapian as a dependency of kiwix-lib 2021-03-10 18:01:21 +04:00
Emmanuel Engelhart 3d8578ce8e Remove outdated Xapian remote patch 2021-03-07 15:00:58 +01:00
Emmanuel Engelhart 3e1446f2dd Upstream includes <cerrno>, not necessary anymore 2021-03-07 14:55:45 +01:00
Emmanuel Engelhart 54b47fea9e Remove xapian_sys_types.patch applied upstream 2021-03-07 14:50:56 +01:00
Emmanuel Engelhart aad2243c81 Bump-up Xapian to version 1.4.18 2021-03-07 14:41:33 +01:00
Veloman Yunkan d0db3efdce Enable inmemory backend in xapian 2021-03-07 13:14:11 +04:00
Emmanuel Engelhart f6074a7408 zim-tools needs newly Mustache 2021-02-10 14:49:16 +01:00
Kelson 9597662be8
Bump-up libmicrohttpd to 0.9.72 (#464) 2020-12-30 10:44:48 +01:00
Matthieu Gautier 2ef8e14509 Update dependency of kiwix-desktop.
Now that kiwix-desktop use kiwix-lib to start the server, we don't need
kiwix-tools dependency.
2020-11-17 16:49:26 +01:00
Matthieu Gautier 7162b6ff2b Update dependency of libzim. 2020-11-17 16:43:27 +01:00
Matthieu Gautier 39a93b07b3 Fix dependency detection for zim-tools. 2020-07-15 15:51:09 +02:00
Alexander Sashnov da31dd428e remove 'zimwriterfs' project from build and CI configuration
'zimwriterfs' is now a part of zim-tools (openzim/zim-tools/#92)
2020-07-08 16:54:14 +02:00
Kelson 3de886f805 Upgrade libmicrohttpd to 0.9.71 2020-07-08 14:57:38 +02:00
MiguelRocha e72589a850 Added a flag to force kiwix build to not do fast_clone
- Docopt cannot do fast_clone cause it is getting a
    specific commit id. This will be changed when a new
    release is available.
2020-05-25 10:57:22 +02:00
MiguelRocha 69c33da0bc Now kiwix-build retrives docopt from a commit that has pkgconfig support. 2020-05-25 10:57:04 +02:00
MiguelRocha 3e2df9a8e8 Added docopt cpp dependency to zimtools. It will be needed to the new version of zimdump
Do not build docopt on android and iOS.
2020-04-27 13:39:40 +02:00
Kelson 7f6a8856b7 Remove deprecated Mustache patch 2020-04-21 09:31:21 +02:00
Kelson 5d1f5bda1f Update to Mustache v4.1 2020-04-21 09:31:21 +02:00
Matthieu Gautier 99226e0c6a Build zstd in flatpak.
Revert 10c767e8ce
2020-04-20 15:14:31 +02:00
Matthieu Gautier ffdee634f4 Do not force a reconfigure of meson projects.
If meson.build changes, the ninja command will rebuild it.
And its avoid us to delete the build directory.
2020-04-10 00:38:47 +02:00
Veloman Yunkan 25d9e18e3d Temporary fix for facebook/zstd#2073 2020-04-07 14:12:17 +04:00
Veloman Yunkan ece4df3721 Added zstd dependency 2020-04-06 20:17:09 +02:00
Kelson 9be35a4dc0
Fix qt-everywhere-src-5.10.1.tar.xz URL (#431) 2020-04-06 20:16:01 +02:00
Matthieu Gautier fb07b58812 Fix recompilation of the CI of meson project.
We were assuming that meson project correspond to our projects and so we
were always building them, even if they were already compiled.
(This way, a simple `kiwix-build` is enough to recompile the WIP code of
our project).

However, on the CI, we do not archive the source code/build directory in
the base deps archive. So when we try to compile, the compile step of
meson projects fails because the source are not here.
We have a small workaround for pugixml but as zstd is also meson, it is
time to do something correct.

By default, all projects now try to skip if a build is already present.
Our projects are marked as `force_build` and so, they do not try to skip.
2020-04-06 19:15:40 +02:00
Matthieu Gautier 4fa5f34125 Build all make based dependency using -O3 option.
This will build all Make, CMake, QMake dependency being build with -O3.
So all our dependencies will be build with -O3.

Our project (meson) are already build in release when needed.
kiwix-desktop should be build optimized in case of release but we need
to handle it correctly. At least not build in O3 per default as it may
break debug.
2020-03-24 16:50:38 +01:00