Skip to content

Commit

Permalink
dev: add CI support
Browse files Browse the repository at this point in the history
Change-Id: I1e4ccf219f79edd2807f017e303387d2a0da38a9
  • Loading branch information
ayufan committed Mar 19, 2019
1 parent 5ac37f8 commit cf09c87
Show file tree
Hide file tree
Showing 6 changed files with 163 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,4 @@ all.config

# fetched Android config fragments
android/configs/android-*.cfg
out/
47 changes: 47 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
image: ayufan/rock64-dockerfiles:x86_64

variables:
GITHUB_USER: ayufan-rock64
GITHUB_REPO: linux-kernel

USE_CCACHE: "true"
CCACHE_DIR: "/data/shared/ccache"

stages: [build]

before_script:
- ccache -M 0 -F 0

build:
stage: build
only: [branches]
script:
- export RELEASE=$((1000+$CI_PIPELINE_IID))
- ./dev-make kernel-package
- |
set -x
export RELEASE_NAME="$(./dev-make version)"
export RELEASE_TITLE="$(./dev-make version)"
export DESCRIPTION="$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID"
github-release release \
--tag "${RELEASE_NAME}" \
--name "${RELEASE_TITLE}" \
--description "${DESCRIPTION}" \
--target "${CI_COMMIT_SHA}" \
--draft
for i in ../*$(./dev-make info)*.deb; do
github-release upload \
--tag "${RELEASE_NAME}" \
--name "$(basename "${i}")" \
--file "${i}"
done
github-release edit \
--tag "${RELEASE_NAME}" \
--name "${RELEASE_TITLE}" \
--description "${DESCRIPTION}"
rm ../*$(./dev-make info)*.deb
3 changes: 3 additions & 0 deletions dev-make
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

exec make -f dev.mk "$@"
45 changes: 45 additions & 0 deletions dev-shell
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash

CURDIR="$PWD"

case $(uname -s) in
Darwin)
exec docker run \
--rm \
-it \
-e HOME -v "${HOME}:${HOME}" \
-e USER \
-u "$(id -u):$(id -g)" \
--privileged \
-h rock64-build-env \
-v "${CURDIR}:${CURDIR}" \
-w "${CURDIR}" \
ayufan/rock64-dockerfiles:x86_64 \
"$@"
;;

Linux)
exec docker run \
--rm \
-it \
-e HOME -v "${HOME}:${HOME}" \
-e USER \
-u "$(id -u):$(id -g)" \
$(id -Gz | xargs -0 -n1 -I{} echo "--group-add={}") \
-v /etc/passwd:/etc/passwd:ro \
-v /dev/bus/usb:/dev/bus/usb \
-v "${SSH_AUTH_SOCK}:${SSH_AUTH_SOCK}" \
-e SSH_AUTH_SOCK \
--privileged \
-h rock64-build-env \
-v "${CURDIR}:${CURDIR}" \
-w "${CURDIR}" \
ayufan/rock64-dockerfiles:x86_64 \
"$@"
;;

*)
echo "Not supported: $(uname -s)"
exit 1
;;
esac
60 changes: 60 additions & 0 deletions dev.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
RELEASE ?=
KERNEL_DEFCONFIG ?= rockchip_linux_defconfig

KERNEL_VERSION ?= $(shell $(KERNEL_MAKE) -s kernelversion)
KERNEL_RELEASE ?= $(shell $(KERNEL_MAKE) -s kernelrelease)
KDEB_PKGVERSION ?= $(KERNEL_VERSION)-$(RELEASE)-rockchip-ayufan

KERNEL_MAKE ?= make \
ARCH=arm64 \
HOSTCC=aarch64-linux-gnu-gcc \
CROSS_COMPILE="ccache aarch64-linux-gnu-"

.config: arch/arm64/configs/$(KERNEL_DEFCONFIG)
$(KERNEL_MAKE) $(KERNEL_DEFCONFIG)

.PHONY: .scmversion
.scmversion:
ifneq (,$(RELEASE))
@echo "-$(RELEASE)-rockchip-ayufan-g$$(git rev-parse --short HEAD)" > .scmversion
else
@echo "-rockchip-dev" > .scmversion
endif

version:
@echo "$(KDEB_PKGVERSION)"

.PHONY: info
info: .config .scmversion
@echo $(KERNEL_RELEASE)

.PHONY: kernel-menuconfig
kernel-menuconfig:
$(KERNEL_MAKE) $(KERNEL_DEFCONFIG)
$(KERNEL_MAKE) HOSTCC=gcc menuconfig
$(KERNEL_MAKE) savedefconfig
mv defconfig arch/arm64/configs/$(KERNEL_DEFCONFIG)

.PHONY: kernel-image
kernel-image: .config .scmversion
$(KERNEL_MAKE) Image dtbs -j$$(nproc)

.PHONY: kernel-modules
kernel-image-and-modules: .config .scmversion
$(KERNEL_MAKE) Image modules dtbs -j$$(nproc)
$(KERNEL_MAKE) modules_install INSTALL_MOD_PATH=$(CURDIR)/out/linux_modules

.PHONY: kernel-package
kernel-package: .config .scmversion
KDEB_PKGVERSION=$(KDEB_PKGVERSION) $(KERNEL_MAKE) bindeb-pkg -j$$(nproc)

.PHONY: kernel-update-dts
kernel-update-dts: .config .scmversion
$(KERNEL_MAKE) dtbs -j$$(nproc)
rsync --partial --checksum --include="*.dtb" -rv arch/arm64/boot/dts/rockchip root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/dtbs/$(KERNEL_RELEASE)

.PHONY: kernel-update
kernel-update-image: .scmversion
rsync --partial --checksum -rv arch/arm64/boot/Image root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/vmlinuz-$(KERNEL_RELEASE)
rsync --partial --checksum --include="*.dtb" -rv arch/arm64/boot/dts/rockchip root@$(REMOTE_HOST):$(REMOTE_DIR)/boot/dtbs/$(KERNEL_RELEASE)
rsync --partial --checksum -av out/linux_modules/lib/modules/$(KERNEL_RELEASE) root@$(REMOTE_HOST):$(REMOTE_DIR)/lib/modules/$(KERNEL_RELEASE)
13 changes: 7 additions & 6 deletions scripts/package/builddeb
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ if [ "$ARCH" = "um" ]; then
cat <<EOF >> debian/control
Package: $packagename
Provides: linux-image, linux-image-2.6, linux-modules-$version
Provides: linux-image, linux-image-rockchip, linux-image-rockchip-4.4, linux-modules-$version
Architecture: any
Description: User Mode Linux kernel, version $version
User-mode Linux is a port of the Linux kernel to its own system call
Expand All @@ -310,7 +310,7 @@ else
cat <<EOF >> debian/control
Package: $packagename
Provides: linux-image, linux-image-2.6, linux-modules-$version
Provides: linux-image, linux-image-rockchip, linux-image-rockchip-4.4, linux-modules-$version
Suggests: $fwpackagename
Architecture: any
Description: Linux kernel, version $version
Expand All @@ -322,7 +322,7 @@ fi

# Build kernel header package
(cd $srctree; find . -name Makefile\* -o -name Kconfig\* -o -name \*.pl) > "$objtree/debian/hdrsrcfiles"
(cd $srctree; find arch/$SRCARCH/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
(cd $srctree; find arch/*/include include scripts -type f) >> "$objtree/debian/hdrsrcfiles"
(cd $srctree; find arch/$SRCARCH -name module.lds -o -name Kbuild.platforms -o -name Platform) >> "$objtree/debian/hdrsrcfiles"
(cd $srctree; find $(find arch/$SRCARCH -name include -o -name scripts -type d) -type f) >> "$objtree/debian/hdrsrcfiles"
(cd $objtree; find arch/$SRCARCH/include Module.symvers include scripts -type f) >> "$objtree/debian/hdrobjfiles"
Expand All @@ -337,7 +337,7 @@ rm -f "$objtree/debian/hdrsrcfiles" "$objtree/debian/hdrobjfiles"
cat <<EOF >> debian/control
Package: $kernel_headers_packagename
Provides: linux-headers, linux-headers-2.6
Provides: linux-headers, linux-headers-rockchip, linux-headers-rockchip-4.4
Architecture: any
Description: Linux kernel headers for $KERNELRELEASE on \${kernel:debarch}
This package provides kernel header files for $KERNELRELEASE on \${kernel:debarch}
Expand All @@ -353,6 +353,7 @@ if [ -e "$tmpdir/lib/firmware" ]; then
cat <<EOF >> debian/control
Package: $fwpackagename
Provides: linux-firmware-rockchip, linux-firmware-rockchip-4.4
Architecture: all
Description: Linux kernel firmware, version $version
This package contains firmware from the Linux kernel, version $version.
Expand All @@ -365,7 +366,7 @@ cat <<EOF >> debian/control
Package: $libc_headers_packagename
Section: devel
Provides: linux-kernel-headers
Provides: linux-kernel-headers, linux-kernel-headers-rockchip, linux-kernel-headers-rockchip-4.4
Architecture: any
Description: Linux support headers for userspace development
This package provides userspaces headers from the Linux kernel. These headers
Expand Down Expand Up @@ -395,7 +396,7 @@ if [ -n "$BUILD_DEBUG" ] ; then
Package: $dbg_packagename
Section: debug
Provides: linux-debug, linux-debug-$version
Provides: linux-debug, linux-debug-$version, linux-debug-rockchip, linux-debug-rockchip-4.4
Architecture: any
Description: Linux kernel debugging symbols for $version
This package will come in handy if you need to debug the kernel. It provides
Expand Down

0 comments on commit cf09c87

Please sign in to comment.