commit
cb77de12ec
10
.travis.yml
10
.travis.yml
|
@ -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"
|
||||||
|
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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'))):
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue