From 5abfe6496058a439e78047594aaf6282262b62c0 Mon Sep 17 00:00:00 2001 From: "Hui, Chunyang" Date: Mon, 21 Dec 2020 06:03:53 +0000 Subject: [PATCH] Rename installer to work with musl-gcc --- .../workflows/package_repo_setup_and_test.yml | 4 +-- tools/installer/README.md | 4 +-- tools/installer/deb/Makefile | 27 ++++++++++++------- .../toolchains/{gcc => musl-gcc}/changelog | 0 .../deb/toolchains/{gcc => musl-gcc}/compat | 0 .../deb/toolchains/{gcc => musl-gcc}/control | 0 .../deb/toolchains/{gcc => musl-gcc}/rules | 0 .../{gcc => musl-gcc}/source/format | 0 tools/installer/rpm/Makefile | 22 ++++++++------- .../golang/occlum-toolchains-golang.spec | 2 +- .../{gcc => musl-gcc}/download_sources.sh | 0 .../musl-cross-make-disable-download.patch | 0 .../{gcc => musl-gcc}/occlum-gcc.sh | 0 .../occlum-toolchains-gcc.spec | 3 ++- 14 files changed, 37 insertions(+), 25 deletions(-) rename tools/installer/deb/toolchains/{gcc => musl-gcc}/changelog (100%) rename tools/installer/deb/toolchains/{gcc => musl-gcc}/compat (100%) rename tools/installer/deb/toolchains/{gcc => musl-gcc}/control (100%) rename tools/installer/deb/toolchains/{gcc => musl-gcc}/rules (100%) rename tools/installer/deb/toolchains/{gcc => musl-gcc}/source/format (100%) rename tools/installer/rpm/toolchains/{gcc => musl-gcc}/download_sources.sh (100%) rename tools/installer/rpm/toolchains/{gcc => musl-gcc}/musl-cross-make-disable-download.patch (100%) rename tools/installer/rpm/toolchains/{gcc => musl-gcc}/occlum-gcc.sh (100%) rename tools/installer/rpm/toolchains/{gcc => musl-gcc}/occlum-toolchains-gcc.spec (97%) diff --git a/.github/workflows/package_repo_setup_and_test.yml b/.github/workflows/package_repo_setup_and_test.yml index 499020d5..53e0474e 100644 --- a/.github/workflows/package_repo_setup_and_test.yml +++ b/.github/workflows/package_repo_setup_and_test.yml @@ -32,7 +32,7 @@ jobs: run: docker run -itd --name=ubuntu -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu18.04 - name: Build deb packages - run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make; make c/c++" + run: docker exec ubuntu bash -c "cd /root/workspace/occlum/tools/installer/deb; make; make musl-gcc" - name: Update deb repo run: docker exec ubuntu bash -c 'apt-get update; apt-get install -y tree apt-utils gnupg reprepro rng-tools aptly; rm -rf /root/.gnupg; @@ -49,7 +49,7 @@ jobs: run: docker run -itd --name=centos -v $GITHUB_WORKSPACE:/root/workspace occlum/occlum:${{ env.OCCLUM_VERSION }}-centos8.1 - name: Build rpm packages - run: docker exec centos bash -c "cd /root/workspace/occlum/tools/installer/rpm; make; make c/c++" + run: docker exec centos bash -c "cd /root/workspace/occlum/tools/installer/rpm; make; make musl-gcc" - name: Configure the centos container run: docker exec centos bash -c 'yum install -y gnupg pinentry createrepo rpm-sign ca-certificates; rm -rf /root/.gnupg; diff --git a/tools/installer/README.md b/tools/installer/README.md index 0349d926..02e487f2 100644 --- a/tools/installer/README.md +++ b/tools/installer/README.md @@ -26,7 +26,7 @@ If a user wants to build his application on a platform installed with Occlum ins cd tools/installer/rpm make ``` -Now, only `c/c++` and `golang` options are supported. And the installer can be found under `build/rpms`. +Now, only `musl-gcc` and `golang` options are supported. And the installer can be found under `build/rpms`. ### How to Use @@ -107,7 +107,7 @@ If a user wants to build his application on a platform installed with Occlum ins cd tools/installer/deb make ``` -Now, only `c/c++` and `golang` options are supported. And the installer can be found under `build/debs`. +Now, only `musl-gcc` and `golang` options are supported. And the installer can be found under `build/debs`. ### How to Use diff --git a/tools/installer/deb/Makefile b/tools/installer/deb/Makefile index 88a64a3a..7fcab2c1 100644 --- a/tools/installer/deb/Makefile +++ b/tools/installer/deb/Makefile @@ -10,9 +10,18 @@ VERSION_NUM = $(MAJOR_VER_NUM).$(MINOR_VER_NUM).$(PATCH_VER_NUM) DEB_BUILD_DIR := /tmp/deb_build PACKAGE_DIR := /tmp +C_TOOLCHAIN_PACKAGE_NAME := occlum-toolchains-gcc + +# Version number for toolchain packages +# The version numbers are only needed to update when the toolchains are updated. +# When updating the toolchain packages for Deb, please first update RPM configuration. And then +# update the "changelog" file accordingly. +MUSL_VERSION := 0.15.0 +GOLAN_VERSION := 0.16.0 + GO_PATCH = $(PROJECT_DIR)/tools/toolchains/golang/adapt-golang-to-occlum.patch -.PHONY: all main config_files main_deps c/c++ deps_c clean clean-build +.PHONY: all main config_files main_deps musl-gcc deps_c clean clean-build all: main @@ -42,18 +51,18 @@ main_deps: git submodule deinit -f . ; \ rm -rf $(DEB_BUILD_DIR)/occlum-$(VERSION_NUM)/occlum-src/{build,demos} -c/c++: deps_c - cd $(DEB_BUILD_DIR)/occlum-toolchains-gcc ; \ +musl-gcc: deps_c + cd $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME) ; \ dpkg-buildpackage -us -uc - cp -t $(TARGET_DIR) $(DEB_BUILD_DIR)/occlum-toolchains-gcc*.deb $(DEB_BUILD_DIR)/occlum-toolchains-gcc-dbgsym*.ddeb + cp -t $(TARGET_DIR) $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)*.deb $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)-dbgsym*.ddeb deps_c: mkdir -p $(TARGET_DIR) - mkdir -p $(DEB_BUILD_DIR)/occlum-toolchains-gcc - cp -r toolchains/gcc $(DEB_BUILD_DIR)/occlum-toolchains-gcc/debian - cp $(PROJECT_DIR)/tools/toolchains/gcc/0014-libgomp-futex-occlum.diff $(DEB_BUILD_DIR)/occlum-toolchains-gcc/debian - cp $(PROJECT_DIR)/tools/installer/rpm/toolchains/gcc/occlum-gcc.sh $(DEB_BUILD_DIR)/occlum-toolchains-gcc/debian - echo " echo 'Please execute command \"source /etc/profile\" to validate envs immediately' " > $(DEB_BUILD_DIR)/occlum-toolchains-gcc/debian/occlum-gcc.postinst + mkdir -p $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME) + cp -r toolchains/musl-gcc $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)/debian + cp $(PROJECT_DIR)/tools/toolchains/musl-gcc/0014-libgomp-futex-occlum.diff $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)/debian + cp $(PROJECT_DIR)/tools/installer/rpm/toolchains/musl-gcc/occlum-gcc.sh $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)/debian + echo " echo 'Please execute command \"source /etc/profile\" to validate envs immediately' " > $(DEB_BUILD_DIR)/$(C_TOOLCHAIN_PACKAGE_NAME)/debian/occlum-gcc.postinst golang: deps_golang cd $(DEB_BUILD_DIR)/occlum-toolchains-golang ; \ diff --git a/tools/installer/deb/toolchains/gcc/changelog b/tools/installer/deb/toolchains/musl-gcc/changelog similarity index 100% rename from tools/installer/deb/toolchains/gcc/changelog rename to tools/installer/deb/toolchains/musl-gcc/changelog diff --git a/tools/installer/deb/toolchains/gcc/compat b/tools/installer/deb/toolchains/musl-gcc/compat similarity index 100% rename from tools/installer/deb/toolchains/gcc/compat rename to tools/installer/deb/toolchains/musl-gcc/compat diff --git a/tools/installer/deb/toolchains/gcc/control b/tools/installer/deb/toolchains/musl-gcc/control similarity index 100% rename from tools/installer/deb/toolchains/gcc/control rename to tools/installer/deb/toolchains/musl-gcc/control diff --git a/tools/installer/deb/toolchains/gcc/rules b/tools/installer/deb/toolchains/musl-gcc/rules similarity index 100% rename from tools/installer/deb/toolchains/gcc/rules rename to tools/installer/deb/toolchains/musl-gcc/rules diff --git a/tools/installer/deb/toolchains/gcc/source/format b/tools/installer/deb/toolchains/musl-gcc/source/format similarity index 100% rename from tools/installer/deb/toolchains/gcc/source/format rename to tools/installer/deb/toolchains/musl-gcc/source/format diff --git a/tools/installer/rpm/Makefile b/tools/installer/rpm/Makefile index d766e072..1e73baef 100644 --- a/tools/installer/rpm/Makefile +++ b/tools/installer/rpm/Makefile @@ -9,19 +9,21 @@ VERSION_NUM := $(MAJOR_VER_NUM).$(MINOR_VER_NUM).$(PATCH_VER_NUM) # Occlum specific version MUSL_VERSION = 0.15.0 +GOLANG_VERSION = 0.16.0 RPM_FILELIST = occlum-filelist occlum-pal-filelist occlum-runtime-filelist EXPORT_SCRIPT = occlum-pal.sh occlum-runtime.sh -GCC_PATCH = toolchains/gcc/musl-cross-make-disable-download.patch -GCC_SCRIPT = toolchains/gcc/occlum-gcc.sh +GCC_PATCH = toolchains/musl-gcc/musl-cross-make-disable-download.patch +GCC_SCRIPT = toolchains/musl-gcc/occlum-gcc.sh +OCCLUM_MUSL_PATCH := $(PROJECT_DIR)/tools/toolchains/musl-gcc/0014-libgomp-futex-occlum.diff GO_PATCH = $(PROJECT_DIR)/tools/toolchains/golang/adapt-golang-to-occlum.patch GO_SCRIPT = toolchains/golang/occlum-go.sh PACKAGE_DIR = /tmp -.PHONY: all main main_deps c/c++ deps_c clean golang +.PHONY: all main main_deps musl-gcc deps_c clean golang all: main @@ -47,8 +49,8 @@ $(PACKAGE_DIR)/$(VERSION_NUM).tar.gz: rm -rf $(PACKAGE_DIR)/occlum-$(VERSION_NUM)/build @cd $(PACKAGE_DIR) && tar -cvzf "$$HOME/rpmbuild/SOURCES/$(VERSION_NUM).tar.gz" occlum-$(VERSION_NUM) -c/c++: deps_c - @rpmbuild -ba --define '_musl_version $(MUSL_VERSION)' toolchains/gcc/occlum-toolchains-gcc.spec +musl-gcc: deps_c + @rpmbuild -ba --define '_musl_version $(MUSL_VERSION)' toolchains/musl-gcc/occlum-toolchains-gcc.spec @mv $$HOME/rpmbuild $$HOME/rpmbuild-occlum-toolchains-gcc @cp $$HOME/rpmbuild-occlum-toolchains-gcc/RPMS/x86_64/*.rpm $(TARGET_DIR) @echo "$$(ls $$HOME/rpmbuild-occlum-toolchains-gcc/RPMS/x86_64) can be found at $(TARGET_DIR)" @@ -60,12 +62,12 @@ $$HOME/rpmbuild/SOURCES/$(GCC_PATCH): @if [ -d $$HOME/rpmbuild ]; then \ mv $$HOME/rpmbuild $$HOME/rpmbuild-old-$$(date +%Y%m%d-%T); fi @mkdir -p $$HOME/rpmbuild/{BUILD,RPMS,SPECS,SOURCES,SRPMS} - @MUSL_VERSION=$(MUSL_VERSION) toolchains/gcc/download_sources.sh - @spectool -g -R --define '_musl_version $(MUSL_VERSION)' toolchains/gcc/occlum-toolchains-gcc.spec - @cp -t $$HOME/rpmbuild/SOURCES $(GCC_PATCH) $(GCC_SCRIPT) + @MUSL_VERSION=$(MUSL_VERSION) toolchains/musl-gcc/download_sources.sh + @spectool -g -R --define '_musl_version $(MUSL_VERSION)' toolchains/musl-gcc/occlum-toolchains-gcc.spec + @cp -t $$HOME/rpmbuild/SOURCES $(GCC_PATCH) $(GCC_SCRIPT) $(OCCLUM_MUSL_PATCH) golang: $$HOME/rpmbuild/SOURCES/$(GO_PATCH) - @rpmbuild -ba toolchains/golang/occlum-toolchains-golang.spec + @rpmbuild -ba --define '_golang_version $(GOLANG_VERSION)' toolchains/golang/occlum-toolchains-golang.spec @mv $$HOME/rpmbuild $$HOME/rpmbuild-occlum-toolchains-golang @cp $$HOME/rpmbuild-occlum-toolchains-golang/RPMS/x86_64/*.rpm $(TARGET_DIR) @echo "$$(ls $$HOME/rpmbuild-occlum-toolchains-golang/RPMS/x86_64) can be found at $(TARGET_DIR)" @@ -77,7 +79,7 @@ $$HOME/rpmbuild/SOURCES/$(GO_PATCH): mv $$HOME/rpmbuild $$HOME/rpmbuild-old-$$(date +%Y%m%d-%T); fi @rm -rf $$HOME/rpmbuild/{BUILD,RPMS,SPECS,SRPMS} # tmp @mkdir -p $$HOME/rpmbuild/{BUILD,RPMS,SPECS,SOURCES,SRPMS} - @spectool -g -R toolchains/golang/occlum-toolchains-golang.spec + @spectool -g -R --define '_golang_version $(GOLANG_VERSION)' toolchains/golang/occlum-toolchains-golang.spec @cp -t $$HOME/rpmbuild/SOURCES $(GO_PATCH) $(GO_SCRIPT) clean: diff --git a/tools/installer/rpm/toolchains/golang/occlum-toolchains-golang.spec b/tools/installer/rpm/toolchains/golang/occlum-toolchains-golang.spec index bc949fe1..db5beafa 100644 --- a/tools/installer/rpm/toolchains/golang/occlum-toolchains-golang.spec +++ b/tools/installer/rpm/toolchains/golang/occlum-toolchains-golang.spec @@ -12,7 +12,7 @@ %define _unpackaged_files_terminate_build 0 Name: occlum-toolchains-golang -Version: 0.16.0 +Version: %{_golang_version} Release: %{centos_base_release}%{?dist} Summary: occlum toolchains golang diff --git a/tools/installer/rpm/toolchains/gcc/download_sources.sh b/tools/installer/rpm/toolchains/musl-gcc/download_sources.sh similarity index 100% rename from tools/installer/rpm/toolchains/gcc/download_sources.sh rename to tools/installer/rpm/toolchains/musl-gcc/download_sources.sh diff --git a/tools/installer/rpm/toolchains/gcc/musl-cross-make-disable-download.patch b/tools/installer/rpm/toolchains/musl-gcc/musl-cross-make-disable-download.patch similarity index 100% rename from tools/installer/rpm/toolchains/gcc/musl-cross-make-disable-download.patch rename to tools/installer/rpm/toolchains/musl-gcc/musl-cross-make-disable-download.patch diff --git a/tools/installer/rpm/toolchains/gcc/occlum-gcc.sh b/tools/installer/rpm/toolchains/musl-gcc/occlum-gcc.sh similarity index 100% rename from tools/installer/rpm/toolchains/gcc/occlum-gcc.sh rename to tools/installer/rpm/toolchains/musl-gcc/occlum-gcc.sh diff --git a/tools/installer/rpm/toolchains/gcc/occlum-toolchains-gcc.spec b/tools/installer/rpm/toolchains/musl-gcc/occlum-toolchains-gcc.spec similarity index 97% rename from tools/installer/rpm/toolchains/gcc/occlum-toolchains-gcc.spec rename to tools/installer/rpm/toolchains/musl-gcc/occlum-toolchains-gcc.spec index 10342d42..8f2b69ee 100644 --- a/tools/installer/rpm/toolchains/gcc/occlum-toolchains-gcc.spec +++ b/tools/installer/rpm/toolchains/musl-gcc/occlum-toolchains-gcc.spec @@ -29,6 +29,7 @@ Source9: musl-%{_musl_version}.tar.gz Source10: occlum-gcc.sh Patch0: musl-cross-make-disable-download.patch +Patch1: 0014-libgomp-futex-occlum.diff ExclusiveArch: x86_64 @@ -42,7 +43,7 @@ Occlum toolchains gcc %setup -q -T -D -a 1 # This patch replaces syscall instruction with libc's syscall wrapper -cp occlum-%{version}/tools/toolchains/gcc/0014-libgomp-*.diff musl-cross-make-0.9.9.hotfix/patches/gcc-%{GCC_VER}/ +cp %{PATCH1} musl-cross-make-0.9.9.hotfix/patches/gcc-%{GCC_VER}/ pushd musl-cross-make-0.9.9.hotfix mkdir -p sources/gcc-%{GCC_VER}.tar.xz.tmp && cp %{SOURCE2} sources/gcc-%{GCC_VER}.tar.xz.tmp