* Make _llvm_ias="1" the default in customization.cfg
* Remove all git related files after copying source files
* Update PREEMPT_RT's supported kernel subversion and patch revision for 6.8
* Make _libunwind_replace a variable in customization.cfg
* Revise the description of native_intel
* Add ECHO CPU scheduler in customization.cfg
we reverted back to deb-pkg and rpm-pkg in the past to support
winesync: it requires a header in /usr/include/linux and that header
is in the src packages, but we can simply just copy that single
required header instead.
Closes: #905
* ci: factorise kernel building code for Arch
* customization: non-arch: add config option to disable installing the kernel altogether
useful for ci
* customization: add toggle to disable use of 'script' command
needed for ci, otherwise yes "" | ./install.sh install just
freezes
* ci: add Ubuntu pipeline
* ci: add Fedora pipeline
* install.sh: git add changes in the work folder
Both RPM and DEB scripts rely on apparently, not only RPM
* ci: use github to retrieve sources
Probably faster since the runner are hosted by them ?
* ci: arch: update mirror list
Sometimes the ci fails because of "operation too slow"
* ci: follow CachyOS naming scheme for bore scheduler
'bore-eevdf' is just 'bore' now, which makes sense for those who know
* ci: make kernelconfig part of the release
Enables advanced users to check if the kernel they're downloading
has the correct config options. And we can use it to check if
everything is okay
* ci: make a release as long as one kernel builds
I think it's better than cancelling the whole thing.
Because sometimes we don't have time to fix
what's wrong with a distro for a while
* ci: build diet kernel
All good! back to diet kernel
* ci: arch: remove extra frag file
Let's check after a full build if it was really needed.
* config: copy over diet config from 6.6 to 6.7
* ci: #YOLO: build all combinations of distro and scheduler
overriding config values through environment variables wasn't working
because the script call was resetting them before
they were saved
also, the external config file was getting sourced twice
* Update 0013-fedora-rpm.patch
The patch was using the syntax of the mkspec file instead of that of the kernel.spec, leading to the build failing.
* 6.6: Fix for Fedora and OpenSuse
* 6.6: Fix for OpenSuse
* Update 0013-fedora-rpm.patch to fix kernel-install issue on Fedora
Patch grabbed from https://lore.kernel.org/linux-kbuild/20231103-rpmpost-v1-1-9c18afab47f4@meta.com/
* Undo removing of kernel-uname-r
---------
Co-authored-by: Nanotwerp <Nanotwerp@gmail.com>
- Import Suse depmod/kmod patches - https://github.com/SUSE/kernel-source/tree/master/patches.rpmify
- Tweak mkspec to respect Suse /usr usage
- Run grub2-mkconfig post-install
- Get rid of the undesired test tweak in 0013-fedora-rpm.patch added with e0c74e5e1559d3b008ed4a790b9f4b7846a71844
We may have some additional work to do as my limited testing with Arch's defconfig + _kernel_on_diet="true" didn't boot. It might actually work with the full defconfig or using Suse's using _configfile="running-kernel". I'll run more tests as needed on my main machine as it was a PITA working on this with a dualcore broadwell laptop 🐸
* install.sh: RPM: add install deps
* install.sh: Fedora: remove fedora 32 code path
too old by now
* DEB: add dependencies
* install.sh: do not install libc-dev package
I don't remember why I had to keep it, but I just tried installing only
the image and headers and nvidia-dkms installed just fine
Closes: #772#732
* prepare: disable CONFIG_LOCALVERSION_AUTO
Closes: #729
* install.sh: gentoo: do not do initramfs and booloader config
it's done directly by the kernel-install script called by make install,
which gets changed in gentoo to do what needs to be done
* patches: fix RPM patches for 6.4 and 6.5
* prepare: always patch RPM mkspec
Like this we can notice earlier if it doesn't apply any longer
Otherwise I only test RPM when issues get openned
* RPM: fix RPM mkspecp atch, thanks @W3sG for the heads up!
- Only part of the patch was applying
- Fixed also the fact that packages conflict because of
unneeded build-id files in /usr/lib/.build-id
- Removed all the hardening flags Fedora uses by default
"we do not do that here"
Fixes: #669#609
* install.sh: uninstall-help: fix Fedora query for installed TKG packages
* install.sh: RPM: fix typo in variable
Used the non absolute path for the work folder x)
* customization.cfg: add new entries for kernel paths
Two choices:
- Where to put git bare repository,
- Will be implemented as a bare repository, the folder will have only
compressed blobs and will be around ~400MB. Should be good to have
even in HDDs
- This is meant to be in a permanent storage like HDD or SSD.
But some uses could have it on a tmpfs if the storage is very slow
when compared to a full git (shallow) clone
- Where to have the work/build folder
- This will be implemented through a git worktree,
where the bare repo will be decompressed. This is best on a tmpfs folder
but needs >=32GB for a full kernel build. Otherwise should be okay with
modprobed-db
* customization.cfg: remove obsolete entries
the tmpfs related entries can be set with the previously added entries,
i.e. _kernel_work_folder and _kernel_source_folder
* prepare: check if obsoleted vars get set, warn if so and exit
Like this users will get notified about the change and act accordingly
* prepare: remove unused kernel subver patching code
this used to bump from kernel x.y to x.y.z
* prepare: add func to define kernel abs paths
We will use these absolute paths to refer to kernel folders (work and source)
* prepare: rewrite git fetching code
- Rename to "_setup_kernel_work_folder"
- Now we simply fetch directly the "commit hash" / "git tag"
from the user chosen remote, no branches
- The source folder (the one that is preferably on disk) is only a bare repo
with a small size (~400MB)
- The work folder is then (re)created / updated (as need) as a git worktree
* prepare: tkg_patcher: embed patch name into the message
Otherwise it doesn't work on the install.sh approach,
which reimplements a simple msg2 function that doesn't support %s
replacement
* PKGBUILD: use new path variable for work folder
* install.sh: use new path variable for work folder
* CI: setup source and build folder in /tmp
* prepare: update diffconfig with new kernel work folder var
* PKGBUILD: source prepare after the config files
The git mirror wasn't configured with the user choice otherwise
Fixes: #647
* install.sh: honor external config file
* RPM: fix the script that generates kernel.spec
- Avoids conflicts with official kernels
- Fixes the reported issues with "unversionned obsoletes"
- Works now with akmod-nvidia
Fixes: #609#513#375#339#375#173#271
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: RPM: do not install kernel-headers package
We do not need it to build out-of-tree kernel modules. And that's
all we want actually.
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: auto-fetch latest versions + harmonize kernel version var
- Latest version is fetched from git: this prepares the road to
moving to git cloning and fetching
- Introduce the $_kver variable that follows a three digit
convention (e.g. '600', '519', '504') to enable comparing
simply between kernel versions
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* All distros: use git to fetch/update kernel sources
- Force git cloning `linux-tkg` so the patches and config
files are automatically checksummed
- Arch: remove all the sha256sums and source files and automatically
populate them on script run.
- Move git cloning/fetching script to 'prepare' script file
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* accept customization.cfg vars as env vars
This makes CLI way easier by enabling e.g.
_version="5.19" makepkg or
_version="5.19" ./install.sh install
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: better handle git remotes
now there's a dictionary that gives the list of remotes
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: add default git remote if not set or not recognized
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* customization.cfg: allow specific kernel versions
e.g. "6.0-rc4" or "5.10.51"
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* ci: improved workflow
1. Check periodically for newer kernels with git
2. If a newer kernel exists, with respect to l
latest Github release:
1. Build for cfs, pds, bmq for Arch
2. Make release
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* Bug reports: create "logs" folder and populate it at each run
This makes it easier for people to open issues
as we will ask them to attach every file in the "logs" folder.
File have the .txt extension so they can easily be
drag & dropped into gihub issues
For Arch people: to obtain the shell-output.log, we will ask them to do it
by hand:
makepkg [args] | tee shell-output.log
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: cleanup "logs" folder at each run
So some files, that usually get appended to, don't
grow to infinity.
This behavior needs to be changed if we decide to
keep more logs than the latest one.
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: fix config_hardened + make arch config default for all distros
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: pring message about using hardnened config file
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* README: update about the change with the default config file
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: additional dependencies
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* Enable Clang LTO
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: improve kernel prompting and selection code
- Subversion are to be directly edited in the _kver_subver_map
variable at the top of the file
- _supported_kernels is theoretically not needed, but it's needed
for the prompting to happen with the correct order, since the
keys in _kver_subver_map are hash-ordered, which is not the
natural ordering
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: update comment
* prepare: improve compiler selection and LTO enablement code path
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: use _prompt_from_array for distro selection
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: move optiprofile prompt to _prompt_from_array
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: improve cpu sched fallback code
* install.sh: move set -e at the top
* prepare: use arrays for HZ configs
* prepare: enable default selection in _prompt_from_array
* prepare: use _prompt_from_array for _rr_interval
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: update _rr_interval prompting
* prepare: update and use config script for tickless
* prepare: use scripts/config accross the entire script
* prepare: change last lines to scripts/config
* prepare: small fixes
* customization.cfg: revert back to old values for _tickless
* prepare: revert back to old numbering for _rr_interval
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: msg2 used _rr_interval
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: be smarter/dumber with _rr_interval
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: remove last manual interventions to .config
* prepare: fix condition
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: improve cpu march handling and implement prompt
Making `make` prompt wasn't working on my Gentoo for a
reason I don't understand anymore. The configs are unset
by the script. So it always goes for generic by default.
Maybe they need to be entirely deleted from the .config
file.
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: fix name for MuQSS.c
* prepare: use _sched for scheduler source code files
* install.sh: use sudo to clean root owned files in linux-src-git
* prepare: remove useless code
* prepare: fix issue with MuQSS
* Add CacULE scheduler
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* 5.13 rc4
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: Remove voluntary_preempt, OFenable and disable_acpi_cpufreq options
* prepare: Prevent config prompt w/ modprobed-db
Rebase of @CodingKoopa PR
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: Empty LOCALVERSION config option for Arch at the correct spot
@CodingKoopa spotted the issue and reported it, thanks!
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: use _enable _undefine and _disable wrappers
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* Restore the state tracker for makepkg usage
* Fix tickless array selection order for nohz idle/hz periodic
* Also handle the disabling part of the generic march selector
* Replace _undefine() calls with _disable()
* Preserve the case of config options passed to scripts/config
* Echo the CONFIG_EXPERT options without blank lines
And with a header/footer
Makes searching for config setting bugs easier
* prepare: uppercase config options with "tr"
Co-authored-by: Etienne JUVIGNY <ti3nou@gmail.com>
* install.sh: install headers in /usr/include for winesync to work
This implies reverting a previous change in deb and rpm distros
and adding make headers_install in the Generic approach
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: install winesync.rules file
This file will not be removed and will be left dangling
Not so bad I think, since only winesync uses it. We can
remove it in the future if things change
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* prepare: remove winesync.rules file during cleanup
So we can check if the user actually asked for winesync
in the current run by checking if the file exists.
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: add winesync to /etc/modules-load.d for auto-loading
Signed-off-by: Adel KARA SLIMANE <adel.ks@zegrapher.com>
* install.sh: RPM distros: Install the correct headers RPM for DKMS to work
Closes: #230Closes: #229
* install.sh: remove trailing whitespaces
They came from reverting a commit that actually removed them x)
* install.sh: Add note in uninstall-help for Suse about kernel-headers
* install.sh: improve git source code fetching
* install.sh: add install dependency for Fedora 33+
* install.sh, customization.cfg: cosmetic improvements
* install.sh: DEB, RMP: do not create devel packages.
They are not needed for DKMS
and that was the only point to why they were there to begin with