Skip to content

Instantly share code, notes, and snippets.

@QORTEC
Last active September 8, 2023 02:44
Show Gist options
  • Save QORTEC/09bc9addfc83eb312e9cba40cd0d668d to your computer and use it in GitHub Desktop.
Save QORTEC/09bc9addfc83eb312e9cba40cd0d668d to your computer and use it in GitHub Desktop.
Solbuild: packages not available the repositories
name : linux-zfs
version : 6.4.13
release : 253
source :
- https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.4.13.tar.xz : 5e5511b50bc9fd358bb5d7746fab3c5ea396d42c6bd7a54b2555ede0de5ac8e5
- git|https://github.com/openzfs/zfs.git : 739db06ce7d453f92b93c9274e1f2176f927992d
license : GPL-2.0-only
component :
- kernel.image
- headers : kernel.devel
summary :
- Linux kernel image and modules (zfs)
- headers : Linux kernel headers (zfs)
description:
- The Linux kernel and modules, the core of the operating system
- headers : Headers required for building out of tree kernel modules
builddeps :
- pkgconfig(devmapper)
- pkgconfig(libelf)
- bc
- btrfs-progs
- cpio
- dracut
- intel-microcode
- kbd
- libfido2
- linux-firmware
- lz4
- nvme-cli
- perl
- sbsigntools
- tpm2-tools
- gettext
- rpm
- sed
- pkgconfig(libtirpc)
- pkgconfig(blkid)
- pkgconfig(uuid)
- pkgconfig(libudev)
- pkgconfig(libssl)
- pkgconfig(zlib)
- libaio-devel
- pkgconfig(libattr)
- pkgconfig(libelf)
- pkgconfig(libffi)
- pkgconfig(python3)
- python-cffi
- python-setuptools
patterns :
- headers : /usr/src
permanent :
- /lib/modules
- /usr/lib/kernel
- /usr/src
replaces :
- kernel
- kernel-modules
- headers : kernel-headers
environment: |
# Maximize ccache efficiency as well as make the build fully reproducible, except for the initrd which needs a timestamp to be signed
export KBUILD_BUILD_USER=root
export KBUILD_BUILD_TIMESTAMP="0"
export SOURCE_DATE_EPOCH=0
setup : |
%apply_patches
# Set the version
extraVersion="-${release}.zfs"
sed -e "s/EXTRAVERSION =.*/EXTRAVERSION = $extraVersion/" -i Makefile
# Ensure config is valid
install $pkgfiles/config .config
%make olddefconfig prepare
cp -r $sources/zfs.git ../zfs.git
cd ../zfs.git
%autogen --enable-linux-builtin --with-linux=$workdir --with-linux-obj=$workdir
./copy-builtin $workdir
cd $workdir
echo CONFIG_ZFS=y >> .config
%make ARCH=x86_64 oldconfig
# Zero stats so that we see how effective the caching is
if [[ " ${PATH[*]} " =~ "ccache" ]]; then
ccache --zero-stats
fi
build : |
%make ARCH=x86_64 CONFIG_DEBUG_SECTION_MISMATCH=y
%make -C tools/objtool
if [[ " ${PATH[*]} " =~ "ccache" ]]; then
ccache --show-stats
fi
install : |
# Install kernel blob
kernID="com.solus-project.zfs"
kversion="${version}-${release}.zfs"
install -D -m 0755 arch/x86/boot/bzImage $installdir/usr/lib/kernel/$kernID.${version}-${release}
# Install additional files
install -m 00644 .config $installdir/usr/lib/kernel/config-$kversion
install -m 00644 System.map $installdir/usr/lib/kernel/System.map-$kversion
install -m 00644 $pkgfiles/cmdline $installdir/usr/lib/kernel/cmdline-$kversion
# Install kernel modules, disable depmod + firmware install
install -D -d -m 00755 $installdir/lib/modules/$kversion
%make ARCH=x86_64 INSTALL_MOD_PATH=$installdir/ INSTALL_MOD_STRIP=1 modules_install KERNELRELEASE=$kversion mod-fw= DEPMOD=/bin/true
# Remove broken links
rm -v $installdir/lib/modules/${kversion}/{source,build}
# Mark this as the default "zfs" kernel
ln -sv $kernID.${version}-${release} $installdir/usr/lib/kernel/default-zfs
# Fix mods
depmod -b $installdir/ $kversion -a
# Store vendor initrd within the kernel package, prevent mangling from fakeroot
# 2021-01-20: Force early KMS for everything except Nouveau (this will not work with Nvidia propretary)
LD_PRELOAD='' dracut --strip --tmpdir /tmp -N -f \
--kmoddir $installdir/lib/modules/${kversion} \
--kver $kversion --add "bash systemd lvm dm rescue fido2 tpm2-tss virtiofs" \
--strip --hardlink --zstd \
--nomdadmconf --early-microcode \
--add-drivers "amdgpu hyperv_drm i915 qxl radeon simpledrm virtio-gpu vfio_pci vfio vfio_iommu_type1 vfio_virqfd" \
--include $pkgfiles/systemd/timeouts.conf /usr/lib64/systemd/system.conf.d/timeouts.conf \
$installdir/usr/lib/kernel/initrd-$kernID.${version}-${release}
# Sign with our MOK if we have the secureboot-keys submodule checked out.
if [[ -e $pkgfiles/secureboot-keys/MOK.key ]]; then
sbsign --key $pkgfiles/secureboot-keys/MOK.key \
--cert $pkgfiles/secureboot-keys/MOK.crt \
--output $installdir/usr/lib/kernel/$kernID.${version}-${release} \
$installdir/usr/lib/kernel/$kernID.${version}-${release}
fi
# Install the headers
tgtDir="/usr/src/linux-headers-$kversion"
export dstDir="$installdir/$tgtDir"
install -D -d -m 00755 $dstDir
find . -path './include/*' -prune -o -path './scripts/*' -prune -o -path './Documentation/*' -prune -o -type f \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) -print | cpio -pVd --preserve-modification-time $dstDir/
# Necessary for out of tree modules
for h in "drivers/media/dvb-frontends" "drivers/media/tuners"; do
install -D -d -m 00755 $dstDir/$h
cp -a $h/*.h $dstDir/$h
done
find drivers/media/platform/ -type f -name "*.h" | xargs -i sh -c 'install -D -d -m 00755 $dstDir/$(dirname {}); cp -a {} $dstDir/{}'
# For a full headers pkg
for p in "include" "scripts" "Documentation"; do
cp -a $p $dstDir
done
# Nuke any unneeded bits.
rm -f $dstDir/scripts/*.o
rm -f $dstDir/scripts/*/*.o
rm -rf $dstDir/Documentation/DocBook
# Fix an issue that would otherwise require us to have fakeroot during the build (which makes the build MUCH slower expecially if you're using ccache)
chmod +x $dstDir/scripts/basic/fixdep
# Copy remaining include dirs
(find arch -name include -type d -print | xargs -n1 -i: find : -type f) | cpio -pd --preserve-modification-time "$dstDir"
# Shove last bits needed for out of tree kernel builds
install -m 00644 Module.symvers $dstDir/.
install -m 00644 System.map $dstDir/.
install -m 00644 .config $dstDir/.config
# Add objtool binary for CONFIG_STACK_VALIDATION (T5607)
install -m 00755 tools/objtool/objtool $dstDir/tools/objtool/objtool
# Fix up build/source links
ln -sv build $installdir/lib/modules/$kversion/source
ln -sv $tgtDir $installdir/lib/modules/$kversion/build
name : material-decoration
version : 5.01
release : 0
source :
- git|https://github.com/Zren/material-decoration.git : 65fe6f577a978a9e601241d29bea35185eb7f69c
license : GPL-2.0
component : desktop.kde
summary : Material-ish window decoration theme for KWin.
description: |
Material-ish window decoration theme for KWin.
builddeps :
- kwin-devel
- breeze-devel
- extra-cmake-modules
- pkgconfig(Qt5Core)
- kdecoration-devel
- kconfig-devel
- kconfigwidgets-devel
- kcoreaddons-devel
- kguiaddons-devel
- ki18n-devel
- kiconthemes-devel
- kwindowsystem-devel
- pkgconfig(x11)
- pkgconfig(Qt5X11Extras)
networking : yes
setup : |
mkdir build
cd build
%cmake -DCMAKE_INSTALL_PREFIX=/usr ..
build : |
cd build
%make
install : |
cd build
%make_install

This is a gist repository contains solbuild package.yml files for packages that unavailable in the official Solus repositories at time of writing.

Note: This repository is unofficial and I give no support, nor do I promise to ever updates

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment