make-sandwich #95
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'make-sandwich' | |
on: | |
#push: | |
# branches: | |
# - __mirror | |
schedule: | |
# Run everyday at 3 AM UTC | |
- cron: '0 3 * * *' | |
workflow_dispatch: | |
jobs: | |
mirror_and_check: | |
runs-on: ubuntu-latest | |
outputs: | |
branch_matrix: ${{ steps.check.outputs.branch_matrix }} | |
steps: | |
- name: mirror | |
id: mirror | |
uses: bridgelightcloud/github-mirror-action@v3 | |
with: | |
origin: 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git' | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: check | |
id: check | |
run: | | |
REPO=$( basename $PWD ) | |
cd .. | |
mv $REPO ${REPO}.git | |
git clone --shared ${REPO}.git $REPO | |
JSON_DATA_FILE="$PWD/workflows.json" | |
touch ${JSON_DATA_FILE} | |
cd $REPO | |
for branch in $( cat config/rc-branches ); do | |
git worktree add ../${branch} ${branch} | |
pushd ../${branch} | |
pwd | |
if git log --oneline | head -n1 | grep "Linux\ .*\-rc.*" &>/dev/null; then | |
KERNEL_VERSION=$( git log --oneline | head -n1 | grep -o "Linux\ .*\-rc.*" ) | |
echo "DEBUG build ${KERNEL_VERSION}" | |
if [[ -s ${JSON_DATA_FILE} ]]; then | |
echo "DEBUG , \"${branch}\"" | |
echo -n ", \"${branch}\"" >> ${JSON_DATA_FILE} | |
else | |
echo "DEBUG [\"${branch}\"" | |
echo -n "[\"${branch}\"" >> ${JSON_DATA_FILE} | |
fi | |
fi | |
popd | |
pwd | |
done | |
echo -n "]" >> ${JSON_DATA_FILE} | |
pwd | |
cat -v ${JSON_DATA_FILE} || echo "DEBUG #2" | |
echo "branch_matrix=$( jq -cn --argjson environments "$( cat ${JSON_DATA_FILE} )" '{branch: $environments}' )" >> $GITHUB_OUTPUT | |
matrix_build: | |
needs: mirror_and_check | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: ${{fromJson(needs.mirror_and_check.outputs.branch_matrix)}} | |
# matrix: | |
# branch: [linux-4.19.y, linux-5.4.y, linux-5.10.y, linux-5.15.y, linux-6.1.y, linux-6.6.y, linux-6.7.y] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: __mirror | |
path: __mirror | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ matrix.branch }} | |
path: ${{ matrix.branch }} | |
- uses: actions/checkout@v4 | |
with: | |
repository: johnny-mnemonic/ski | |
ref: hp-sim-for-linux | |
path: hp-sim-for-linux | |
- uses: actions/checkout@v4 | |
with: | |
repository: johnny-mnemonic/ski | |
ref: master | |
path: ski | |
- name: prepare_step | |
run: | | |
BASE_DIR=$( pwd ) | |
BUILD_DIR="$( pwd )/${{ matrix.branch }}" | |
TOOLS_DIR="$( pwd )/__mirror" | |
HP_SIM_DIR="$( pwd )/hp-sim-for-linux" | |
SKI_DIR="$( pwd )/ski" | |
BRANCH=${{ matrix.branch }} | |
SUMMARY_FILE=${BASE_DIR}/summary.md | |
touch ${SUMMARY_FILE} | |
# prepare tools ###################################################### | |
cd ${TOOLS_DIR} | |
CROSS_COMPILER_URL=$( cat ./config/compiler-url ) | |
wget "${CROSS_COMPILER_URL}" -O - | unxz | tar -xf - | |
CROSS_COMPILER_PATH=$( echo gcc-*/*-linux ) | |
PATH=$PATH:$PWD/${CROSS_COMPILER_PATH}/bin | |
CROSS_COMPILER=$( basename ${CROSS_COMPILER_PATH}/bin/*-linux-gcc ) | |
CROSS_COMPILER_AND_VERSION=$( ${CROSS_COMPILER} --version | head -n1 ) | |
# exports ############################################################ | |
echo "BASE_DIR=${BASE_DIR}" >> $GITHUB_ENV | |
echo "BUILD_DIR=${BUILD_DIR}" >> $GITHUB_ENV | |
echo "TOOLS_DIR=${TOOLS_DIR}" >> $GITHUB_ENV | |
echo "HP_SIM_DIR=${HP_SIM_DIR}" >> $GITHUB_ENV | |
echo "SKI_DIR=${SKI_DIR}" >> $GITHUB_ENV | |
echo "BRANCH=${BRANCH}" >> $GITHUB_ENV | |
echo "MODPATH=${PATH}" >> $GITHUB_ENV | |
echo "CROSS_COMPILER_AND_VERSION=${CROSS_COMPILER_AND_VERSION}" >> $GITHUB_ENV | |
echo "SUMMARY_FILE=${SUMMARY_FILE}" >> $GITHUB_ENV | |
- name: regular_build_step | |
run: | | |
USED_PATCHES="see [__mirror/patches/${BRANCH}/](https://github.com/johnny-mnemonic/linux-stable-rc/tree/__mirror/patches/${BRANCH}/)" | |
# apply any standard patches ######################################### | |
PATH=${MODPATH} | |
cd ${BUILD_DIR} | |
KERNEL_VERSION=$( git log --oneline | head -n1 | grep -o "Linux\ .*\-rc.*" ) | |
if [[ -e ${TOOLS_DIR}/patches/${BRANCH}/ ]]; then | |
for patch in ${TOOLS_DIR}/patches/${BRANCH}/*patch; do | |
patch -p1 < ${patch} || true | |
done | |
else | |
USED_PATCHES="no extra patches needed" | |
fi | |
# build ############################################################## | |
cd "${TOOLS_DIR}" | |
echo "| STATUS | BRANCH | VERSION | TYPE | USED PATCHES | COMPILER |" >> ${SUMMARY_FILE} | |
echo "| ------ | ------ | ------- | ---- | ------------ | -------- |" >> ${SUMMARY_FILE} | |
if time ./tools/make-kernel.bash ./config/rx2620-rx2660-rx2800-i2-combined-localmodconfig ia64 ${BUILD_DIR}; then | |
echo "| :white_check_mark: | ${BRANCH} | ${KERNEL_VERSION} | regular | ${USED_PATCHES} | ${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ${BRANCH} | ${KERNEL_VERSION} | regular | ${USED_PATCHES} |${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
fi | |
- name: hp_sim_build_step | |
run: | | |
USED_PATCHES="see [hp-sim-for-linux/${BRANCH}/](https://github.com/johnny-mnemonic/ski/tree/hp-sim-for-linux/${BRANCH}/)" | |
# ski available for our branch? ###################################### | |
case ${BRANCH} in | |
linux-6.1.y | linux-6.6.y | linux-6.7.y) | |
echo "Ski not yet reinstated for ${BRANCH}" | |
exit 0 | |
;; | |
*) | |
true | |
;; | |
esac | |
# apply ski patches ################################################## | |
PATH=${MODPATH} | |
cd ${BUILD_DIR} | |
KERNEL_VERSION=$( git log --oneline | head -n1 | grep -o "Linux\ .*\-rc.*" ) | |
make mrproper | |
if [[ -e ${HP_SIM_DIR}/${BRANCH}/ ]]; then | |
for patch in ${HP_SIM_DIR}/${BRANCH}/*patch; do | |
patch -p1 < ${patch} || true | |
done | |
else | |
USED_PATCHES="no extra patches needed" | |
fi | |
# build hp sim kernel ################################################ | |
cd "${TOOLS_DIR}" | |
if time ./tools/make-kernel.bash ${BUILD_DIR}/arch/ia64/configs/sim_defconfig ia64 ${BUILD_DIR} ski; then | |
echo "| :white_check_mark: | ${BRANCH} | ${KERNEL_VERSION} | hp_sim | ${USED_PATCHES} | ${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ${BRANCH} | ${KERNEL_VERSION} | hp_sim | ${USED_PATCHES} | ${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
fi | |
HP_SIM_KERNEL="${BUILD_DIR}/../vmlinux-ski" | |
# exports ############################################################ | |
echo "HP_SIM_KERNEL=${HP_SIM_KERNEL}" >> $GITHUB_ENV | |
- name: ski_build_step | |
run: | | |
# ski available for our branch? ###################################### | |
case ${BRANCH} in | |
linux-6.1.y | linux-6.6.y | linux-6.7.y) | |
echo "Ski not yet reinstated for ${BRANCH}" | |
exit 0 | |
;; | |
*) | |
true | |
;; | |
esac | |
# install build dependencies ######################################### | |
sudo apt update | |
sudo apt install binutils-dev libelf-dev libiberty-dev libncurses-dev autoconf autoconf-archive automake flex bison gperf pkg-config | |
# build Ski ########################################################## | |
COMPILER_AND_VERSION=$( gcc --version | head -n1 ) | |
cd ${SKI_DIR} | |
echo "" >> ${SUMMARY_FILE} | |
echo "| STATUS | TOOL | COMPILER |" >> ${SUMMARY_FILE} | |
echo "| ------ | ---- | -------- |" >> ${SUMMARY_FILE} | |
if \ | |
./autogen.sh && \ | |
./configure --prefix=${SKI_DIR}/install && \ | |
make -j$( nproc ) && \ | |
make -j$( nproc ) install; then | |
echo "| :white_check_mark: | ski | ${COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ski | ${COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
fi | |
BSKI="${SKI_DIR}/install/bin/bski" | |
# cross-build ski-bootloader ######################################### | |
PATH=${MODPATH} | |
cd ${SKI_DIR}/ski-bootloader | |
if make CROSS_COMPILE=ia64-linux-; then | |
echo "| :white_check_mark: | ski-bootloader | ${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ski-bootloader | ${CROSS_COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
fi | |
SKI_BOOTLOADER="${SKI_DIR}/ski-bootloader/ski-bootloader" | |
# exports ############################################################ | |
echo "SKI_BOOTLOADER=${SKI_BOOTLOADER}" >> $GITHUB_ENV | |
echo "BSKI=${BSKI}" >> $GITHUB_ENV | |
- name: steps_summary | |
run: | | |
cat ${SUMMARY_FILE} >> $GITHUB_STEP_SUMMARY |