mirror of
https://github.com/rancher/os-kernel.git
synced 2025-04-27 18:25:05 +00:00
Support multiple architectures
This commit is contained in:
parent
d8b99d9a29
commit
63ae91712c
@ -2,7 +2,8 @@ FROM gcc:7.3.0
|
||||
# FROM arm64=arm64v8/gcc:7.3.0
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y ccache vim gnupg2 locales bc kmod libelf-dev
|
||||
&& apt-get install -y ccache vim gnupg2 locales bc kmod libelf-dev \
|
||||
&& rm -f /bin/sh && ln -s /bin/bash /bin/sh
|
||||
|
||||
# Install dapper
|
||||
RUN curl -sL https://releases.rancher.com/dapper/latest/dapper-$(uname -s)-$(uname -m | sed 's/arm.*/arm/') > /usr/bin/dapper \
|
||||
@ -14,8 +15,8 @@ CMD ["ci"]
|
||||
RUN locale-gen en_US.UTF-8
|
||||
ENV LANG en_US.UTF-8
|
||||
|
||||
ARG DAPPER_HOST_ARCH=amd64
|
||||
ENV HOST_ARCH=${DAPPER_HOST_ARCH}
|
||||
ARG DAPPER_HOST_ARCH
|
||||
ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH}
|
||||
|
||||
ENV DAPPER_DOCKER_SOCKET true
|
||||
ENV DAPPER_SOURCE /source
|
||||
@ -28,19 +29,20 @@ WORKDIR ${DAPPER_SOURCE}
|
||||
ARG OS_REPO=rancher
|
||||
ARG KERNEL_TAG
|
||||
ARG KERNEL_VERSION=${KERNEL_TAG}-${OS_REPO}
|
||||
ARG ARCH=x86
|
||||
|
||||
ENV OS_REPO=${OS_REPO} \
|
||||
ARCH=${ARCH} \
|
||||
DOCKER_URL=DOCKER_URL_${ARCH} \
|
||||
DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-1.10.3 \
|
||||
DOCKER_URL_arm64=https://github.com/rancher/docker/releases/download/v1.10.3-ros1/docker-1.10.3_arm64 \
|
||||
KERNEL_TAG=${KERNEL_TAG} \
|
||||
KERNEL_VERSION=${KERNEL_VERSION} \
|
||||
KERNEL_URL=https://cdn.kernel.org/pub/linux/kernel/v4.x/ \
|
||||
KERNEL_TAR=linux-${KERNEL_TAG}.tar.xz \
|
||||
KERNEL_SIGN=linux-${KERNEL_TAG}.tar.sign
|
||||
KERNEL_SIGN=linux-${KERNEL_TAG}.tar.sign \
|
||||
KERNEL_ARCH=x86
|
||||
# for rc testing
|
||||
#ENV KERNEL_URL=https://cdn.kernel.org/pub/linux/kernel/v4.x/testing/linux-${KERNEL_TAG}.tar.xz
|
||||
|
||||
# Install Docker
|
||||
RUN curl -fL ${DOCKER_URL_amd64} > /usr/bin/docker && \
|
||||
RUN curl -fL ${!DOCKER_URL} > /usr/bin/docker && \
|
||||
chmod +x /usr/bin/docker
|
||||
|
@ -1,5 +1,5 @@
|
||||
FROM alpine:3.4
|
||||
# FROM arm64=skip arm=skip
|
||||
FROM alpine:3.8
|
||||
# FROM arm64=arm64v8/alpine:3.8 arm=skip
|
||||
RUN apk --purge --no-cache add kmod bash
|
||||
|
||||
ARG KERNEL_VERSION
|
||||
|
@ -2,5 +2,5 @@
|
||||
set -e
|
||||
set -x
|
||||
|
||||
cp /source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-extras/extras.tar.gz
|
||||
cp /source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-extras/extras.tar.gz
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
FROM alpine:3.4
|
||||
# FROM arm64=skip arm=skip
|
||||
FROM alpine:3.8
|
||||
# FROM arm64=arm64v8/alpine:3.8 arm=skip
|
||||
RUN apk --purge --no-cache add kmod bash
|
||||
|
||||
ARG KERNEL_VERSION
|
||||
|
@ -2,5 +2,5 @@
|
||||
set -e
|
||||
set -x
|
||||
|
||||
cp /source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-headers/build.tar.gz
|
||||
cp /source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-headers/build.tar.gz
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#FROM alpine:3.4
|
||||
## FROM arm64=skip arm=skip
|
||||
FROM alpine:3.8
|
||||
# FROM arm64=arm64v8/alpine:3.8 arm=skip
|
||||
#RUN apk --purge --no-cache add kmod bash
|
||||
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
#!/bin/bash
|
||||
set -ex
|
||||
|
||||
# linux-${KERNEL_VERSION}-x86.tar
|
||||
# linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar
|
||||
|
||||
tar -xf /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz ./boot/vmlinuz-${KERNEL_VERSION} ./boot/System.map-${KERNEL_VERSION}
|
||||
tar -xf /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./boot/vmlinuz-${KERNEL_VERSION} ./boot/System.map-${KERNEL_VERSION}
|
||||
mv ./boot/vmlinuz-${KERNEL_VERSION} ./images/10-kernel/kernel
|
||||
mv ./boot/System.map-${KERNEL_VERSION} ./images/10-kernel/System.map
|
||||
rmdir boot
|
||||
|
||||
cp /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz ./images/10-kernel/kernel.tar.gz
|
||||
cp /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz ./images/10-kernel/kernel.tar.gz
|
||||
gunzip -f ./images/10-kernel/kernel.tar.gz
|
||||
|
||||
ls -lah ./images/10-kernel
|
||||
|
@ -10,21 +10,21 @@ export CCACHE_DIR="${HOME}/.kernel-ccache"
|
||||
export CC="ccache gcc"
|
||||
export PATH="/usr/lib/ccache:$PATH"
|
||||
DIR=${VERSION}
|
||||
FIRMWARE=$(readlink -f scripts/firmware)
|
||||
MODULE_LIST=$(readlink -f modules.list)
|
||||
MODULE_EXTRA_LIST=$(readlink -f modules-extra.list)
|
||||
FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
|
||||
MODULE_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules.list)
|
||||
MODULE_EXTRA_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules-extra.list)
|
||||
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
|
||||
echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-x86.tar.gz in ./dist/kernel/"
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
|
||||
echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-${KERNEL_ARCH}.tar.gz in ./dist/kernel/"
|
||||
else
|
||||
cd ${BUILD}/${DIR}
|
||||
make oldconfig
|
||||
KVER=$(make kernelrelease)
|
||||
if [ -e "linux-${KERNEL_VERSION}-x86.tar" ] \
|
||||
make ARCH=${KERNEL_ARCH} oldconfig
|
||||
KVER=$(make ARCH=${KERNEL_ARCH} kernelrelease)
|
||||
if [ -e "linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar" ] \
|
||||
&& [ "$KVER" == "$KERNEL_VERSION" ]; then
|
||||
echo "Skipping kernel build, found linux-${KERNEL_VERSION}-x86.tar in $(pwd)"
|
||||
echo "Skipping kernel build, found linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar in $(pwd)"
|
||||
else
|
||||
echo "building $KVER"
|
||||
make -j$(nproc) tar-pkg
|
||||
make ARCH=${KERNEL_ARCH} -j$(nproc) tar-pkg
|
||||
fi
|
||||
fi
|
||||
|
@ -3,6 +3,8 @@ set -e
|
||||
|
||||
cd $(dirname $0)/..
|
||||
|
||||
source ./scripts/version
|
||||
|
||||
./scripts/test-firmware
|
||||
|
||||
if ! ./scripts/download; then
|
||||
|
@ -15,10 +15,10 @@ source scripts/version
|
||||
|
||||
DIR=${VERSION}
|
||||
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
|
||||
echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-x86.tar.gz in ./dist/kernel/"
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
|
||||
echo "skipping kernel build - found linux-${KERNEL_VERSION}-rancher-${KERNEL_ARCH}.tar.gz in ./dist/kernel/"
|
||||
else
|
||||
cd ${BUILD}/${DIR}
|
||||
make oldconfig
|
||||
make ARCH=${KERNEL_ARCH} oldconfig
|
||||
cp .config ${DIST}/kernel/config
|
||||
fi
|
||||
|
@ -22,16 +22,16 @@ if [ ! -e ${DIR} ]; then
|
||||
mv ${TEMP}/${DIR} ${DIR}
|
||||
fi
|
||||
|
||||
cp ${CONFIG}/kernel-config ${DIR}/.config
|
||||
cp ${CONFIG}/${KERNEL_ARCH}/kernel-config ${DIR}/.config
|
||||
|
||||
pushd .
|
||||
cd ${DIR}
|
||||
echo "are there patches in ${PATCHES}"
|
||||
for p in ${PATCHES}/*.patch; do
|
||||
echo "are there patches in ${PATCHES}/${KERNEL_ARCH}"
|
||||
for p in ${PATCHES}/${KERNEL_ARCH}/*.patch; do
|
||||
echo "patching $p"
|
||||
patch -p1 -i $p
|
||||
done
|
||||
popd
|
||||
|
||||
|
||||
tar zcvf ${DIST}/kernel/linux-${KERNEL_VERSION}-src.tgz ${DIR}
|
||||
tar zcvf ${DIST}/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz ${DIR}
|
||||
|
@ -25,24 +25,24 @@ done
|
||||
export CCACHE_DIR="${HOME}/.kernel-ccache"
|
||||
export CC="ccache gcc"
|
||||
export PATH="/usr/lib/ccache:$PATH"
|
||||
FIRMWARE=$(readlink -f scripts/firmware)
|
||||
MODULE_LIST=$(readlink -f modules.list)
|
||||
MODULE_EXTRA_LIST=$(readlink -f modules-extra.list)
|
||||
FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
|
||||
MODULE_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules.list)
|
||||
MODULE_EXTRA_LIST=$(readlink -f modules/${KERNEL_ARCH}/modules-extra.list)
|
||||
|
||||
echo "looking for /source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
echo "looking for /source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
echo "looking for /source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz" ] \
|
||||
&& [ -e "/source/dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz" ] \
|
||||
&& [ -e "/source/dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz" ]; then
|
||||
echo "looking for /source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
echo "looking for /source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
echo "looking for /source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
if [ -e "/source/dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ] \
|
||||
&& [ -e "/source/dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ] \
|
||||
&& [ -e "/source/dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" ]; then
|
||||
echo "Skipping packaging of kernel, extras and headers - already found in ./dist/kernel/"
|
||||
else
|
||||
cd ${SOURCEDIR}
|
||||
KVER=$(make kernelrelease)
|
||||
KVER=$(make ARCH=${KERNEL_ARCH} kernelrelease)
|
||||
|
||||
create_firmware_tar $FIRMWARE
|
||||
|
||||
FILE="linux-${KVER}-x86.tar"
|
||||
FILE="linux-${KVER}-${KERNEL_ARCH}.tar"
|
||||
|
||||
(
|
||||
split_tar $FILE $MODULE_LIST $MODULE_EXTRA_LIST
|
||||
@ -50,8 +50,8 @@ else
|
||||
|
||||
tar --concatenate --file=base.tar firmware.tar
|
||||
tar --concatenate --file=extra.tar firmware-extra.tar
|
||||
cat base.tar | gzip -c > ${DIST}/kernel/linux-${KERNEL_VERSION}-x86.tar.gz
|
||||
cat extra.tar | gzip -c > ${DIST}/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz
|
||||
list_build_files | tar -czf ${DIST}/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz -T /dev/stdin
|
||||
cat base.tar | gzip -c > ${DIST}/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz
|
||||
cat extra.tar | gzip -c > ${DIST}/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz
|
||||
list_build_files | tar -czf ${DIST}/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz -T /dev/stdin
|
||||
cp .config ${DIST}/kernel/config
|
||||
fi
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
cd $(dirname $0)/..
|
||||
|
||||
source ./scripts/version
|
||||
|
||||
if ! ./scripts/ci; then
|
||||
echo "build failure see release.log"
|
||||
exit 1
|
||||
@ -9,14 +11,11 @@ fi
|
||||
|
||||
echo
|
||||
echo "--- ${KERNEL_VERSION} Kernel prepared for RancherOS"
|
||||
echo " ./dist/kernel/linux-${KERNEL_VERSION}-src.tgz"
|
||||
echo " ./dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
echo " ./dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
echo " ./dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz"
|
||||
echo " ./dist/kernel/config"
|
||||
echo " ./dist/kernel/modules-main.list"
|
||||
echo " ./dist/kernel/modules-extra.list"
|
||||
echo " ./release.log"
|
||||
echo " ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz"
|
||||
echo " ./dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
echo " ./dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
echo " ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz"
|
||||
echo " ./release-${KERNEL_ARCH}.log"
|
||||
echo
|
||||
echo "Images ready to push:"
|
||||
cat dist/images
|
||||
@ -25,14 +24,11 @@ echo "to publish kernel files and container images, run dist/publish.sh"
|
||||
|
||||
echo "#!/bin/sh"> dist/publish.sh
|
||||
echo "github-release release --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --pre-release" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-src.tgz --name linux-${KERNEL_VERSION}-src.tgz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/build-linux-${KERNEL_VERSION}-x86.tar.gz --name build-linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/config --name config" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/extra-linux-${KERNEL_VERSION}-x86.tar.gz --name extra-linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-x86.tar.gz --name linux-${KERNEL_VERSION}-x86.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/modules-main.list --name modules-main.list" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/modules-extra.list --name modules-extra.list" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./release.log --name release.log" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz --name linux-${KERNEL_VERSION}-${KERNEL_ARCH}-src.tgz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name build-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name extra-linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./dist/kernel/linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz --name linux-${KERNEL_VERSION}-${KERNEL_ARCH}.tar.gz" >> dist/publish.sh
|
||||
echo "github-release upload --user rancher --repo os-kernel --tag v${KERNEL_VERSION} --file ./release-${KERNEL_ARCH}.log --name release-${KERNEL_ARCH}.log" >> dist/publish.sh
|
||||
|
||||
cat dist/images | sed 's/^/docker push /' >> dist/publish.sh
|
||||
chmod 755 dist/publish.sh
|
||||
|
@ -3,7 +3,7 @@ set -e
|
||||
|
||||
cd $(dirname $0)/..
|
||||
|
||||
FIRMWARE=$(readlink -f scripts/firmware)
|
||||
FIRMWARE=$(readlink -f firmware/${KERNEL_ARCH}/firmware)
|
||||
echo "FIRMWARE test: $FIRMWARE"
|
||||
|
||||
if [ ! -e linux-firmware ]; then
|
||||
|
@ -12,3 +12,17 @@ if [[ -z "$DIRTY" && -n "$GIT_TAG" ]]; then
|
||||
else
|
||||
VERSION="${COMMIT}${DIRTY}"
|
||||
fi
|
||||
|
||||
SUFFIX=""
|
||||
if [ -n "${ARCH}" ] && [ "${ARCH}" != "amd64" ]; then
|
||||
SUFFIX="_${ARCH}"
|
||||
fi
|
||||
|
||||
case $ARCH in
|
||||
amd64)
|
||||
KERNEL_ARCH=x86
|
||||
;;
|
||||
*)
|
||||
KERNEL_ARCH=${ARCH}
|
||||
;;
|
||||
esac
|
||||
|
Loading…
Reference in New Issue
Block a user