04-finale.sh (8129B)
1 #!/bin/sh 2 3 . ./lib/env.sh 4 . ./lib/fun.sh 5 6 trap exit_cleanup HUP PIPE INT QUIT TERM EXIT 7 8 if [ ! -d /sucks ]; then 9 msg err "You must run this script from inside chroot" 10 exit 1 11 elif [ "$(id -u)" -ne 0 ]; then 12 msg err "You must run this script as root" 13 exit 1 14 fi 15 16 msg warn "Note: once you run this script, previous build scripts won't run" 17 msg warn "correctly until you uninstall packages installed here " 18 msg query "Run %s [y/N]?" ${0##*/} 19 read -r run_script 20 case "${run_script}" in 21 y|Y) ;; 22 *) exit;; 23 esac 24 25 totalsteps=1 26 step=1 27 28 begin_step "finale" 29 30 totalsubsteps=6 31 substep=1 32 33 begin_substep byacc-20230219 34 if [ -x /bin/yacc ]; then 35 msg info "%s exists, skipping %s" /bin/yacc ${pkg} 36 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 37 unpack_pkg ${pkg} / 38 else 39 remove_dir ${G_SRC}/${pkg} 40 extract_pkg ${G_SRC} ${pkg} ${pkg}.tgz 41 ( 42 cd_or_fail ${G_SRC}/${pkg} 43 44 cat <<! >MKPK 45 mkpk_name() 46 { 47 printf "%s" "${pkg}" 48 } 49 50 mkpk_install() 51 { 52 AR=ar 53 CC=tcc 54 CFLAGS='-Os -static -fcommon' 55 LDFLAGS='-static -fcommon' 56 DESTDIR=/build 57 export AR CC CFLAGS LDFLAGS DESTDIR 58 59 ./configure --prefix=/ || exit 1 60 make ${JN} || exit 1 61 make install 62 } 63 ! 64 mkpk ${pkg} 65 remove_dir ${G_SRC}/${pkg} 66 unpack_pkg ${pkg} / 67 ) || exit 1 68 fi 69 timestamp=$(date +'%Y-%m-%d %T') 70 printf "%s\t%s\t%s\n" byacc 20230219 "${timestamp}" >>${G_PKGDB} 71 end_substep 72 73 # Based on improvements by Platon Ryzhikov (phkr on AUR) 74 begin_substep smdev-20230417 75 if [ -x /bin/smdev ]; then 76 msg info "%s exists, skipping %s" /bin/smdev ${pkg} 77 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 78 unpack_pkg ${pkg} / 79 else 80 ( 81 cd_or_fail ${G_SRC}/${pkg} 82 83 for p in config_mk util_h 84 do 85 apply_patch final -Np0 -i \ 86 ${G_PAT}/smdev-galeb/smdev-$p.patch 87 done 88 89 make config.h 90 91 apply_patch final -Np0 -i \ 92 ${G_PAT}/smdev-phkr/smdev-config_h.patch 93 for p in scan_all usb_nodes 94 do 95 apply_patch final -Np1 -i \ 96 ${G_PAT}/smdev-phkr/$p.patch 97 done 98 99 cat <<! >MKPK 100 mkpk_name() 101 { 102 printf "%s" "${pkg}" 103 } 104 105 mkpk_install() 106 { 107 CC=tcc 108 CFLAGS='-Os -static -fcommon' 109 LDFLAGS='-static -fcommon' 110 DESTDIR=/build 111 export AR CC CFLAGS LDFLAGS DESTDIR 112 113 make clean 114 make ${JN} || exit 1 115 make install || exit 1 116 117 cp -R ../fil/smdev-phkr/etc ../build/ || exit 1 118 chmod 755 ../build/etc/smdev/processdev 119 } 120 ! 121 mkpk ${pkg} 122 #remove_dir ${G_SRC}/${pkg} 123 unpack_pkg ${pkg} / 124 ) || exit 1 125 fi 126 timestamp=$(date +'%Y-%m-%d %T') 127 printf "%s\t%s\t%s\n" smdev 20230417 "${timestamp}" >>${G_PKGDB} 128 end_substep 129 130 begin_substep sbase-0.2 131 if [ -e /bin/ls ] && [ ! -L /bin/ls ]; then 132 msg info "%s exists, skipping %s" /bin/ls ${pkg} 133 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 134 unpack_pkg ${pkg} / 135 else 136 extract_pkg ${G_SRC} sbase-v0.2 ${pkg}.tar.gz ${pkg} 137 ( 138 cd_or_fail ${G_SRC}/${pkg} 139 140 patch -p1 < patches/0001-Split-path-into-prefix-name-on-c.patch \ 141 || exit 1 142 patch -p1 < \ 143 patches/0001-Add-both-T-filelist-and-n-equivalent-of-no-recursion.patch \ 144 || exit 1 145 146 cat <<! >MKPK 147 mkpk_name() 148 { 149 printf "%s" "${pkg}" 150 } 151 152 mkpk_install() 153 { 154 AR=ar 155 CC=tcc 156 export AR CC 157 SED=/sucks/bin/sed 158 159 if [ ! -e config.mk.orig ]; then 160 cp config.mk config.mk.orig 161 \${SED} -i -e "s,/usr/local,,g;s, \\<cc\\>, \${CC},g" \\ 162 -e "s, \\<ar\\>, \${AR},g" \\ 163 -e "s,^CFLAGS\\s\\+= ,&-static -fcommon ,g" \\ 164 -e "s,^LDFLAGS\\s\\+= ,&-static -fcommon ,g" config.mk 165 fi 166 167 make clean 168 make ${JN} || exit 1 169 make DESTDIR=/build install 170 171 # Overlap with dcron 172 rm ../build/bin/cron ../build/share/man/man1/cron.1 || true 173 } 174 ! 175 mkpk ${pkg} 176 #remove_dir ${G_SRC}/${pkg} 177 unpack_pkg ${pkg} / 178 ) || exit 1 179 fi 180 timestamp=$(date +'%Y-%m-%d %T') 181 printf "%s\t%s\t%s\n" sbase 0.2 "${timestamp}" >>${G_PKGDB} 182 end_substep 183 184 begin_substep ubase-20230412 185 if [ -x /bin/id ]; then 186 msg info "%s exists, skipping %s" /bin/id ${pkg} 187 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 188 unpack_pkg ${pkg} / 189 else 190 ( 191 cd_or_fail ${G_SRC}/${pkg} 192 193 apply_patch finale -Np1 -i \ 194 ${G_PAT}/ubase-galeb/getty_dont_chmod_chown.patch 195 apply_patch finale -Np1 -i \ 196 ${G_PAT}/ubase-galeb/getty_show_issue.patch 197 apply_patch finale -Np1 -i \ 198 ${G_PAT}/ubase-galeb/login-proper-login-shell-\ 199 minus.patch 200 apply_patch finale -Np1 -i \ 201 ${G_PAT}/ubase-galeb/watch-react-to-ctrlc.patch 202 cat <<! >MKPK 203 mkpk_name() 204 { 205 printf "%s" "${pkg}" 206 } 207 208 mkpk_install() 209 { 210 AR=ar 211 CC=tcc 212 export AR CC 213 SED=/sucks/bin/sed 214 215 if [ ! -e mknod.c.orig ]; then 216 cp mknod.c mknod.c.orig 217 \${SED} -i -z "s,<sys/types.h>\\n,&#include "\\ 218 "<sys/sysmacros.h>\\n," mknod.c 219 fi 220 if [ ! -e util.h.orig ]; then 221 cp util.h util.h.orig 222 \${SED} -i -z "s,\\"arg.h\\"\\n,&#include "\\ 223 "<sys/sysmacros.h>\\n," util.h 224 fi 225 if [ ! -e config.mk.orig ]; then 226 cp config.mk config.mk.orig 227 \${SED} -i -e "s,/usr/local,,g;s, \\<cc\\>, \${CC},g" \\ 228 -e "s, \\<ar\\>, \${AR},g" \\ 229 -e "s,^CFLAGS\\s\\+= ,&-static -fcommon ,g" \\ 230 -e "s,^LDFLAGS\\s\\+= ,&-static -fcommon ,g" \\ 231 -e "s,^LDLIBS\\s\\+= ,&-lc ,g" config.mk 232 fi 233 234 # - Use util-linux hwclock for now (supports more than UTC with no 235 # --systz) 236 # - Use mount from util-linux, as ubase mount doesn't seem to support 237 # ext4? TODO: More testing 238 if [ ! -e Makefile.orig ]; then 239 cp Makefile Makefile.orig 240 \${SED} -i -e '/^\\s\\+hwclock/d' \ 241 -e '/^\\s\\+mount/d' \ 242 Makefile 243 fi 244 245 make clean 246 make ${JN} || exit 1 247 make DESTDIR=/build install 248 249 mkdir -p /build/var/run 250 :>/build/var/run/utmp 251 chown root:utmp /build/var/run/utmp 252 chmod 664 /build/var/run/utmp 253 chmod +s /build/bin/su 254 } 255 ! 256 mkpk ${pkg} 257 #remove_dir ${G_SRC}/${pkg} 258 unpack_pkg ${pkg} / 259 ) || exit 1 260 fi 261 timestamp=$(date +'%Y-%m-%d %T') 262 printf "%s\t%s\t%s\n" ubase 20230412 "${timestamp}" >>${G_PKGDB} 263 end_substep 264 265 begin_substep svc-0.4 266 if [ -x /bin/svc ]; then 267 msg info "%s exists, skipping %s" /bin/svc ${pkg} 268 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 269 unpack_pkg ${pkg} / 270 else 271 extract_pkg ${G_SRC} svc-v0.4 ${pkg}.tar.gz ${pkg} 272 ( 273 cd_or_fail ${G_SRC}/${pkg} 274 275 cat <<! >MKPK 276 mkpk_name() 277 { 278 printf "%s" "${pkg}" 279 } 280 281 mkpk_install() 282 { 283 cp -R bin ../build/ 284 cp -R svc.d ../build/bin/ 285 mkdir -p ../build/share/ 286 cp -R man ../build/share/ 287 mkdir -p ../build/share/doc/${pkg} 288 cp README.md ../build/share/doc/${pkg}/ 289 } 290 ! 291 mkpk ${pkg} 292 remove_dir ${G_SRC}/${pkg} 293 unpack_pkg ${pkg} / 294 ) || exit 1 295 fi 296 timestamp=$(date +'%Y-%m-%d %T') 297 printf "%s\t%s\t%s\n" svc 0.4 "${timestamp}" >>${G_PKGDB} 298 end_substep 299 300 begin_substep mkpk-0.1.16 301 if [ -x /bin/mkpk ]; then 302 msg info "%s exists, skipping %s" /bin/mkpk ${pkg} 303 elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then 304 unpack_pkg ${pkg} / 305 else 306 extract_pkg ${G_SRC} mkpk-v0.1.16 ${pkg}.tar.gz ${pkg} 307 ( 308 cd_or_fail ${G_SRC}/${pkg} 309 310 cat <<! >MKPK 311 mkpk_name() 312 { 313 printf "%s" "${pkg}" 314 } 315 316 mkpk_install() 317 { 318 /plan9/bin/mk DESTDIR=/build PREFIX='' install 319 } 320 ! 321 mkpk ${pkg} 322 remove_dir ${G_SRC}/${pkg} 323 unpack_pkg ${pkg} / 324 ) || exit 1 325 fi 326 timestamp=$(date +'%Y-%m-%d %T') 327 printf "%s\t%s\t%s\n" mkpk 0.1.16 "${timestamp}" >>${G_PKGDB} 328 end_substep 329 330 msg info "Creating /boot/EFI" 331 mkdir -p ${GR}/boot/EFI 332 mkdir -p ${GR}/boot/EFI/BOOT 333 mkdir -p ${GR}/boot/EFI/GALEB 334 335 cp_or_fail ${GR}/share/shim-15.7/fbx64.efi ${GR}/boot/EFI/BOOT/bootx64.efi 336 #cp_or_fail ${GR}/share/shim-15.7/shimx64.efi ${GR}/boot/EFI/BOOT/bootx64.efi 337 #cp_or_fail ${GR}/share/shim-15.7/fbx64.efi ${GR}/boot/EFI/BOOT/fbx64.efi 338 cp_or_fail ${GR}/boot/vmlinuz ${GR}/boot/EFI/GALEB/vmlinuz 339 340 msg info "makewhatis /share/man" 341 makewhatis /share/man 342 msg info "makewhatis /sucks/share/man" 343 makewhatis /sucks/share/man 344 msg info "libtool --finish /lib /sucks/lib" 345 libtool --finish /lib /sucks/lib 346 347 msg info "Generating /etc/galeb-release" 348 cat <<! >/etc/galeb-release 349 Galeb musl/Linux ${G_VER} 350 ! 351 352 msg info "Generating /etc/hosts" 353 cat <<! >/etc/hosts 354 127.0.0.1 localhost.localdomain localhost 355 ::1 localhost.localdomain localhost 356 127.0.0.1 ${GHOSTNAME}.localdomain ${GHOSTNAME} 357 127.0.1.1 ${GHOSTNAME}.localdomain ${GHOSTNAME} 358 ! 359 360 msg info "Creating /etc/resolv.conf" 361 :>/etc/resolv.conf 362 363 msg info "Generating initramfs" 364 mkinitramfs 365 366 msg warn "Create a partition and copy files from here to it, then setup booting" 367 msg warn "(see BOOTING). " 368 369 end_step