Skip to content
Commits on Source (156)
...@@ -2,26 +2,28 @@ ...@@ -2,26 +2,28 @@
makepkg: makepkg:
stage: build stage: build
rules:
- if: '$CI_COMMIT_TAG'
- when: manual
script: script:
- seblu-build - seblu-x86_64-build
artifacts: artifacts:
name: $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME name: $CI_PROJECT_NAME-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHA
expire_in: 1 week expire_in: 3 month
paths: paths:
- config.x86_64 - config.x86_64
- "*.pkg.tar.xz" - "*.pkg.tar.*"
only:
refs:
- tags
- web
commitpkg: commitpkg:
stage: deploy stage: deploy
rules:
- if: '$CI_COMMIT_TAG'
script: script:
- eval $(ssh-agent -s) - eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null # - trap "kill $SSH_AGENT_PID" 0
- seblu-push # trap is broken in gitlab runner, see:
only: # https://gitlab.com/gitlab-org/gitlab-runner/issues/3009
refs: # use a workaournd with sleep and kill:
- tags - sleep 300 && kill "$SSH_AGENT_PID" & disown
- web - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- seblu-push
...@@ -2,38 +2,39 @@ ...@@ -2,38 +2,39 @@
# Customized version of linux for seblu computers # Customized version of linux for seblu computers
pkgname=linux-seblu pkgname=linux-seblu
pkgver=4.20.2 pkgver=6.8.2
pkgrel=1 pkgrel=3
pkgdesc='The Linux Kernel cooked by Seblu' pkgdesc='The Linux Kernel cooked by Seblu'
arch=('x86_64') arch=('x86_64')
license=('GPL2') license=('GPL2')
url='http://www.kernel.org' url='http://www.kernel.org'
options=('!strip' '!buildflags') options=('!strip' '!buildflags')
makedepends=('glibc' 'libelf' 'kmod' 'git' 'make' 'gcc' 'bc' 'sed') makedepends=('llvm' 'clang' 'lld' 'libelf' 'kmod' 'git' 'make' 'bc' 'sed' 'cpio'
depends=('linux-firmware' 'kernel-install-hook') 'python' 'zstd')
optdepends=(
'linux-firmware: linux firmwares'
'kernel-install-hook: systemd installation helpers'
)
install=linux-seblu.install install=linux-seblu.install
#_repourl='git+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git' _main=https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
_repourl='git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git' _stable=https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
source=("$_repourl#tag=v${pkgver/_/-}" source=("git+$_stable#tag=v6.8.2"
"config.$CARCH") "config.$CARCH")
md5sums=('SKIP' sha256sums=('d1da77ec54ccbcc539463bb2523f2a7ddd9e8d1adbedb148d55687b998d9ced1'
'6b4f2c5b079fffc801d4f0f14a966a65') '894012c9267ca17a16854d7510462d2c40d78c4565b13cb4168116e97d8dc54d')
prepare() { prepare() {
# fake linux directory if necessary [[ -d linux-stable ]] && ln -snf linux-stable linux
if [[ ${_repourl##*/} != 'linux.git' ]]; then
local _reponame="${_repourl##*/}"
ln -sfT "${_reponame%.git}" linux
fi
cd linux cd linux
# apply patches # apply patch from the source array (should be a pacman feature)
for _f in "${source[@]}"; do local src
if [[ "$_f" =~ \.patch$ ]]; then for src in "${source[@]}"; do
msg2 "Patching $_f" src="${src%%::*}"
patch -p1 < "$srcdir/$_f" src="${src##*/}"
fi [[ $src = *.patch ]] || continue
msg2 "Applying patch $src..."
patch -Np1 < "../$src"
done done
# loading default config # loading default config
...@@ -49,24 +50,26 @@ prepare() { ...@@ -49,24 +50,26 @@ prepare() {
msg2 'Setting kernel build version' msg2 'Setting kernel build version'
echo "$(($pkgrel - 1 ))" > .version echo "$(($pkgrel - 1 ))" > .version
# no scm version # prevent addition of -dirty to version
# this prevent an issue with “make kernelrelease” which add -dirty to version msg2 'Patch setlocalversion'
# because ownership of git files has fakely been changed by fakeroot when sed -i 's|no_dirty=false|no_dirty=true|' scripts/setlocalversion
# called from makepkg
echo '' > .scmversion
}
build() { msg2 'Force use of LLVM in makefile'
cd linux # early makefile patching achieve 2 goals. Firstly, avoid adding variables to
# each make call. Secondly, it is later used by tools (e.g dkms) to build
# out-of-tree modules.
echo -e "\nLLVM = 1\nLLVM_IAS = 1\nexport LLVM LLVM_IAS" >> scripts/Kbuild.include
msg2 'Make prepare' msg2 'Make prepare'
make prepare make prepare
}
msg2 'Make bzImage' pkgver() {
make bzImage make -C linux -s kernelversion|tr '-' '_'
}
msg2 'Make modules' build() {
make modules make -C linux all
} }
package() { package() {
...@@ -74,152 +77,115 @@ package() { ...@@ -74,152 +77,115 @@ package() {
# get real compiled kernel version # get real compiled kernel version
kernrel=$(make kernelrelease) kernrel=$(make kernelrelease)
pkgdesc+=", version $kernrel" pkgdesc+=", release $kernrel"
pkgname="linux-$kernrel" pkgname="linux-$kernrel"
pkgver=$(make kernelversion|tr '-' '_') provides=("linux=$pkgver" "linux-headers=$pkgver" VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE KSMBD-MODULE)
provides=("linux=$pkgver" "linux-headers=$pkgver")
msg2 "Kernel release: $kernrel" msg2 "Kernel release: $kernrel"
msg2 "Package kernel version: $pkgver" msg2 "Package kernel version: $pkgver"
msg2 'Install vmlinuz' msg2 'Installing vmlinuz'
install -D -m644 arch/x86/boot/bzImage "$pkgdir/usr/lib/kernel/vmlinuz-$kernrel" install -D -m644 "$(make -s image_name)" "$pkgdir/usr/lib/kernel/vmlinuz-$kernrel"
msg2 'Install modules' msg2 'Installing modules'
# disable DEPMOD because it fail due to poor hack in scripts/depmod.sh # disable DEPMOD because it fail due to poor hack in scripts/depmod.sh
# INSTALL_MOD_STRIP will cause modules to be fully stripped # INSTALL_MOD_STRIP will cause modules to be fully stripped
make -s INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 DEPMOD=/bin/true modules_install make -s INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 DEPMOD=/bin/true modules_install
msg2 'Install sources' msg2 'Generating modules.dep and map files'
install_sources
msg2 'Remove firmwares'
rm -rf "$pkgdir/usr/lib/firmware"
msg2 'Generate modules.dep and map files'
# run depmod to keep track of these files and remove them with the package # run depmod to keep track of these files and remove them with the package
depmod -b "$pkgdir/usr" -F System.map "$kernrel" depmod -b "$pkgdir/usr" -F System.map "$kernrel"
msg2 'Symlink kernel into modules subdirectory'
# kernel-all expect kernel image in the modules directory
ln -s "../../kernel/vmlinuz-$kernrel" "$pkgdir/usr/lib/modules/$kernrel/vmlinuz"
msg2 'Add mkinitcpio pkgbase file'
# used by mkinitcpio to name the kernel
install -Dm644 <(echo "$pkgname") "$pkgdir/usr/lib/modules/$kernrel/pkgbase"
install_sources
msg2 'Removing firmwares'
rm -rvf "$pkgdir/usr/lib/firmware"
} }
install_sources() { install_sources() {
local kernsrc="$pkgdir/usr/src/$pkgname" local kernsrc="$pkgdir/usr/src/$pkgname"
local i
cd "$srcdir/linux"
# create $kernsrc directory msg2 'Installing sources'
install -d -m 755 "$kernsrc" install -d -m 755 "$kernsrc"
msg2 'Installing symlinks in modules/'
# remove previous build and source links # remove previous build and source links
rm -f "$pkgdir/usr/lib/modules/$kernrel"/{source,build} rm -f "$pkgdir/usr/lib/modules/$kernrel"/{source,build}
ln -rs "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/source ln -rs "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/source
ln -rs "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/build ln -rs "$kernsrc" "$pkgdir/usr/lib/modules/$kernrel"/build
# Copy kernel config files msg2 'Installing build files'
cd "$srcdir/linux" install -Dt "$kernsrc" -m644 .config Makefile Module.symvers System.map
install -D -m644 Makefile "$kernsrc/Makefile" install -Dt "$kernsrc/kernel" -m644 kernel/Makefile
install -D -m644 kernel/Makefile "$kernsrc/kernel/Makefile" install -Dt "$kernsrc/arch/x86" -m644 arch/x86/Makefile
install -D -m644 .config "$kernsrc/.config" for i in version localversion*; do
for i in localversion*; do
[[ -e "$i" ]] && install -m644 "$i" "$kernsrc/$i" [[ -e "$i" ]] && install -m644 "$i" "$kernsrc/$i"
done done
# create include directory msg2 'Installing scripts'
install -d "$kernsrc/include" cp -t "$kernsrc" -a scripts
for i in acpi asm-generic config crypto drm generated linux math-emu \
media net pcmcia scsi sound trace uapi video xen; do
cp -a include/$i "$kernsrc/include/"
done
# copy arch includes for external modules
install -d "$kernsrc/arch/x86"
cp -a arch/x86/include "$kernsrc/arch/x86/"
# copy files necessary for later builds, like nvidia and vmware
cp Module.symvers "$kernsrc"
cp -a scripts "$kernsrc"
# remove broken symlinks of unneeded architectures in scripts
rm -r "$kernsrc/scripts/dtc/include-prefixes"
# fix permissions on scripts dir
chmod og-w -R "$kernsrc/scripts"
# add x86 makefile
install -d "$kernsrc/.tmp_versions"
install -d "$kernsrc/arch/x86/kernel"
cp arch/x86/Makefile "$kernsrc/arch/x86/"
cp arch/x86/kernel/asm-offsets.s "$kernsrc/arch/x86/kernel/"
# add dm headers
install -d "$kernsrc/drivers/md"
cp drivers/md/*.h "$kernsrc/drivers/md"
# add inotify.h
install -d "$kernsrc/include/linux"
cp include/linux/inotify.h "$kernsrc/include/linux/"
# add wireless headers
install -d "$kernsrc/net/mac80211/"
cp net/mac80211/*.h "$kernsrc/net/mac80211/"
# add dvb headers for external modules
# in reference to:
# http://bugs.archlinux.org/task/11194
install -d "$kernsrc/include/config/dvb/"
cp include/config/dvb/*.h "$kernsrc/include/config/dvb/"
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
# in reference to:
# http://bugs.archlinux.org/task/13146
install -Dm644 drivers/media/dvb-frontends/lgdt330x.h \
"$kernsrc/drivers/media/dvb-frontends/dvb-frontends/lgdt330x.h"
install -Dm644 drivers/media/i2c/msp3400-driver.h \
"$kernsrc/drivers/media/i2c/msp3400-driver.h"
# add dvb headers
# in reference to:
# http://bugs.archlinux.org/task/20402
install -d "$kernsrc/drivers/media/usb/dvb-usb"
cp drivers/media/usb/dvb-usb/*.h "$kernsrc/drivers/media/usb/dvb-usb/"
install -d "$kernsrc/drivers/media/dvb-frontends"
cp drivers/media/dvb-frontends/*.h "$kernsrc/drivers/media/dvb-frontends/"
install -d "$kernsrc/drivers/media/tuners"
cp drivers/media/tuners/*.h "$kernsrc/drivers/media/tuners/"
# copy in Kconfig files
for i in $(find . -name "Kconfig*"); do
install -d "$kernsrc"/$(echo $i | sed 's|/Kconfig.*||')
cp "$i" "$kernsrc/$i"
done
# remove unneeded architectures added by copying Kconfig # add objtool for external module building when enabled VALIDATION_STACK option
# this is adding dependencty to glibc and libelf to the kernel package
msg2 'Installing objtool'
install -Dt "$kernsrc/tools/objtool" tools/objtool/objtool
msg2 'Installing headers'
cp -t "$kernsrc" -a include
# arch includes for external modules
cp -t "$kernsrc/arch/x86" -a arch/x86/include
install -Dt "$kernsrc/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
# dm headers
install -Dt "$kernsrc/drivers/md" -m644 drivers/md/*.h
# wireless headers
install -Dt "$kernsrc/net/mac80211" -m644 net/mac80211/*.h
# dvb headers, http://bugs.archlinux.org/task/13146
install -Dt "$kernsrc/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# dvb headers, http://bugs.archlinux.org/task/20402
install -Dt "$kernsrc/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$kernsrc/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$kernsrc/drivers/media/tuners" -m644 drivers/media/tuners/*.h
msg2 'Installing Kconfig files'
find . -name 'Kconfig*' -exec install -Dm644 {} "$kernsrc/{}" \;
msg2 'Removing unneeded architectures'
for i in "$kernsrc"/arch/*; do for i in "$kernsrc"/arch/*; do
[[ "${i##*/}" != x86 ]] && rm -rf "$i" [[ "${i##*/}" != x86 ]] && rm -rf "$i"
done done
# add objtool for external module building when enabled VALIDATION_STACK option msg2 'Removing documentation'
# this is adding dependencty to glibc and libelf to the kernel package rm -r "$kernsrc/Documentation"
install -d "$kernsrc/tools/objtool"
cp tools/objtool/objtool "$kernsrc/tools/objtool" msg2 'Stripping exectuables'
while read -rd '' i; do
# fix permissions case "$(file -Sbi "$i")" in
chown -R root:root "$kernsrc" application/x-sharedlib\;*) # Libraries (.so)
find "$kernsrc" -type d -exec chmod 755 {} \; strip -v $STRIP_SHARED "$i" ;;
application/x-archive\;*) # Libraries (.a)
# strip scripts directory strip -v $STRIP_STATIC "$i" ;;
find "$kernsrc/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do application/x-executable\;*) # Binaries
case "$(file -bi "$binary")" in strip -v $STRIP_BINARIES "$i" ;;
*application/x-sharedlib*) # Libraries (.so) application/x-pie-executable\;*) # Relocatable binaries
strip $STRIP_SHARED "$binary";; strip -v $STRIP_SHARED "$i" ;;
*application/x-archive*) # Libraries (.a)
strip $STRIP_STATIC "$binary";;
*application/x-executable*) # Binaries
strip $STRIP_BINARIES "$binary";;
esac esac
done done < <(find "$kernsrc" -type f -perm -u+x -print0)
msg2 'Removing sources broken symlinks'
find -L "$kernsrc" -type l -printf 'Removing %P\n' -delete
# check rights msg2 'Removing sources lost objects'
chown -R root.root "$kernsrc" find "$kernsrc" -type f -name '*.o' -printf 'Removing %P\n' -delete
chmod -R u=rwX,go=rX "$kernsrc"
} }
# vim:set ts=2 sw=2 ft=sh et: # vim:set ts=2 sw=2 ft=sh et:
#!/bin/bash -e
CONFIG_LOCAL=config.x86_64
CONFIG_REMOTE=https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/raw/main/config
vimdiff "$CONFIG_LOCAL" <(curl "$CONFIG_REMOTE")
This diff is collapsed.
#!/bin/bash
if [[ -t 2 ]]; then
bld=$'\e[1;33m';
rst=$'\e[m';
else
bld=''
rst=''
fi
if (( $# == 0 )); then
mapfile SRCINFO < <(makepkg --printsrcinfo)
tag="v$(echo "${SRCINFO[*]}"|awk '/pkgver/ {print $3}')-$(echo "${SRCINFO[*]}"|awk '/pkgrel/ {print $3}')"
read -r -p "Push $bld$tag$rst? (y/N): " VALIDATE
[[ $VALIDATE == "y" ]] || exit 1
else
tag="$1"
fi
set -e
git tag "$tag"
git push origin "$tag"
...@@ -9,11 +9,11 @@ config_equal() ...@@ -9,11 +9,11 @@ config_equal()
} }
if config_equal; then if config_equal; then
(cd "$SRC" && make menuconfig) (cd "$SRC" && make ${1:-menuconfig})
else else
[[ -e "$SRC" ]] && rm -rf "$SRC" [[ -e "$SRC" ]] && rm -rf "$SRC"
makepkg --nobuild --force makepkg --nobuild --force
(cd "$SRC" && make oldconfig) (cd "$SRC" && make ${1:-oldconfig})
fi fi
if ! config_equal; then if ! config_equal; then
......