Merge pull request #725 from kiwix/CI_Windows_projects

This commit is contained in:
Matthieu Gautier 2024-08-21 16:15:39 +02:00 committed by GitHub
commit bc64bdbbac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 147 additions and 77 deletions

View File

@ -22,9 +22,9 @@ BUILD_DEF = """
| manylinux | aarch64_mixed | BP | | | | | linux-aarch64-manylinux | |
----------------------------------------------------------------------------------------------------------------------------------------------
# On Windows, we build only libzim for now. And only native_mixed as xapian doesn't compile as dll
| windows | native_static | Bd | | | | | win-x86_64 | win-x86_64-static |
| windows | native_static | Bd | d | | d | | win-x86_64 | win-x86_64-static |
| windows | native_dyn | Bd | | | | | win-x86_64 | win-x86_64-dyn |
| windows | native_mixed | BPd | | | | | win-x86_64 | win-x86_64-mixed |
| windows | native_mixed | BPd | d | | | d | win-x86_64 | win-x86_64-mixed |
----------------------------------------------------------------------------------------------------------------------------------------------
# Osx builds, build binaries on native_dyn and native_static. On anyother things, build only the libraries
| macos | native_dyn | d | d | dB | B | | | macos-x86_64-dyn |

View File

@ -103,6 +103,8 @@ EXPORT_FILES = {
),
"lib/libzim.dylib",
"lib/*/libzim.pc",
"lib/libzim.dll",
"lib/libzim.lib",
"include/zim/**/*.h",
"share/icu/{}/icudt{}l.dat".format(
base_deps_versions["icu4c"], major_version(base_deps_versions["icu4c"])
@ -432,7 +434,7 @@ def make_archive(project, make_release):
files_to_archive = []
for export_file in export_files:
files_to_archive.extend(base_dir.glob(export_file))
if platform_name == "win-i686":
if platform_name == "win-i686" or platform.system() == "Windows":
open_archive = lambda a: zipfile.ZipFile(
str(a), "w", compression=zipfile.ZIP_DEFLATED
)

View File

@ -1,11 +1,35 @@
from .base import Dependency, ReleaseDownload, MakeBuilder
from .base import Dependency, ReleaseDownload, MakeBuilder, NoopBuilder
from kiwixbuild.utils import Remotefile, run_command
from kiwixbuild.utils import Remotefile, run_command, pj
import platform
from shutil import copy2
class Aria2(Dependency):
name = "aria2"
if platform.system() == "Windows":
class Source(ReleaseDownload):
archive = Remotefile(
"aria2-1.37.0-win-64bit-build1.zip",
"67d015301eef0b612191212d564c5bb0a14b5b9c4796b76454276a4d28d9b288",
"https://github.com/aria2/aria2/releases/download/release-1.37.0/aria2-1.37.0-win-64bit-build1.zip",
)
class Builder(NoopBuilder):
def build(self):
self.command("copy_binary", self._copy_binary)
def _copy_binary(self, context):
context.try_skip(self.build_path)
copy2(
pj(self.source_path, "aria2c.exe"),
pj(self.buildEnv.install_dir, "bin"),
)
else:
class Source(ReleaseDownload):
archive = Remotefile(
"aria2-1.37.0.tar.xz",

View File

@ -3,7 +3,7 @@ import os
from .base import (
Dependency,
ReleaseDownload,
MakeBuilder,
MesonBuilder,
)
from kiwixbuild.utils import Remotefile, pj, Defaultdict, SkipCommand, run_command
@ -15,30 +15,29 @@ class LibCurl(Dependency):
class Source(ReleaseDownload):
name = "libcurl"
archive = Remotefile(
"curl-7.67.0.tar.xz",
"f5d2e7320379338c3952dcc7566a140abb49edb575f9f99272455785c40e536c",
"https://curl.haxx.se/download/curl-7.67.0.tar.xz",
src_archive = Remotefile(
"curl-8.4.0.tar.xz",
"16c62a9c4af0f703d28bda6d7bbf37ba47055ad3414d70dec63e2e6336f2a82d",
"https://curl.se/download/curl-8.4.0.tar.xz",
)
meson_archive = Remotefile(
"curl_8.4.0-2_patch.zip",
"bbb6ae75225c36ef9bb336cface729794c7c070c623a003fff40bd416042ff6e",
"https://public.kymeria.fr/KIWIX/curl_8.4.0-2_patch.zip",
)
archives = [src_archive, meson_archive]
class Builder(MakeBuilder):
class Builder(MesonBuilder):
dependencies = ["zlib"]
configure_options = [
*[
f"--without-{p}"
f"-D{p}=disabled"
for p in (
"libssh2",
"ssh",
"ssl",
"libmetalink",
"librtmp",
"nghttp2",
"libidn2",
"rtmp",
"http2",
"idn",
"brotli",
)
],
*[
f"--disable-{p}"
for p in (
"ftp",
"file",
"ldap",
@ -52,7 +51,8 @@ class LibCurl(Dependency):
"smb",
"smtp",
"gopher",
"manual",
)
],
]
def _test(self, context):
context.skip("No Test")

View File

@ -50,3 +50,11 @@ class Libkiwix(Dependency):
if self.buildEnv.configInfo.build == "android":
return "shared"
return super().library_type
def _test(self, context):
# Libkiwix tests are currently broken on Windows.
# Until we fix them, let's deactivate tests.
# It allow us to build dependencies for kiwix-desktop
if neutralEnv("distname") == "Windows":
context.skip()
super()._test(context)

View File

@ -1,4 +1,4 @@
from .base import Dependency, ReleaseDownload, MakeBuilder
from .base import Dependency, ReleaseDownload, MesonBuilder
from kiwixbuild.utils import Remotefile
@ -7,17 +7,23 @@ class MicroHttpd(Dependency):
name = "libmicrohttpd"
class Source(ReleaseDownload):
archive = Remotefile(
src_archive = Remotefile(
"libmicrohttpd-0.9.76.tar.gz",
"f0b1547b5a42a6c0f724e8e1c1cb5ce9c4c35fb495e7d780b9930d35011ceb4c",
"https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.76.tar.gz",
)
meson_archive = Remotefile(
"libmicrohttpd_0.9.16-3_patch.zip",
"0954c094a0d4cfe0dd799d8df8a04face6669f7b4d51a7386a9c3e2d37b9c3b3",
"https://wrapdb.mesonbuild.com/v2/libmicrohttpd_0.9.76-3/get_patch",
)
archives = [src_archive, meson_archive]
patches = ["libmicrohttpd_meson_pkgconfig.patch"]
class Builder(MakeBuilder):
class Builder(MesonBuilder):
configure_options = [
"--disable-https",
"--without-libgcrypt",
"--without-libcurl",
"--disable-doc",
"--disable-examples",
"-Dgnutls=disabled",
"-Dgcrypt=disabled",
"-Dcurl=disabled",
"-Dexpat=disabled",
]

View File

@ -15,5 +15,4 @@ class Pugixml(Dependency):
flatpak_dest = "src"
class Builder(MesonBuilder):
build_type = "release"
strip_options = []

View File

@ -158,10 +158,12 @@ class FlatpakBuilder:
module["no-autogen"] = True
module_sources = module.setdefault("sources", [])
if isinstance(source, ReleaseDownload):
for archive in source.archives:
src = {
"type": "archive",
"sha256": source.archive.sha256,
"url": source.archive.url,
"dest-filename": archive.name,
"sha256": archive.sha256,
"url": archive.url,
}
if hasattr(source, "flatpak_dest"):
src["dest"] = source.flatpak_dest

View File

@ -0,0 +1,29 @@
diff '--color=auto' -ur libmicrohttpd-0.9.76_orig/meson.build libmicrohttpd-0.9.76/meson.build
--- libmicrohttpd-0.9.76_orig/meson.build 2024-08-18 14:55:29.372805433 +0200
+++ libmicrohttpd-0.9.76/meson.build 2024-08-18 17:19:44.087444728 +0200
@@ -6,6 +6,8 @@
default_options: ['warning_level=1'],
)
+pkg = import('pkgconfig')
+
add_project_arguments('-D_GNU_SOURCE', language: 'c')
incdirs = include_directories('src/include')
@@ -267,6 +269,16 @@
install: true,
)
+install_headers(
+ 'src/include/microhttpd.h',
+)
+
+pkg.generate(
+ libmicrohttpd,
+ description: 'Libmicrohttpd',
+ name: 'libmicrohttpd',
+)
+
depinc = include_directories('.', 'src/include')
libmicrohttpd_dep = declare_dependency(
include_directories: depinc,

View File

@ -39,7 +39,7 @@ release_versions = {
# This is the "version" of the whole base_deps_versions dict.
# Change this when you change base_deps_versions.
base_deps_meta_version = "02"
base_deps_meta_version = "03"
base_deps_versions = {
"zlib": "1.2.12",