1 #!/bin/sh 2 # 3 # Copyright 2003 Wichert Akkerman <wichert@wigg 4 # 5 # Simple script to generate a debian/ director 6 7 set -eu 8 9 is_enabled() { 10 grep -q "^$1=y" include/config/auto.co 11 } 12 13 if_enabled_echo() { 14 if is_enabled "$1"; then 15 echo -n "$2" 16 elif [ $# -ge 3 ]; then 17 echo -n "$3" 18 fi 19 } 20 21 set_debarch() { 22 if [ "${KBUILD_DEBARCH:+set}" ]; then 23 debarch="$KBUILD_DEBARCH" 24 return 25 fi 26 27 # Attempt to find the correct Debian a 28 case "$UTS_MACHINE" in 29 i386|alpha|m68k|riscv*) 30 debarch="$UTS_MACHINE" ;; 31 x86_64) 32 debarch=amd64 ;; 33 sparc*) 34 debarch=sparc$(if_enabled_echo 35 s390*) 36 debarch=s390x ;; 37 ppc*) 38 if is_enabled CONFIG_64BIT; th 39 debarch=ppc64$(if_enab 40 else 41 debarch=powerpc$(if_en 42 fi 43 ;; 44 parisc*) 45 debarch=hppa ;; 46 mips*) 47 if is_enabled CONFIG_CPU_LITTL 48 debarch=mips$(if_enabl 49 elif is_enabled CONFIG_CPU_MIP 50 debarch=mips$(if_enabl 51 else 52 debarch=mips 53 fi 54 ;; 55 aarch64|arm64) 56 debarch=arm64 ;; 57 arm*) 58 if is_enabled CONFIG_AEABI; th 59 debarch=arm$(if_enable 60 else 61 debarch=arm 62 fi 63 ;; 64 openrisc) 65 debarch=or1k ;; 66 sh) 67 if is_enabled CONFIG_CPU_SH3; 68 debarch=sh3$(if_enable 69 elif is_enabled CONFIG_CPU_SH4 70 debarch=sh4$(if_enable 71 fi 72 ;; 73 esac 74 if [ -z "$debarch" ]; then 75 debarch=$(dpkg-architecture -q 76 echo "" >&2 77 echo "** ** ** WARNING ** ** 78 echo "" >&2 79 echo "Your architecture doesn' 80 echo "Debian userspace archite 81 echo "Falling back to the curr 82 echo "Please add support for $ 83 echo "" >&2 84 fi 85 } 86 87 # Create debian/source/ if it is a source pack 88 gen_source () 89 { 90 mkdir -p debian/source 91 92 echo "3.0 (quilt)" > debian/source/for 93 94 { 95 echo "diff-ignore" 96 echo "extend-diff-ignore = .*" 97 } > debian/source/local-options 98 99 # Add .config as a patch 100 mkdir -p debian/patches 101 { 102 echo "Subject: Add .config" 103 echo "Author: ${maintainer}" 104 echo 105 echo "--- /dev/null" 106 echo "+++ linux/.config" 107 diff -u /dev/null "${KCONFIG_C 108 } > debian/patches/config.patch 109 echo config.patch > debian/patches/ser 110 111 "${srctree}/scripts/package/gen-diff-p 112 if [ -s debian/patches/diff.patch ]; t 113 sed -i " 114 1iSubject: Add local d 115 1iAuthor: ${maintainer 116 1i 117 " debian/patches/diff.patch 118 119 echo diff.patch >> debian/patc 120 else 121 rm -f debian/patches/diff.patc 122 fi 123 } 124 125 rm -rf debian 126 mkdir debian 127 128 user=${KBUILD_BUILD_USER:-$(id -nu)} 129 name=${DEBFULLNAME:-${user}} 130 if [ "${DEBEMAIL:+set}" ]; then 131 email=${DEBEMAIL} 132 else 133 buildhost=${KBUILD_BUILD_HOST:-$(hostn 134 email="${user}@${buildhost}" 135 fi 136 maintainer="${name} <${email}>" 137 138 while [ $# -gt 0 ]; do 139 case "$1" in 140 --need-source) 141 gen_source 142 shift 143 ;; 144 *) 145 break 146 ;; 147 esac 148 done 149 150 # Some variables and settings used throughout 151 version=$KERNELRELEASE 152 if [ "${KDEB_PKGVERSION:+set}" ]; then 153 packageversion=$KDEB_PKGVERSION 154 else 155 packageversion=$(${srctree}/scripts/se 156 fi 157 sourcename=${KDEB_SOURCENAME:-linux-upstream} 158 159 if [ "$ARCH" = "um" ] ; then 160 packagename=user-mode-linux 161 else 162 packagename=linux-image 163 fi 164 165 debarch= 166 set_debarch 167 168 # Try to determine distribution 169 if [ "${KDEB_CHANGELOG_DIST:+set}" ]; then 170 distribution=$KDEB_CHANGELOG_DIST 171 # In some cases lsb_release returns the codena 172 elif distribution=$(lsb_release -cs 2>/dev/nul 173 : # nothing to do in this case 174 else 175 distribution="unstable" 176 echo >&2 "Using default distribution o 177 echo >&2 "Install lsb-release or set \ 178 fi 179 180 echo $debarch > debian/arch 181 182 host_gnu=$(dpkg-architecture -a "${debarch}" - 183 184 # Generate a simple changelog template 185 cat <<EOF > debian/changelog 186 $sourcename ($packageversion) $distribution; u 187 188 * Custom built Linux kernel. 189 190 -- $maintainer $(date -R) 191 EOF 192 193 # Generate a control file 194 cat <<EOF > debian/control 195 Source: $sourcename 196 Section: kernel 197 Priority: optional 198 Maintainer: $maintainer 199 Rules-Requires-Root: no 200 Build-Depends: debhelper-compat (= 12) 201 Build-Depends-Arch: bc, bison, cpio, flex, 202 gcc-${host_gnu} <!pkg.${sourcename}.nokernelh 203 kmod, libelf-dev:native, 204 libssl-dev:native, libssl-dev <!pkg.${sourcen 205 rsync 206 Homepage: https://www.kernel.org/ 207 208 Package: $packagename-$version 209 Architecture: $debarch 210 Description: Linux kernel, version $version 211 This package contains the Linux kernel, modul 212 files, version: $version. 213 EOF 214 215 if [ "${SRCARCH}" != um ]; then 216 cat <<EOF >> debian/control 217 218 Package: linux-libc-dev 219 Section: devel 220 Provides: linux-kernel-headers 221 Architecture: $debarch 222 Description: Linux support headers for userspa 223 This package provides userspaces headers from 224 are used by the installed headers for GNU gli 225 Multi-Arch: same 226 EOF 227 228 if is_enabled CONFIG_MODULES; then 229 cat <<EOF >> debian/control 230 231 Package: linux-headers-$version 232 Architecture: $debarch 233 Build-Profiles: <!pkg.${sourcename}.nokernelhe 234 Description: Linux kernel headers for $version 235 This package provides kernel header files for 236 . 237 This is useful for people who need to build e 238 EOF 239 fi 240 fi 241 242 if is_enabled CONFIG_DEBUG_INFO; then 243 cat <<EOF >> debian/control 244 245 Package: linux-image-$version-dbg 246 Section: debug 247 Architecture: $debarch 248 Build-Profiles: <!pkg.${sourcename}.nokerneldb 249 Description: Linux kernel debugging symbols fo 250 This package will come in handy if you need t 251 all the necessary debug symbols for the kerne 252 EOF 253 fi 254 255 cat <<EOF > debian/rules.vars 256 ARCH := ${ARCH} 257 KERNELRELEASE := ${KERNELRELEASE} 258 EOF 259 260 cp "${srctree}/scripts/package/debian/copyrigh 261 cp "${srctree}/scripts/package/debian/rules" d 262 263 exit 0
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.