Win32 build (#309)

Win32 build
This commit is contained in:
Matthieu Gautier 2019-09-04 21:02:14 +02:00 committed by GitHub
commit cb77de12ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 33 additions and 21 deletions

View File

@ -20,12 +20,12 @@ jobs:
- stage: build_docker_images - stage: build_docker_images
script: &build_images script: &build_images
- | - |
if [ ! $(curl -sflL https://hub.docker.com/v2/repositories/kiwix/kiwix-build_ci/tags/${VARIANT}-${TRAVIS_COMMIT}) ] if [ ! $(curl -sflL https://hub.docker.com/v2/repositories/kiwix/kiwix-build_ci/tags/${VARIANT}-${DOCKER_VERSION}) ]
then then
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker build -t kiwix-build_ci -f travis/${VARIANT}_builder.dockerfile . docker build -t kiwix-build_ci -f travis/${VARIANT}_builder.dockerfile .
docker tag kiwix-build_ci kiwix/kiwix-build_ci:${VARIANT}-${TRAVIS_COMMIT} docker tag kiwix-build_ci kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION}
docker push kiwix/kiwix-build_ci:${VARIANT}-${TRAVIS_COMMIT} docker push kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION}
fi fi
env: VARIANT=xenial env: VARIANT=xenial
- stage: build_docker_images - stage: build_docker_images
@ -80,7 +80,8 @@ script:
--mount=type=bind,src=$HOME/EXPORT,dst=/home/ci_builder/EXPORT \ --mount=type=bind,src=$HOME/EXPORT,dst=/home/ci_builder/EXPORT \
--mount=type=bind,src=$HOME/.cache,dst=/home/ci_builder/.cache \ --mount=type=bind,src=$HOME/.cache,dst=/home/ci_builder/.cache \
--mount=type=bind,src=$HOME/.gradle/caches,dst=/home/ci_builder/.gradle/caches \ --mount=type=bind,src=$HOME/.gradle/caches,dst=/home/ci_builder/.gradle/caches \
kiwix/kiwix-build_ci:${VARIANT}-${TRAVIS_COMMIT} --mount=type=bind,src=$TRAVIS_BUILD_DIR,dst=/home/ci_builder/kiwix-build \
kiwix/kiwix-build_ci:${VARIANT}-${DOCKER_VERSION}
fi fi
- if [[ $TRAVIS_OS_NAME != "linux" ]]; then python3 travis/compile_all.py; fi - if [[ $TRAVIS_OS_NAME != "linux" ]]; then python3 travis/compile_all.py; fi
after_success: after_success:
@ -105,6 +106,7 @@ env:
global: global:
- NIGHTLY_DATE=$(date +%Y-%m-%d) - NIGHTLY_DATE=$(date +%Y-%m-%d)
- SSH_KEY=/tmp/private/travisci_builder_id_key - SSH_KEY=/tmp/private/travisci_builder_id_key
- DOCKER_VERSION=1
matrix: matrix:
- PLATFORM="flatpak" DESKTOP_ONLY=1 - PLATFORM="flatpak" DESKTOP_ONLY=1
- PLATFORM="native_dyn" - PLATFORM="native_dyn"

View File

@ -204,6 +204,7 @@ class Builder:
platform.clean_intermediate_directories() platform.clean_intermediate_directories()
else: else:
print("SKIP") print("SKIP")
except StopBuild: except StopBuild as e:
print(e)
sys.exit("Stopping build due to errors") sys.exit("Stopping build due to errors")

View File

@ -446,7 +446,7 @@ class MesonBuilder(Builder):
@property @property
def build_type(self): def build_type(self):
return 'release' if option('make_release') else 'debugoptimized' return 'release' if option('make_release') else 'debug'
@property @property
def strip_option(self): def strip_option(self):

View File

@ -6,10 +6,10 @@ from kiwixbuild._global import neutralEnv
class Win32PlatformInfo(PlatformInfo): class Win32PlatformInfo(PlatformInfo):
extra_libs = ['-lwinmm', '-lws2_32', '-lshlwapi', '-lrpcrt4', '-lmsvcr100', '-liphlpapi']
build = 'win32' build = 'win32'
compatible_hosts = ['fedora', 'debian'] compatible_hosts = ['fedora', 'debian']
arch_full = 'i686-w64-mingw32' arch_full = 'i686-w64-mingw32'
extra_libs = ['-lwinmm', '-lshlwapi', '-lws2_32']
def get_cross_config(self): def get_cross_config(self):
return { return {

View File

@ -127,7 +127,7 @@ def download_remote(what, where):
print('Sha256 for {} not set, do no verify download'.format(what.name)) print('Sha256 for {} not set, do no verify download'.format(what.name))
elif what.sha256 != get_sha256(file_path): elif what.sha256 != get_sha256(file_path):
os.remove(file_path) os.remove(file_path)
raise StopBuild() raise StopBuild("Sha 256 doesn't correspond")
class SkipCommand(Exception): class SkipCommand(Exception):
@ -135,7 +135,11 @@ class SkipCommand(Exception):
class StopBuild(Exception): class StopBuild(Exception):
pass def __init__(self, msg=""):
self.msg = msg
def __str__(self):
return self.msg
class Remotefile(namedtuple('Remotefile', ('name', 'sha256', 'url'))): class Remotefile(namedtuple('Remotefile', ('name', 'sha256', 'url'))):

View File

@ -29,11 +29,7 @@ USER ci_builder
WORKDIR /home/ci_builder WORKDIR /home/ci_builder
ENV PATH="/home/ci_builder/.local/bin:${PATH}" ENV PATH="/home/ci_builder/.local/bin:${PATH}"
# Install kiwix-build
COPY --chown=ci_builder:ci_builder . kiwix-build
RUN pip3 install --user -e ./kiwix-build
ENV TRAVIS_BUILD_DIR /home/ci_builder/kiwix-build ENV TRAVIS_BUILD_DIR /home/ci_builder/kiwix-build
ENV TRAVIS_OS_NAME linux_bionic ENV TRAVIS_OS_NAME linux_bionic
CMD kiwix-build/travis/compile_all.py CMD pip3 install --user ./kiwix-build && kiwix-build/travis/compile_all.py

View File

@ -110,9 +110,11 @@ def run_kiwix_build(target, platform,
print_message("Build {} (deps={}, release={}, dist={})", print_message("Build {} (deps={}, release={}, dist={})",
target, build_deps_only, make_release, make_dist) target, build_deps_only, make_release, make_dist)
subprocess.check_call(command, cwd=str(HOME)) subprocess.check_call(command, cwd=str(HOME))
print_message("Build ended")
def create_desktop_image(): def create_desktop_image():
print_message("creating desktop image")
if make_release: if make_release:
postfix = main_project_versions['kiwix-desktop'] postfix = main_project_versions['kiwix-desktop']
extra_postfix = release_versions.get('kiwix-desktop') extra_postfix = release_versions.get('kiwix-desktop')
@ -131,6 +133,7 @@ def create_desktop_image():
if PLATFORM == 'flatpak': if PLATFORM == 'flatpak':
build_path = BASE_DIR/'org.kiwix.desktop.flatpak' build_path = BASE_DIR/'org.kiwix.desktop.flatpak'
app_name = 'org.kiwix.desktop.{}.flatpak'.format(postfix) app_name = 'org.kiwix.desktop.{}.flatpak'.format(postfix)
print_message("archive is ", build_path)
else: else:
build_path = HOME/'Kiwix-{}-x86_64.AppImage'.format(postfix) build_path = HOME/'Kiwix-{}-x86_64.AppImage'.format(postfix)
app_name = "kiwix-desktop_x86_64_{}.appimage".format(postfix) app_name = "kiwix-desktop_x86_64_{}.appimage".format(postfix)
@ -253,8 +256,16 @@ def make_flatpak_cache_archive():
os=TRAVIS_OS_NAME, os=TRAVIS_OS_NAME,
platform=PLATFORM) platform=PLATFORM)
cache = BASE_DIR/'.flatpak-builder' cache = BASE_DIR/'.flatpak-builder'
print_message("make flatpak cache archive")
nb_files = 0
def pseudo_filter(tarinfo):
nonlocal nb_files
nb_files += 1
if (nb_files % 1000) == 0:
print('.', flush=True)
return tarinfo
with tarfile.open(str(BASE_EXPORT_DIR/archive_name), 'w:xz') as tar: with tarfile.open(str(BASE_EXPORT_DIR/archive_name), 'w:xz') as tar:
tar.add(str(cache), arcname=str(cache.relative_to(BASE_DIR))) tar.add(str(cache), arcname=str(cache.relative_to(BASE_DIR)), filter=pseudo_filter)
def update_flathub_git(): def update_flathub_git():
@ -264,6 +275,7 @@ def update_flathub_git():
env['GIT_AUTHOR_EMAIL'] = env['GIT_COMMITTER_EMAIL'] = "kiwixbot@kymeria.fr" env['GIT_AUTHOR_EMAIL'] = env['GIT_COMMITTER_EMAIL'] = "kiwixbot@kymeria.fr"
def call(command, cwd=None): def call(command, cwd=None):
cwd = cwd or GIT_REPO_DIR cwd = cwd or GIT_REPO_DIR
print_message("call ", command)
subprocess.check_call(command, env=env, cwd=str(cwd)) subprocess.check_call(command, env=env, cwd=str(cwd))
command = ['git', 'clone', FLATPAK_HTTP_GIT_REMOTE] command = ['git', 'clone', FLATPAK_HTTP_GIT_REMOTE]
call(command, cwd=GIT_EXPORT_DIR) call(command, cwd=GIT_EXPORT_DIR)
@ -436,6 +448,7 @@ for target in TARGETS:
run_kiwix_build(target, run_kiwix_build(target,
platform=PLATFORM, platform=PLATFORM,
make_release=make_release) make_release=make_release)
print_message("target is ", target)
if target == 'kiwix-desktop': if target == 'kiwix-desktop':
create_desktop_image() create_desktop_image()
if make_release and PLATFORM == 'native_dyn' and release_versions.get(target) == 0: if make_release and PLATFORM == 'native_dyn' and release_versions.get(target) == 0:

View File

@ -22,7 +22,7 @@ RUN apt update -q && \
# vim less grep \ # vim less grep \
&& \ && \
apt-get clean -y && \ apt-get clean -y && \
rm -rf /var/lib/apt/list/* /usr/share/doc/* /var/cache/debconf/* rm -rf /var/lib/apt/lists/* /usr/share/doc/* /var/cache/debconf/*
# Create user # Create user
RUN useradd --create-home ci_builder RUN useradd --create-home ci_builder
@ -30,12 +30,8 @@ USER ci_builder
WORKDIR /home/ci_builder WORKDIR /home/ci_builder
ENV PATH="/home/ci_builder/.local/bin:${PATH}" ENV PATH="/home/ci_builder/.local/bin:${PATH}"
# Install kiwix-build
COPY --chown=ci_builder:ci_builder . kiwix-build
RUN pip3 install --user -e ./kiwix-build
ENV TRAVIS_BUILD_DIR /home/ci_builder/kiwix-build ENV TRAVIS_BUILD_DIR /home/ci_builder/kiwix-build
ENV GRADLE_USER_HOME /home/ci_builder ENV GRADLE_USER_HOME /home/ci_builder
ENV TRAVIS_OS_NAME linux_xenial ENV TRAVIS_OS_NAME linux_xenial
CMD kiwix-build/travis/compile_all.py CMD pip3 install --user ./kiwix-build && kiwix-build/travis/compile_all.py