summaryrefslogtreecommitdiff
path: root/packages/sys-kernel/linux-image-redcore-lts/linux-image-redcore-lts-4.14.65.exheres-0
blob: 173a8803ab060479363f7ae6babc7afb501c7173 (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
# 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 )
        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-for-linux-hardened.patch
    "${FILES}"/0015-Enable-BFQ-io-scheduler-by-default.patch
    "${FILES}"/linux-pkg-config.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
    edo emake CC="${CC}" HOSTCC="${CC}" mrproper
    edo sed -ri "s|^(EXTRAVERSION =).*|\1 -${EXTRAVERSION}|" Makefile
    edo cp "${FILES}"/"${EXTRAVERSION}"-amd64.config .config
}

src_compile() {
    params=(
        AR="${AR}"
        CC="${CC}"
        HOSTCC="${CC}"
        LD="${LD}"
        HOSTLD="${LD}"
    )

    edo emake V=1 \
        "${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

    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
}