Merge pull request #387 from Googulator/swap-support

Support swap files in qemu or bare-metal mode
This commit is contained in:
fosslinux 2024-01-08 10:52:05 +00:00 committed by GitHub
commit e44748cce1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 4 deletions

View File

@ -12,6 +12,7 @@ you can run bootstap inside chroot.
# SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de> # SPDX-FileCopyrightText: 2021 Bastian Bittorf <bb@npl.de>
# SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com> # SPDX-FileCopyrightText: 2021 Melg Eight <public.melg8@gmail.com>
# SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space> # SPDX-FileCopyrightText: 2021-23 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2023-24 Gábor Stefanik <netrolller.3d@gmail.com>
import argparse import argparse
import os import os
@ -31,6 +32,7 @@ def create_configuration_file(args):
config.write(f"CHROOT={args.chroot or args.bwrap}\n") config.write(f"CHROOT={args.chroot or args.bwrap}\n")
config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n")
config.write(f"JOBS={args.cores}\n") config.write(f"JOBS={args.cores}\n")
config.write(f"SWAP_SIZE={args.swap}\n")
config.write(f"INTERNAL_CI={args.internal_ci or False}\n") config.write(f"INTERNAL_CI={args.internal_ci or False}\n")
config.write(f"BARE_METAL={args.bare_metal}\n") config.write(f"BARE_METAL={args.bare_metal}\n")
if (args.bare_metal or args.qemu) and not args.kernel: if (args.bare_metal or args.qemu) and not args.kernel:
@ -44,7 +46,7 @@ def create_configuration_file(args):
config.write("KERNEL_BOOTSTRAP=False\n") config.write("KERNEL_BOOTSTRAP=False\n")
config.write(f"BUILD_KERNELS={args.update_checksums or args.build_kernels}\n") config.write(f"BUILD_KERNELS={args.update_checksums or args.build_kernels}\n")
# pylint: disable=too-many-statements # pylint: disable=too-many-statements,too-many-branches
def main(): def main():
""" """
A few command line arguments to customize bootstrap. A few command line arguments to customize bootstrap.
@ -86,6 +88,8 @@ def main():
parser.add_argument("--early-preseed", parser.add_argument("--early-preseed",
help="Skip early stages of live-bootstrap.", nargs=None) help="Skip early stages of live-bootstrap.", nargs=None)
parser.add_argument("--internal-ci", help="INTERNAL for github CI") parser.add_argument("--internal-ci", help="INTERNAL for github CI")
parser.add_argument("-s", "--swap", help="Swap space to allocate in Linux",
default=0)
# QEMU arguments # QEMU arguments
parser.add_argument("-q", "--qemu", help="Use QEMU", parser.add_argument("-q", "--qemu", help="Use QEMU",
@ -143,6 +147,13 @@ def main():
else: else:
args.target_size = 0 args.target_size = 0
# Swap file size validation
if args.qemu or args.bare_metal:
args.swap = (int(str(args.swap).rstrip('gGmM')) *
(1024 if str(args.swap).lower().endswith('g') else 1))
else:
args.swap = 0
# bootstrap.cfg # bootstrap.cfg
try: try:
os.remove(os.path.join('steps', 'bootstrap.cfg')) os.remove(os.path.join('steps', 'bootstrap.cfg'))

View File

@ -214,11 +214,12 @@ Token *logic(Token *tok, char **val) {
/* logic = "(" /* logic = "("
* (name | * (name |
* (name "==" value) | * (name "==" value) |
* (name "!=" value) |
* (logic "||" logic) | * (logic "||" logic) |
* (logic "&&" logic)) * (logic "&&" logic))
* ")" * ")"
*/ */
char *lhs = tok->val; char *lhs = tok->val;
char *rhs; char *rhs;
tok = tok->next; tok = tok->next;
@ -235,8 +236,17 @@ Token *logic(Token *tok, char **val) {
} else { } else {
lhs = "False"; lhs = "False";
} }
} else { } else if (strcmp(tok->val, "!=") == 0) {
fputs("Expected == after ", stderr); /* Case for inequality. */
rhs = tok->next->val;
tok = tok->next->next;
if (strcmp(get_var(lhs), rhs) == 0) {
lhs = "False";
} else {
lhs = "True";
}
} else {
fputs("Expected == or != after ", stderr);
fputs(lhs, stderr); fputs(lhs, stderr);
fputs(" in logic\n", stderr); fputs(" in logic\n", stderr);
exit(1); exit(1);

19
steps/improve/swap.sh Normal file
View File

@ -0,0 +1,19 @@
#!/bin/sh
#
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# Set up swap
. /steps/bootstrap.cfg
. /steps/env
if ! test -f /swapfile
then
echo "Making swap..."
dd if=/dev/zero of=/swapfile bs=1M count=${SWAP_SIZE}
mkswap /swapfile
fi
swapon /swapfile

View File

@ -119,6 +119,7 @@ build: linux-4.9.10 ( BUILD_LINUX == True )
jump: break ( INTERNAL_CI == pass1 ) jump: break ( INTERNAL_CI == pass1 )
jump: linux ( CHROOT == False ) jump: linux ( CHROOT == False )
improve: finalize_fhs improve: finalize_fhs
improve: swap ( SWAP_SIZE != 0 )
build: musl-1.2.4 build: musl-1.2.4
build: curl-8.5.0 build: curl-8.5.0
improve: populate_device_nodes improve: populate_device_nodes