summaryrefslogtreecommitdiff
path: root/packages/sys-kernel/linux-image-redcore-lts/linux-image-redcore-lts-4.14.65.exheres-0
blob: 1e428eda5ac876acefec89b2f53b19a1dd8b1607 (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
# 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 = [ Enable sys-fs/cryptsetup support to unlock LUKS encrypted partitions ] ]]
    dkms       [[ description = [ Enable sys-kernel/dkms support to build 3rd party dkms kernel modules ] ]]
    dracut     [[ description = [ Enable sys-boot/dracut support to create an initramfs ] ]]
    mdadm      [[ description = [ Enable sys-fs/mdadm support to create, manage, and monitor Linux MD (software RAID) devices ] ]]
"

DEPENDENCIES="
    build:
        app-arch/xz
        sys-apps/bc
        sys-devel/make
    run:
        cryptsetup? ( sys-fs/cryptsetup )
        dkms? ( sys-kernel/dkms )
        dracut? ( sys-boot/dracut )
        mdadm? (sys-fs/mdadm )
        firmware/intel-microcode
        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-for-linux-hardened.patch
    "${FILES}"/0015-Enable-BFQ-io-scheduler-by-default.patch
)

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

pkg_setup() {
    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
    emake mrproper
    edo sed -ri "s|^(EXTRAVERSION =).*|\1 -${EXTRAVERSION}|" Makefile
    edo cp "${FILESDIR}"/"${EXTRAVERSION}"-amd64.config .config
}

src_compile() {
    emake prepare modules_prepare
    emake 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

    emake INSTALL_MOD_PATH="${IMAGE}" modules_install

    edo rm -f "${IMAGE}"lib/modules/"${KV_FULL}"/build
    edo rm -f "${IMAGE}"lib/modules/"${KV_FULL}"/source
    export local KSYMS
    for KSYMS in build source ; do
        dosym ../../../usr/src/linux-"${KV_FULL}" 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}"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
}