mrrl

Minimal Reliable Reproducible Linux
git clone https://ccx.te2000.cz/git/mrrl
Log | Files | Refs | Submodules | README

linux (3265B)


      1 {%- set src_dir='linux-' + tarball_version -%}
      2 {% extends "genlinks" %}
      3 {%- import "package_sets" as ps -%}
      4 {%- block template_deps -%}
      5 #@pragma:nofail_digest
      6 {{ ps.busybox_common() }}
      7 #+{{pkg_install_name("busybox-modutils")}}
      8 #+{{pkg_install_name("gnu-make")}}
      9 {{ ps.toolchain() }}
     10 #+{{pkg_install_name("findutils")}}
     11 #+{{pkg_install_name("diffutils")}}
     12 #+{{pkg_install_name("patch")}}
     13 #+{{pkg_install_name("flex")}}
     14 #+{{pkg_install_name("bison")}}
     15 #+{{pkg_install_name("rsync")}}
     16 #+{{pkg_install_name("zstd")}}
     17 #+{{pkg_install_name("libelf")}}
     18 #+{{pkg_install_name("pkgconf-pkg-config")}}
     19 #+{{pkg_install_name("nawk")}}
     20 {%- endblock template_deps %}
     21 {%- block source_deps %}
     22 #@untar:-J:sha256:{{ assertion(tarball_shasum) }}:.
     23 {% if patch_version -%}
     24 #@sha256:{{ assertion(patch_shasum) }}:patch-{{ patch_version }}.xz
     25 {% endif -%}
     26 #@sha256:{{files["lh_bootstrap-x86_64-config"]}}:linux.config
     27 #@sha256:{{files["noobjtool.patch"]}}:noobjtool.patch
     28 {% endblock source_deps %}
     29 {%- block prepare %}
     30 {{ super() }}
     31 {% if patch_version -%}
     32 unxz -c < '../patch-{{ patch_version }}.xz' | patch -p1 -N
     33 {% endif -%}
     34 patch -p1 -N <../noobjtool.patch
     35 {% endblock prepare %}
     36 {%- block configure %}
     37 export CPATH="$pthbs_build_environment/{{includedir}}"
     38 
     39 cp -v ../linux.config .config
     40 {{ linux_arch_personality|default('') }} make olddefconfig
     41 diff -u ../linux.config .config || true
     42 
     43 {% endblock configure %}
     44 {%- block build %}
     45 {{ linux_arch_personality|default('') }} {{make}} \
     46 	V=1 \
     47 	HOSTLDFLAGS="-static -L$pthbs_build_environment/{{libdir}}" \
     48 	HOSTCFLAGS="-L$pthbs_build_environment/{{libdir}}"
     49 
     50 {% endblock build %}
     51 {%- block install %}
     52 mkdir -p "${dest}/{{docdir}}/linux" "${dest}/{{kernel_image_path}}"
     53 cp -v .config "${dest}/{{configdir}}"
     54 mv Documentation/* "${dest}/{{docdir}}/linux"
     55 {{ linux_arch_personality|default('') }} make modules_install install \
     56 	INSTALL_MOD_PATH="${dest}/{{kernel_mod_path}}" \
     57 	INSTALL_MOD_STRIP=1 \
     58 	INSTALL_PATH="${dest}/{{kernel_image_path}}" \
     59 	INSTALL_DTBS_PATH="${dest}/{{kernel_dtbs_path}}"
     60 
     61 # remove dangling symlinks
     62 module_dir="${dest}/{{kernel_mod_path}}/lib/modules/{{ assertion(patch_version|default(tarball_version + ".0", True)) }}"
     63 rm -f "$module_dir/build" "$module_dir/source"
     64 ls -lhA "$module_dir"
     65 
     66 {% endblock install %}
     67 {% block genlinks_rules %}
     68 $2 == "{{kernel_image_path}}" { link($0); next }
     69 $2 == "lib" && $3 == "modules" { exit 3 }  # make sure kernel modules do not mix with userspace libraries
     70 function mod_path(s) {
     71 	sub("^[.]/{{kernel_mod_path}}/lib/", "./{{kernel_mod_path}}/", s)
     72 	return s
     73 }
     74 $2 == "{{kernel_mod_path}}" && $3 == "lib" && $4 == "modules" { link(mod_path($0)); next }
     75 {% endblock genlinks_rules -%}
     76 {% block genlinks_begin %}
     77 	kernel_name="{{ assertion(patch_version|default(tarball_version + ".0", True)) }}"
     78 	x["./{{kernel_image_path}}/vmlinuz"]=1
     79 	x["./{{kernel_image_path}}/System.map"]=1
     80 	x["./{{kernel_mod_path}}/lib/modules/" kernel_name "/modules.alias"]=1
     81 	x["./{{kernel_mod_path}}/lib/modules/" kernel_name "/modules.builtin"]=1
     82 	x["./{{kernel_mod_path}}/lib/modules/" kernel_name "/modules.dep"]=1
     83 	x["./{{kernel_mod_path}}/lib/modules/" kernel_name "/modules.order"]=1
     84 	x["./{{kernel_mod_path}}/lib/modules/" kernel_name "/modules.symbols"]=1
     85 {% endblock genlinks_begin %}