summaryrefslogtreecommitdiff
path: root/packages/sys-kernel/linux-image-redcore-lts/linux-image-redcore-lts-4.14.75.exheres-0
blob: f795e2865729941321b39f7486f5c12cef073a15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# Copyright 2018 Redcore Linux Project
# Distributed under the terms of the GNU General Public License v2

SUMMARY="Redcore Linux Project LTS Kernel Image"
DESCRIPTION="Redcore Linux Project LTS Kernel Image"
HOMEPAGE="https://redcorelinux.org"

DOWNLOADS="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${PV}.tar.xz"

LICENCES="GPL-2"
SLOT="${PV}"
PLATFORMS="~amd64"

EXTRAVERSION="redcore-lts"
KV_FULL=""${PV}"-"${EXTRAVERSION}""

MYOPTIONS="
    cryptsetup [[ description = [ Use sys-fs/cryptsetup to unlock LUKS encrypted partitions ] ]]
    dkms       [[ description = [ Use sys-kernel/dkms to build 3rd party dkms kernel modules ] ]]
    dracut     [[ description = [ Use sys-boot/dracut to create initramfs images ] ]]
    mdadm      [[ description = [ Use sys-fs/mdadm to create, manage, and monitor Linux MD (software RAID) devices ] ]]
"

DEPENDENCIES="
    build:
        app-arch/xz
        sys-apps/bc
        sys-devel/make
    build+run:
        cryptsetup? ( sys-fs/cryptsetup )
        dkms? (
            sys-kernel/dkms
            sys-kernel/linux-sources-redcore-lts:"${SLOT}"
        )
        dracut? ( sys-boot/dracut )
        mdadm? ( sys-fs/mdadm )
        firmware/linux-firmware
"

DEFAULT_SRC_PREPARE_PATCHES=(
    "${FILES}"/introduce-NUMA-identity-node-sched-domain.patch
    "${FILES}"/k10temp-add-ZEN-support.patch
    "${FILES}"/mute-pps_state_mismatch.patch
    "${FILES}"/restore-SD_PREFER_SIBLING-on-MC-domains.patch
    "${FILES}"/Revert-ath10k-activate-user-space-firmware-loading.patch
    "${FILES}"/linux-hardened.patch
    "${FILES}"/uksm-linux-hardened.patch
    "${FILES}"/0001-MuQSS-version-0.162-CPU-scheduler-linux-hardened.patch
    "${FILES}"/0002-Make-preemptible-kernel-default.patch
    "${FILES}"/0003-Expose-vmsplit-for-our-poor-32-bit-users.patch
    "${FILES}"/0004-Create-highres-timeout-variants-of-schedule_timeout-.patch
    "${FILES}"/0005-Special-case-calls-of-schedule_timeout-1-to-use-the-.patch
    "${FILES}"/0006-Convert-msleep-to-use-hrtimers-when-active.patch
    "${FILES}"/0007-Replace-all-schedule-timeout-1-with-schedule_min_hrt.patch
    "${FILES}"/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch
    "${FILES}"/0009-Replace-all-calls-to-schedule_timeout_uninterruptibl.patch
    "${FILES}"/0010-Don-t-use-hrtimer-overlay-when-pm_freezing-since-som.patch
    "${FILES}"/0011-Make-hrtimer-granularity-and-minimum-hrtimeout-confi.patch
    "${FILES}"/0012-Reinstate-default-Hz-of-100-in-combination-with-MuQS.patch
    "${FILES}"/0013-Make-threaded-IRQs-optionally-the-default-which-can-.patch
    "${FILES}"/0014-Swap-sucks.patch
    "${FILES}"/0015-MuQSS.c-needs-irq_regs.h-to-use-get_irq_regs.patch
    "${FILES}"/0016-unfuck-MuQSS-on-linux-4_14_15+.patch
    "${FILES}"/0001-BFQ-v8r12-20171108.patch
    "${FILES}"/0002-BFQ-v8r12-20180404.patch
    "${FILES}"/0001-pkg-config.patch
    "${FILES}"/0002-objtool-dont-hardcore-ar.patch
)

WORK="${WORKBASE}"/linux-"${PV}"

pkg_setup() {
    exdirectory --allow /boot

    export KBUILD_BUILD_USER="nexus"
    export KBUILD_BUILD_HOST="nexus.redcorelinux.org"

    export REAL_ARCH="$ARCH"
    unset ARCH ; unset LDFLAGS #will interfere with Makefile if set
}

src_prepare() {
    default

    src_prepare_params=(
        CC="${CC}"
        HOSTCC="${CC}"
    )

    edo emake \
        "${src_prepare_params[@]}" \
        mrproper

    edo sed -ri "s|^(EXTRAVERSION =).*|\1 -${EXTRAVERSION}|" Makefile
    edo cp "${FILES}"/"${EXTRAVERSION}"-amd64.config .config
    edo rm -rf $(find . -type f|grep -F \.orig)
}

src_compile() {
    src_compile_params=(
        AR="${AR}"
        AS="${AS}"
        CC="${CC}"
        HOSTCC="${CC}"
        HOSTLD="${LD}"
        LD="${LD}"
        NM="${NM}"
        OBJCOPY="${OBJCOPY}"
        OBJDUMP="${OBJDUMP}"
    )

    edo emake \
        "${src_compile_params[@]}" \
         prepare modules_prepare bzImage modules
}

src_install() {
    dodir /boot
    insinto /boot
    newins .config config-"${KV_FULL}"
    newins System.map System.map-"${KV_FULL}"
    newins arch/x86/boot/bzImage vmlinuz-"${KV_FULL}"

    dodir /usr/src/linux-"${KV_FULL}"
    insinto /usr/src/linux-"${KV_FULL}"
    doins Module.symvers
    doins System.map
    exeinto /usr/src/linux-"${KV_FULL}"
    doexe vmlinux

    src_install_params=(
        CC="${CC}"
        HOSTCC="${CC}"
    )

    edo emake \
        "${src_install_params[@]}" \
        INSTALL_MOD_PATH="${IMAGE}"usr/"$(exhost --target)" modules_install

    edo rm -f "${IMAGE}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/build
    edo rm -f "${IMAGE}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/source
    export local KSYMS
    for KSYMS in build source ; do
        dosym ../../../../../usr/src/linux-"${KV_FULL}" usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"/"${KSYMS}"
    done
}

_grub2_update_grubcfg() {
    if [ -x $(which grub-mkconfig) ]; then
        grub-mkconfig -o "${ROOT}"boot/grub/grub.cfg
    fi
}

_dracut_initrd_create() {
    if [ -x $(which dracut) ]; then
        dracut -N -f --kver="${KV_FULL}" "${ROOT}"boot/initrd-"${KV_FULL}"
    fi
}

_dracut_initrd_delete() {
    rm -rf "${ROOT}"boot/initrd-"${KV_FULL}"
}

_dkms_modules_delete() {
    if [ -x $(which dkms) ] ; then
        export local DKMSMOD
        for DKMSMOD in $(dkms status | cut -d " " -f1,2 | sed -e 's/,//g' | sed -e 's/ /\//g' | sed -e 's/://g') ; do
            dkms remove "${DKMSMOD}" -k "${KV_FULL}"
        done
    fi
}

_kernel_modules_delete() {
    rm -rf "${ROOT}"usr/"$(exhost --target)"/lib/modules/"${KV_FULL}"
}

pkg_postinst() {
    if [ $(stat -c %d:%i /) == $(stat -c %d:%i /proc/1/root/.) ]; then
        if option dracut; then
            _dracut_initrd_create
        fi

        _grub2_update_grubcfg
    fi
}

pkg_postrm() {
    if [ $(stat -c %d:%i /) == $(stat -c %d:%i /proc/1/root/.) ]; then
        if option dracut; then
            _dracut_initrd_delete
        fi

        if use dkms; then
            _dkms_modules_delete
        fi

        _kernel_modules_delete
        _grub2_update_grubcfg
    fi
}