make-sandwich #86
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} | |
COMPILER_URL=$( cat ./config/compiler-url ) | |
wget "${COMPILER_URL}" -O - | unxz | tar -xf - | |
COMPILER_PATH=$( echo gcc-*/*-linux ) | |
PATH=$PATH:$PWD/${COMPILER_PATH}/bin | |
COMPILER=$( basename ${COMPILER_PATH}/bin/*-linux-gcc ) | |
COMPILER_AND_VERSION=$( ${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 "COMPILER_AND_VERSION=${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} | ${COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ${BRANCH} | ${KERNEL_VERSION} | regular | ${USED_PATCHES} |${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} | ${COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
else | |
echo "| :x: | ${BRANCH} | ${KERNEL_VERSION} | hp_sim | ${USED_PATCHES} | ${COMPILER_AND_VERSION} |" >> ${SUMMARY_FILE} | |
true | |
fi | |
- name: steps_summary | |
run: | | |
cat ${SUMMARY_FILE} >> $GITHUB_STEP_SUMMARY |