Rename installer to work with musl-gcc

This commit is contained in:
Hui, Chunyang 2020-12-21 06:03:53 +00:00 committed by Zongmin.Gu
parent 3cb3165f8b
commit 5abfe64960
14 changed files with 37 additions and 25 deletions

@ -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;

@ -26,7 +26,7 @@ If a user wants to build his application on a platform installed with Occlum ins
cd tools/installer/rpm
make <language option>
```
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 <language option>
```
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

@ -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 ; \

@ -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:

@ -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

@ -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