diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5426865..719ad98 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,8 @@ Build Docker Images: - macos-x86_64 - macos-aarch64 - dind - - flatpak-appimage + - flatpak-appimage-x86_64 + - flatpak-appimage-aarch64 script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD registry.gitlab.com - make docker-$DISTRO @@ -45,7 +46,8 @@ Build: - fedora36 - macos-x86_64 - macos-aarch64 - - flatpak-appimage + - flatpak-appimage-x86_64 + - flatpak-appimage-aarch64 image: registry.gitlab.com/librewolf-community/browser/bsys5/dind tags: - autoscale diff --git a/Makefile b/Makefile index 7b6c9b7..e1f4ef8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY : help clean veryclean prune docker push rmi build update work docker-debian11 debian11 docker-mint20 mint20 docker-mint21 mint21 docker-ubuntu20 ubuntu20 docker-ubuntu21 ubuntu21 docker-ubuntu22 ubuntu22 docker-fedora37 fedora37 docker-fedora36 fedora36 docker-macos-x86_64 macos-x86_64 docker-macos-aarch64 macos-aarch64 docker-tumbleweed tumbleweed tarball docker-dind windows flatpak-appimage +.PHONY : help clean veryclean prune docker push rmi build update work docker-debian11 debian11 docker-mint20 mint20 docker-mint21 mint21 docker-ubuntu20 ubuntu20 docker-ubuntu21 ubuntu21 docker-ubuntu22 ubuntu22 docker-fedora37 fedora37 docker-fedora36 fedora36 docker-macos-x86_64 macos-x86_64 docker-macos-aarch64 macos-aarch64 docker-tumbleweed tumbleweed tarball docker-dind windows flatpak-appimage flatpak-appimage-aarch64 version:=$(shell cat version) release:=$(shell cat release) @@ -19,7 +19,7 @@ help : @echo " [docker-macos-x86_64], [docker-macos-aarch64]" @echo " [docker-tumbleweed]" @echo " [docker-dind]" - @echo " [docker-windows] [docker-flatpak-appimage]" + @echo " [docker-windows] [docker-flatpak-appimage-x86_64] [docker-flatpak-appimage-aarch64" @echo "" @echo "build targets:" @echo " [debian11], [mint20], [mint21], [ubuntu20], [ubuntu21]" @@ -27,7 +27,7 @@ help : @echo " [fedora37], [fedora36]" @echo " [macos-x64_64], [macos-aarch64]" @echo " [tumbleweed]" - @echo " [windows] [flatpak-appimage]" + @echo " [windows] [flatpak-appimage-x86_64] [flatpak-appimage-aarch64]" @echo " [tarball]" @echo "" @@ -76,6 +76,8 @@ build : ${MAKE} clean ${MAKE} flatpak-appimage ${MAKE} clean + ${MAKE} flatpak-appimage-aarch64 + ${MAKE} clean push : docker push registry.gitlab.com/librewolf-community/browser/bsys5/debian11 @@ -223,10 +225,14 @@ windows : ${MAKE} -f assets/windows.mk build ## flatpack-appimage -docker-flatpak-appimage : - ${MAKE} -f assets/flatpak-appimage.mk docker -flatpak-appimage : - ${MAKE} -f assets/flatpak-appimage.mk build +docker-flatpak-appimage-x86_64 : + ${MAKE} -f assets/flatpak-appimage.mk arch=x86_64 docker +flatpak-appimage-x86_64 : + ${MAKE} -f assets/flatpak-appimage.mk arch=x86_64 build +docker-flatpak-appimage-aarch64 : + ${MAKE} -f assets/flatpak-appimage.mk arch=aarch64 docker +flatpak-appimage-aarch64 : + ${MAKE} -f assets/flatpak-appimage.mk arch=aarch64 build # # Docker in Docker (for GitLab CI) diff --git a/assets/flatpak-appimage.Dockerfile b/assets/flatpak-appimage.Dockerfile index 6e1342b..c397fd6 100644 --- a/assets/flatpak-appimage.Dockerfile +++ b/assets/flatpak-appimage.Dockerfile @@ -1,8 +1,54 @@ -FROM ubuntu:latest -RUN apt-get -y update && apt-get -y upgrade && apt-get -y install bash git wget build-essential zip -RUN dpkg --add-architecture i386 && apt-get -y update && apt-get -y install wine32 +# $(arch) -RUN tmpdir=$(mktemp -d) && cd $tmpdir && git clone https://gitlab.com/librewolf-community/browser/windows.git && cd windows/linux && make setup-debian && make fetch && make bootstrap && cd /root && rm -rf $tmpdir +FROM debian:bullseye +ARG arch=error + +ARG version=error +ARG source_release=error + +# we use this wasi version +ENV wasi_fullversion 14.0 +ENV wasi_mainversion 14 + + + +# dependencies needed to run ./mach bootstrap +RUN apt-get -y update && apt-get -y upgrade && apt-get -y install mercurial python3 python3-dev python3-pip wget build-essential libpython3-dev m4 unzip uuid zip libasound2-dev libcurl4-openssl-dev libdbus-1-dev libdbus-glib-1-dev libdrm-dev libgtk-3-dev libpulse-dev libx11-xcb-dev libxt-dev xvfb rsync + +# setup osx sdk +RUN mkdir -p /osx-cross/MacOSX-SDKs &&\ + cd /osx-cross/MacOSX-SDKs &&\ + wget -q "https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz" &&\ + tar xf MacOSX11.3.sdk.tar.xz &&\ + rm -f MacOSX11.3.sdk.tar.xz + +# run the bootstrap +RUN wget -q -O librewolf-$version-$source_release.source.tar.gz https://gitlab.com/api/v4/projects/32320088/packages/generic/librewolf-source/$version-$source_release/librewolf-$version-$source_release.source.tar.gz +RUN tar xf librewolf-$version-$source_release.source.tar.gz +WORKDIR librewolf-$version-$source_release +RUN echo ac_add_options --target=$arch-apple-darwin > mozconfig +RUN echo ac_add_options --enable-bootstrap >> mozconfig +RUN echo ac_add_options --with-macos-sdk=/osx-cross/MacOSX-SDKs/MacOSX11.3.sdk >> mozconfig +RUN MOZBUILD_STATE_PATH=$HOME/.mozbuild ./mach --no-interactive bootstrap --application-choice=browser +RUN ./mach artifact toolchain --from-build linux64-libdmg +RUN ./mach artifact toolchain --from-build linux64-cctools-port +RUN ./mach artifact toolchain --from-build linux64-hfsplus +RUN ./mach artifact toolchain --from-build linux64-binutils +RUN ./mach artifact toolchain --from-build sysroot-wasm32-wasi +## RUN ./mach artifact toolchain --from-build linux64-clang-macosx-cross +RUN /root/.cargo/bin/cargo install cbindgen +RUN /root/.cargo/bin/rustup target add $arch-apple-darwin +RUN cp -r binutils /root/.mozbuild +RUN cp -r cctools /root/.mozbuild +RUN cp -r sysroot-wasm32-wasi /root/.mozbuild +## RUN cp -r clang /root/.mozbuild +RUN cp -r dmg /root/.mozbuild +RUN cp -r hfsplus-tools /root/.mozbuild +RUN pip install testresources pycairo +WORKDIR .. +RUN rm -rf librewolf-$version-$source_release librewolf-$version-$source_release.source.tar.gz + +# our work happens here, on the host filesystem. WORKDIR /work VOLUME ["/work"] diff --git a/assets/flatpak-appimage.mk b/assets/flatpak-appimage.mk index 9626ac8..511d472 100644 --- a/assets/flatpak-appimage.mk +++ b/assets/flatpak-appimage.mk @@ -1,5 +1,5 @@ -# windows.mk - this one is quite a bit different from the others, -# but we can fix that later. +# $(arch) +# $(use_docker) .PHONY : docker build @@ -8,35 +8,23 @@ release:=$(shell cat release) source_release:=$(shell cat source_release) full_version:=$(version)-$(source_release)$(shell [ $(release) -gt 1 ] && echo "-$(release)") -outfile-exe=librewolf-$(full_version).en-US.win64-setup.exe -outfile-zip=librewolf-$(full_version).en-US.win64-portable.zip -outfiles=$(outfile-exe) $(outfile-zip) - -distro=windows -image=registry.gitlab.com/librewolf-community/browser/bsys5/$(distro):latest +outfile=librewolf-$(full_version).en-US.mac.$(arch).dmg docker : + docker build --build-arg "arch=$(arch)" --build-arg "version=$(version)" --build-arg "source_release=$(source_release)" -t registry.gitlab.com/librewolf-community/browser/bsys5/macos-$(arch) - < assets/macos.Dockerfile - docker build -t $(image) - < assets/windows.Dockerfile - -build : - - pwd - rm -rf windows - git clone https://gitlab.com/librewolf-community/browser/windows.git - - ( cd windows/linux && pwd && ${MAKE} fetch ) +build : $(outfile) $(outfile).sha256sum +$(outfile) : + ${MAKE} work + sed "s/_ARCH_/$(arch)/g" < assets/macos.mozconfig > work/librewolf-$(version)-$(source_release)/mozconfig ifeq ($(use_docker),false) - ( cd windows/linux && ${MAKE} ) + (cd work/librewolf-$(version)-$(source_release) && ./mach build && echo 'Packaging... (output hidden)' && cat browser/locales/shipped-locales | xargs ./mach package-multi-locale --locales >/dev/null) else - docker run --rm -v $(shell pwd)/windows/linux:/work:rw registry.gitlab.com/librewolf-community/browser/bsys5/$(distro) sh -c "${MAKE} all" + docker run --rm -v $(shell pwd)/work:/work:rw registry.gitlab.com/librewolf-community/browser/bsys5/macos-$(arch) sh -c "cd /work/librewolf-$(version)-$(source_release) && ./mach build && echo 'Packaging... (output hidden)' && cat browser/locales/shipped-locales | xargs ./mach package-multi-locale --locales >/dev/null" endif + cp -v work/librewolf-$(version)-$(source_release)/obj-$(arch)-apple-darwin/dist/librewolf-$(version)-$(source_release).en-US.mac.dmg $(outfile) - cp -v windows/linux/$(outfiles) . - - sha256sum $(outfile-exe) > $(outfile-exe).sha256sum - cat $(outfile-exe).sha256sum - sha256sum $(outfile-zip) > $(outfile-zip).sha256sum - cat $(outfile-zip).sha256sum - +$(outfile).sha256sum : $(outfile) + sha256sum $(outfile) > $(outfile).sha256sum + cat $(outfile).sha256sum