mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-23 11:36:32 +01:00
Merge branch 'master' into tcc_bootstrap_alt-refactor-improve
This commit is contained in:
commit
dcb0134de8
26 changed files with 843 additions and 462 deletions
|
|
@ -73,7 +73,7 @@ class Generator():
|
||||||
self.target_dir = os.path.join(self.target_dir, 'disk')
|
self.target_dir = os.path.join(self.target_dir, 'disk')
|
||||||
target.add_disk("disk",
|
target.add_disk("disk",
|
||||||
filesystem="ext3",
|
filesystem="ext3",
|
||||||
size=(target_size + "M") if target_size else "16G",
|
size=(str(target_size) + "M") if target_size else "16G",
|
||||||
bootable=True)
|
bootable=True)
|
||||||
target.mount_disk("disk", "disk")
|
target.mount_disk("disk", "disk")
|
||||||
self.external_dir = os.path.join(self.target_dir, 'external')
|
self.external_dir = os.path.join(self.target_dir, 'external')
|
||||||
|
|
@ -294,7 +294,8 @@ this script the next time")
|
||||||
|
|
||||||
# Actually download the file
|
# Actually download the file
|
||||||
headers = {
|
headers = {
|
||||||
"Accept-Encoding": "identity"
|
"Accept-Encoding": "identity",
|
||||||
|
"User-Agent": "curl/7.88.1"
|
||||||
}
|
}
|
||||||
if not os.path.isfile(abs_file_name):
|
if not os.path.isfile(abs_file_name):
|
||||||
print(f"Downloading: {file_name}")
|
print(f"Downloading: {file_name}")
|
||||||
|
|
@ -305,7 +306,7 @@ this script the next time")
|
||||||
target_file.write(response.raw.read())
|
target_file.write(response.raw.read())
|
||||||
else:
|
else:
|
||||||
raise requests.HTTPError("Download failed: HTTP " +
|
raise requests.HTTPError("Download failed: HTTP " +
|
||||||
response.status_code + " " + response.reason)
|
str(response.status_code) + " " + response.reason)
|
||||||
return abs_file_name
|
return abs_file_name
|
||||||
|
|
||||||
def get_packages(self):
|
def get_packages(self):
|
||||||
|
|
|
||||||
|
|
@ -381,9 +381,7 @@ C library. Our previous Mes C library was incomplete which prevented us
|
||||||
from building many newer or more complex programs.
|
from building many newer or more complex programs.
|
||||||
|
|
||||||
``tcc`` has slight problems when building and linking ``musl``, so we
|
``tcc`` has slight problems when building and linking ``musl``, so we
|
||||||
apply a few patches. In particular, we replace all weak symbols with
|
apply a few patches.
|
||||||
strong symbols and will patch ``tcc`` in the next step to ignore
|
|
||||||
duplicate symbols.
|
|
||||||
|
|
||||||
We do not use any of ``/usr/lib/mes`` or ``/usr/include/mes`` any longer, rather
|
We do not use any of ``/usr/lib/mes`` or ``/usr/include/mes`` any longer, rather
|
||||||
using ``/usr/lib`` and ``/usr/include`` like normal.
|
using ``/usr/lib`` and ``/usr/include`` like normal.
|
||||||
|
|
@ -657,14 +655,13 @@ and the GNU assembler ``as``.
|
||||||
musl 1.1.24 (v3)
|
musl 1.1.24 (v3)
|
||||||
================
|
================
|
||||||
|
|
||||||
We rebuild musl for the third time. This time we use GNU ar rather than ``tcc -ar``,
|
We rebuild musl for the third time. This time we can use GNU as to build assembly source files,
|
||||||
so we can drop weak symbols patch. Also, we can use GNU as to build assembly source files,
|
|
||||||
so those assembly files that tcc failed to compile no longer have to be patched.
|
so those assembly files that tcc failed to compile no longer have to be patched.
|
||||||
|
|
||||||
tcc 0.9.27 (musl v3)
|
tcc 0.9.27 (musl v3)
|
||||||
====================
|
====================
|
||||||
|
|
||||||
We rebuild tcc against new musl and without a patch to ignore duplicate symbols.
|
We rebuild tcc against new musl.
|
||||||
|
|
||||||
gcc 4.0.4
|
gcc 4.0.4
|
||||||
=========
|
=========
|
||||||
|
|
|
||||||
43
rootfs.py
43
rootfs.py
|
|
@ -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,7 +32,10 @@ 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"FINAL_JOBS={args.cores}\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"INTERACTIVE={args.interactive}\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:
|
||||||
if args.repo or args.external_sources:
|
if args.repo or args.external_sources:
|
||||||
|
|
@ -45,7 +49,7 @@ def create_configuration_file(args):
|
||||||
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")
|
||||||
config.write(f"TCC_BOOTSTRAP_ALT={args.tcc_bootstrap_alt}\n")
|
config.write(f"TCC_BOOTSTRAP_ALT={args.tcc_bootstrap_alt}\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.
|
||||||
|
|
@ -71,22 +75,27 @@ def main():
|
||||||
help="Force all files timestamps to be 0 unix time",
|
help="Force all files timestamps to be 0 unix time",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
parser.add_argument("--update-checksums",
|
parser.add_argument("--update-checksums",
|
||||||
help="Update checksum files.",
|
help="Update checksum files",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
parser.add_argument("--external-sources",
|
parser.add_argument("--external-sources",
|
||||||
help="Download sources externally from live-bootstrap.",
|
help="Download sources externally from live-bootstrap",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
parser.add_argument("--build-kernels",
|
parser.add_argument("--build-kernels",
|
||||||
help="Also build kernels in chroot and bwrap builds.",
|
help="Also build kernels in chroot and bwrap builds",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
parser.add_argument("--no-create-config",
|
parser.add_argument("--no-create-config",
|
||||||
help="Do not automatically create config file",
|
help="Do not automatically create config file",
|
||||||
action="store_true")
|
action="store_true")
|
||||||
|
parser.add_argument("-i", "--interactive",
|
||||||
|
help="Use interactive prompts to resolve issues during bootstrap",
|
||||||
|
action="store_true")
|
||||||
parser.add_argument("-r", "--repo",
|
parser.add_argument("-r", "--repo",
|
||||||
help="Path to prebuilt binary packages.", nargs=None)
|
help="Path to prebuilt binary packages", nargs=None)
|
||||||
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",
|
||||||
|
|
@ -147,6 +156,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'))
|
||||||
|
|
@ -233,17 +249,24 @@ print(shutil.which('chroot'))
|
||||||
if args.kernel:
|
if args.kernel:
|
||||||
generator.prepare(target, using_kernel=True, target_size=size)
|
generator.prepare(target, using_kernel=True, target_size=size)
|
||||||
|
|
||||||
run(args.qemu_cmd,
|
arg_list = [
|
||||||
'-enable-kvm',
|
'-enable-kvm',
|
||||||
'-m', str(args.qemu_ram) + 'M',
|
'-m', str(args.qemu_ram) + 'M',
|
||||||
'-smp', str(args.cores),
|
'-smp', str(args.cores),
|
||||||
'-no-reboot',
|
'-no-reboot',
|
||||||
'-drive', 'file=' + target.get_disk("disk") + ',format=raw',
|
'-drive', 'file=' + target.get_disk("disk") + ',format=raw'
|
||||||
'-drive', 'file=' + target.get_disk("external") + ',format=raw',
|
]
|
||||||
|
if target.get_disk("external") is not None:
|
||||||
|
arg_list += [
|
||||||
|
'-drive', 'file=' + target.get_disk("external") + ',format=raw',
|
||||||
|
]
|
||||||
|
arg_list += [
|
||||||
'-nic', 'user,ipv6=off,model=e1000',
|
'-nic', 'user,ipv6=off,model=e1000',
|
||||||
'-kernel', args.kernel,
|
'-kernel', args.kernel,
|
||||||
'-nographic',
|
'-nographic',
|
||||||
'-append', 'console=ttyS0 root=/dev/sda1 rootfstype=ext3 init=/init rw')
|
'-append', 'console=ttyS0 root=/dev/sda1 rootfstype=ext3 init=/init rw'
|
||||||
|
]
|
||||||
|
run(args.qemu_cmd, *arg_list)
|
||||||
else:
|
else:
|
||||||
generator.prepare(target, kernel_bootstrap=True, target_size=size)
|
generator.prepare(target, kernel_bootstrap=True, target_size=size)
|
||||||
arg_list = [
|
arg_list = [
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ void output_config(FILE *out) {
|
||||||
char *get_var(char *name) {
|
char *get_var(char *name) {
|
||||||
/* Search through existing variables. */
|
/* Search through existing variables. */
|
||||||
Variable *var;
|
Variable *var;
|
||||||
Variable *last;
|
Variable *last = NULL;
|
||||||
for (var = variables; var != NULL; var = var->next) {
|
for (var = variables; var != NULL; var = var->next) {
|
||||||
if (strcmp(name, var->name) == 0) {
|
if (strcmp(name, var->name) == 0) {
|
||||||
return var->val;
|
return var->val;
|
||||||
|
|
@ -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);
|
||||||
|
|
@ -373,7 +383,7 @@ int interpret(Directive *directive) {
|
||||||
|
|
||||||
Directive *interpreter(Directive *directives) {
|
Directive *interpreter(Directive *directives) {
|
||||||
Directive *directive;
|
Directive *directive;
|
||||||
Directive *last;
|
Directive *last = NULL;
|
||||||
for (directive = directives; directive != NULL; directive = directive->next) {
|
for (directive = directives; directive != NULL; directive = directive->next) {
|
||||||
if (interpret(directive)) {
|
if (interpret(directive)) {
|
||||||
/* This means this directive needs to be removed from the linked list. */
|
/* This means this directive needs to be removed from the linked list. */
|
||||||
|
|
@ -407,7 +417,7 @@ void add_to_fiwix_filelist(char *filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Script generator. */
|
/* Script generator. */
|
||||||
FILE *start_script(int id, int using_bash) {
|
FILE *start_script(int id, int bash_build) {
|
||||||
/* Create the file /steps/$id.sh */
|
/* Create the file /steps/$id.sh */
|
||||||
char *filename = calloc(MAX_STRING, sizeof(char));
|
char *filename = calloc(MAX_STRING, sizeof(char));
|
||||||
strcpy(filename, "/steps/");
|
strcpy(filename, "/steps/");
|
||||||
|
|
@ -423,9 +433,19 @@ FILE *start_script(int id, int using_bash) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (using_bash) {
|
if (bash_build) {
|
||||||
fputs("#!/bin/bash\n", out);
|
fputs("#!/bin/bash\n", out);
|
||||||
fputs("set -e\n", out);
|
if (strcmp(get_var("INTERACTIVE"), "True") == 0) {
|
||||||
|
if (bash_build != 1) {
|
||||||
|
fputs("set -E\ntrap 'env PS1=\"[TRAP] \\w # \" bash -i' ERR\n", out);
|
||||||
|
} else {
|
||||||
|
fputs("set -E\ntrap 'bash -c '\"'\"'while true; do printf \""
|
||||||
|
"[TRAP - use Ctrl+D] $(pwd) # \"; $(cat); done'\"'\"'' ERR\n",
|
||||||
|
out);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fputs("set -e\n", out);
|
||||||
|
}
|
||||||
fputs("cd /steps\n", out);
|
fputs("cd /steps\n", out);
|
||||||
fputs(". ./bootstrap.cfg\n", out);
|
fputs(". ./bootstrap.cfg\n", out);
|
||||||
fputs(". ./env\n", out);
|
fputs(". ./env\n", out);
|
||||||
|
|
@ -450,8 +470,8 @@ FILE *start_script(int id, int using_bash) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_call_script(FILE *out, char *type, char *name, int using_bash, int source) {
|
void output_call_script(FILE *out, char *type, char *name, int bash_build, int source) {
|
||||||
if (using_bash) {
|
if (bash_build) {
|
||||||
if (source) {
|
if (source) {
|
||||||
fputs(". ", out);
|
fputs(". ", out);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -469,8 +489,8 @@ void output_call_script(FILE *out, char *type, char *name, int using_bash, int s
|
||||||
fputs(".sh\n", out);
|
fputs(".sh\n", out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void output_build(FILE *out, Directive *directive, int pass_no, int using_bash) {
|
void output_build(FILE *out, Directive *directive, int pass_no, int bash_build) {
|
||||||
if (using_bash) {
|
if (bash_build) {
|
||||||
fputs("build ", out);
|
fputs("build ", out);
|
||||||
fputs(directive->arg, out);
|
fputs(directive->arg, out);
|
||||||
fputs(" pass", out);
|
fputs(" pass", out);
|
||||||
|
|
@ -510,9 +530,9 @@ void generate(Directive *directives) {
|
||||||
int counter = 0;
|
int counter = 0;
|
||||||
|
|
||||||
/* Initially, we use kaem, not bash. */
|
/* Initially, we use kaem, not bash. */
|
||||||
int using_bash = 0;
|
int bash_build = 0;
|
||||||
|
|
||||||
FILE *out = start_script(counter, using_bash);
|
FILE *out = start_script(counter, bash_build);
|
||||||
counter += 1;
|
counter += 1;
|
||||||
|
|
||||||
Directive *directive;
|
Directive *directive;
|
||||||
|
|
@ -528,24 +548,24 @@ void generate(Directive *directives) {
|
||||||
pass_no += 1;
|
pass_no += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
output_build(out, directive, pass_no, using_bash);
|
output_build(out, directive, pass_no, bash_build);
|
||||||
if (strncmp(directive->arg, "bash-", 5) == 0) {
|
if (strncmp(directive->arg, "bash-", 5) == 0) {
|
||||||
if (!using_bash) {
|
if (!bash_build) {
|
||||||
/*
|
/*
|
||||||
* We are transitioning from bash to kaem, the point at which "early
|
* We are transitioning from bash to kaem, the point at which "early
|
||||||
* preseed" occurs. So generate the preseed jump script at this point.
|
* preseed" occurs. So generate the preseed jump script at this point.
|
||||||
*/
|
*/
|
||||||
generate_preseed_jump(counter);
|
generate_preseed_jump(counter);
|
||||||
}
|
}
|
||||||
using_bash = 1;
|
bash_build = 1;
|
||||||
/* Create call to new script. */
|
/* Create call to new script. */
|
||||||
output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0);
|
output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0);
|
||||||
fclose(out);
|
fclose(out);
|
||||||
out = start_script(counter, using_bash);
|
out = start_script(counter, bash_build);
|
||||||
counter += 1;
|
counter += 1;
|
||||||
}
|
}
|
||||||
} else if (directive->type == TYPE_IMPROVE) {
|
} else if (directive->type == TYPE_IMPROVE) {
|
||||||
output_call_script(out, "improve", directive->arg, using_bash, 1);
|
output_call_script(out, "improve", directive->arg, bash_build, 1);
|
||||||
} else if (directive->type == TYPE_JUMP) {
|
} else if (directive->type == TYPE_JUMP) {
|
||||||
/*
|
/*
|
||||||
* Create /init to call new script.
|
* Create /init to call new script.
|
||||||
|
|
@ -553,7 +573,7 @@ void generate(Directive *directives) {
|
||||||
* moving that to /init at the appropriate time.
|
* moving that to /init at the appropriate time.
|
||||||
*/
|
*/
|
||||||
filename = calloc(MAX_STRING, sizeof(char));
|
filename = calloc(MAX_STRING, sizeof(char));
|
||||||
if (using_bash) {
|
if (bash_build) {
|
||||||
fputs("mv /init /init.bak\n", out);
|
fputs("mv /init /init.bak\n", out);
|
||||||
/* Move new init to /init. */
|
/* Move new init to /init. */
|
||||||
strcpy(filename, "/init.");
|
strcpy(filename, "/init.");
|
||||||
|
|
@ -572,7 +592,7 @@ void generate(Directive *directives) {
|
||||||
fputs("chmod 755 /init\n", out);
|
fputs("chmod 755 /init\n", out);
|
||||||
}
|
}
|
||||||
|
|
||||||
output_call_script(out, "jump", directive->arg, using_bash, 1);
|
output_call_script(out, "jump", directive->arg, bash_build, 1);
|
||||||
fclose(out);
|
fclose(out);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -581,7 +601,7 @@ void generate(Directive *directives) {
|
||||||
*/
|
*/
|
||||||
add_to_fiwix_filelist(filename);
|
add_to_fiwix_filelist(filename);
|
||||||
|
|
||||||
if (using_bash) {
|
if (bash_build) {
|
||||||
out = fopen(filename, "w");
|
out = fopen(filename, "w");
|
||||||
if (out == NULL) {
|
if (out == NULL) {
|
||||||
fputs("Error opening /init\n", stderr);
|
fputs("Error opening /init\n", stderr);
|
||||||
|
|
@ -596,12 +616,12 @@ void generate(Directive *directives) {
|
||||||
}
|
}
|
||||||
fputs("set -ex\n", out);
|
fputs("set -ex\n", out);
|
||||||
}
|
}
|
||||||
output_call_script(out, "", int2str(counter, 10, 0), using_bash, 0);
|
output_call_script(out, "", int2str(counter, 10, 0), bash_build, 0);
|
||||||
fclose(out);
|
fclose(out);
|
||||||
out = start_script(counter, using_bash);
|
out = start_script(counter, bash_build);
|
||||||
counter += 1;
|
counter += 1;
|
||||||
} else if (directive->type == TYPE_MAINT) {
|
} else if (directive->type == TYPE_MAINT) {
|
||||||
output_call_script(out, "maint", directive->arg, using_bash, 1);
|
output_call_script(out, "maint", directive->arg, bash_build, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(out);
|
fclose(out);
|
||||||
|
|
|
||||||
|
|
@ -16,29 +16,29 @@ d5fcce4baea5e11f983a7e4b7148545ab6720bb4e010898c73387f6711be67f4 autoconf-2.64_
|
||||||
57100612d902537b72ee2fd3dfecc903f2ea3959f1a480af87c6a1ef9a9d7c03 automake-1.16.3_0.tar.bz2
|
57100612d902537b72ee2fd3dfecc903f2ea3959f1a480af87c6a1ef9a9d7c03 automake-1.16.3_0.tar.bz2
|
||||||
1c7e09ac08f156960420fca1f6e8560c1855bf01b001a0648b56153d6ceb9c28 automake-1.6.3_0.tar.bz2
|
1c7e09ac08f156960420fca1f6e8560c1855bf01b001a0648b56153d6ceb9c28 automake-1.6.3_0.tar.bz2
|
||||||
444131776779d1f27628088a817bfb8c9aa85f4b036b934794a71e484ec9bd70 automake-1.6.3_1.tar.bz2
|
444131776779d1f27628088a817bfb8c9aa85f4b036b934794a71e484ec9bd70 automake-1.6.3_1.tar.bz2
|
||||||
ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2
|
|
||||||
e8ff13753943e43972a8cf1672819f001718ed38e5497cf7b554c21a507ba22b automake-1.7.8_0.tar.bz2
|
e8ff13753943e43972a8cf1672819f001718ed38e5497cf7b554c21a507ba22b automake-1.7.8_0.tar.bz2
|
||||||
|
ef08694bf8e78ffcf56f9c8a63b0f189e301c06f02ab240e15e4c7fe354c2a0d automake-1.7_0.tar.bz2
|
||||||
9922651b64ad2e29b944082f26db223008220155048f25d64df1f6d82071ff1c automake-1.8.5_0.tar.bz2
|
9922651b64ad2e29b944082f26db223008220155048f25d64df1f6d82071ff1c automake-1.8.5_0.tar.bz2
|
||||||
c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6_0.tar.bz2
|
c5807850a377e4bb9aa4121d9781d145bdd80327626a9419630a75ce2c8d9c71 automake-1.9.6_0.tar.bz2
|
||||||
f8a55bf656f950ee3c5cea48af03f552166f6db9926b78c78843f3cc52a6e22d bash-5.2.15_0.tar.bz2
|
f8a55bf656f950ee3c5cea48af03f552166f6db9926b78c78843f3cc52a6e22d bash-5.2.15_0.tar.bz2
|
||||||
ebc631ee8e9382650005984ec5f3910492ccb6fb2656b4c0af0f4afc16998906 bc-1.07.1_0.tar.bz2
|
ebc631ee8e9382650005984ec5f3910492ccb6fb2656b4c0af0f4afc16998906 bc-1.07.1_0.tar.bz2
|
||||||
3126d6539138d8078bd13d7f8b7b3e2ca4719e3c49d98f8490c0f061bf72d18f binutils-2.30_0.tar.bz2
|
b21f77069ca847268c115b7305da5927acebc59d89e9cd82d8ac416c126f3f0b binutils-2.30_0.tar.bz2
|
||||||
da658346866061324b92a6b734561257acfdb981783ad5794d67a0cd56e14e58 binutils-2.41_0.tar.bz2
|
da658346866061324b92a6b734561257acfdb981783ad5794d67a0cd56e14e58 binutils-2.41_0.tar.bz2
|
||||||
026447a32ab08a8a5150bab82a2f150af4a2ed90c47cfde631e1460eaed019aa binutils-2.41_1.tar.bz2
|
026447a32ab08a8a5150bab82a2f150af4a2ed90c47cfde631e1460eaed019aa binutils-2.41_1.tar.bz2
|
||||||
f0bb18831983493b82fde53917e8d16c6a380761ac5e71e14769a82193fee788 bison-2.3_0.tar.bz2
|
f0bb18831983493b82fde53917e8d16c6a380761ac5e71e14769a82193fee788 bison-2.3_0.tar.bz2
|
||||||
cb93657e111253d3ed8935686d50a55bed0ebc4c3bed045d659ba9058ba0fea1 bison-3.4.1_0.tar.bz2
|
76cb8b9752d82afa28789ccd5dcb9fd7ee44b605c2fd0fd5800e88c75f77593e bison-3.4.1_0.tar.bz2
|
||||||
2b79a739789a70a5f968c4b41c4f526bffef07fb36df4358121685630c0c9969 bison-3.4.1_1.tar.bz2
|
485d20ada934b700460404ceef934788c6e0bd3e3c7be0ac4e8f337909a9e3d9 bison-3.4.1_1.tar.bz2
|
||||||
41340ed0e496f9e120058f41eaa43b4c9f9e535d8be2d0dc277551b5995a141b bison-3.4.1_2.tar.bz2
|
fcaab66694e70e8780b96e2d0dfd3c913427a741b494f820b595eb9617460e3e bison-3.4.1_2.tar.bz2
|
||||||
6d5e4debdec03aee096dbcefcad878fb5c6a069f895ee7ade878d9eeb97fb83e bison-3.4.2_0.tar.bz2
|
6d5e4debdec03aee096dbcefcad878fb5c6a069f895ee7ade878d9eeb97fb83e bison-3.4.2_0.tar.bz2
|
||||||
9ba54901cb606fa71476c828a215de0c738470f91ed9fd27d8ceb6a23f14d895 bzip2-1.0.8_0.tar.bz2
|
ca7403a7503e8f3bb55e6c5bd54571b8c061b11c96e50ee89e006df6011d1518 bzip2-1.0.8_0.tar.bz2
|
||||||
543214998317d764595d3dd247a1fb2e0803ad77978b8474bd24d64c161b9530 ca-certificates-3.95_0.tar.bz2
|
543214998317d764595d3dd247a1fb2e0803ad77978b8474bd24d64c161b9530 ca-certificates-3.95_0.tar.bz2
|
||||||
e790ce4bd86869a93a435aca28658a70e33049388058580bd8da453e2cb03603 coreutils-5.0_0.tar.bz2
|
7450bb38caaa633f8c11269fed44eb680c6ba03bb0e19c18fce3b2450f80e358 coreutils-5.0_0.tar.bz2
|
||||||
34c9558f0101773b67bc4e0c9148543e65435344d004396e629d110f0392d3bd coreutils-6.10_0.tar.bz2
|
c95fd8c51c3bfbd4d08a4a50d0033ee85394e6efe4ff82703c050e4dbc4347bf coreutils-6.10_0.tar.bz2
|
||||||
f49900486ae7f0c8107d729b71ede155ee44544cdf8d562b50fbea4095bd05b2 coreutils-8.32_0.tar.bz2
|
f49900486ae7f0c8107d729b71ede155ee44544cdf8d562b50fbea4095bd05b2 coreutils-8.32_0.tar.bz2
|
||||||
6a10f5258650ae75e92eb7aa1a5e6107b72c8b6419a4f64272262a1545c43161 curl-8.5.0_0.tar.bz2
|
6a10f5258650ae75e92eb7aa1a5e6107b72c8b6419a4f64272262a1545c43161 curl-8.5.0_0.tar.bz2
|
||||||
f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2
|
f9efd6600ceb91918078078ff44a33f2a4fb4a59edb804866aebd288c2cfb24e curl-8.5.0_1.tar.bz2
|
||||||
1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2
|
1d4dec2d1885a6b5499a0f0d55e9c2c65dab532c4c593d848b6a542f67789627 dhcpcd-10.0.1_0.tar.bz2
|
||||||
0858dc91cf8a6c00d04ec50c31ce06d80f930b28d188d636dacbbbb593b284e9 diffutils-2.7_0.tar.bz2
|
abb9f6fe46c57ea809100b71497e04905deaad345d64485532bf6ef7f2a07f2c diffutils-2.7_0.tar.bz2
|
||||||
bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2
|
bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0.tar.bz2
|
||||||
3a4c5143a241364019afd39af067f1e8433bab78b04096870d9bf2c70ec6ded8 e2fsprogs-1.45.7_0.tar.bz2
|
3a4c5143a241364019afd39af067f1e8433bab78b04096870d9bf2c70ec6ded8 e2fsprogs-1.45.7_0.tar.bz2
|
||||||
9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2
|
9c6f7e156f299f1d0948537e28f00d40e727a3debae3cce158e9bce827136214 ed-1.4_0.tar.bz2
|
||||||
|
|
@ -46,8 +46,8 @@ bda6afcd3a390a34a57443269a4857ccc470129f7a557981778c145fd841cbd1 dist-3.5-236_0
|
||||||
eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2
|
eec07e0d710ed3dd8d0ba6a1ec6ca9f1fa3a611bbb225195435679175317bf90 findutils-4.2.33_0.tar.bz2
|
||||||
41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2
|
41902ec0383ea977a8d008dee37150e022e0714cd99f54c37f29c153464b758a flex-2.5.11_0.tar.bz2
|
||||||
b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2
|
b3a8d59229289ca5a1de6a24c9c828d2847144f6662e0d5b7f41e7ff6e57abaa flex-2.5.33_0.tar.bz2
|
||||||
349c9a7cb1c90533627fb6c97f2e3cf7ae57a49a4e92ed46d660bbecacd07433 flex-2.6.4_0.tar.bz2
|
57f72a4d1cb89dc1e59af0228fddc0ea97a3588984114f702f142c82aeeef493 flex-2.6.4_0.tar.bz2
|
||||||
b12ef4701c3d2e531e314776a858effb49a33595d901663263a4273a8a59d77c gawk-3.0.4_0.tar.bz2
|
f0f1471e4a5ff95749bd655c145311cc03eec80525f2bb0b9b3ac3ff8be29e0b gawk-3.0.4_0.tar.bz2
|
||||||
6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2
|
6de1c1380026ef9948387e665610185b6014f47a80453177a6c81898c95cbbd3 gc-8.0.4_0.tar.bz2
|
||||||
c99d080cf17ac3f75cbae67095cb76220a92d96d877c92c896a7f05c9c94e92d gcc-10.4.0_0.tar.bz2
|
c99d080cf17ac3f75cbae67095cb76220a92d96d877c92c896a7f05c9c94e92d gcc-10.4.0_0.tar.bz2
|
||||||
e0c9e7f4f0cd0d5027f2a38eb262f883133c31ac9ec93ee6afa5abc028096bc0 gcc-13.1.0_0.tar.bz2
|
e0c9e7f4f0cd0d5027f2a38eb262f883133c31ac9ec93ee6afa5abc028096bc0 gcc-13.1.0_0.tar.bz2
|
||||||
|
|
@ -57,7 +57,7 @@ c1bf792e90df13bf7a24d3f8ce3939fd96ff61b8117e4dcef75605974f3fcf25 gcc-4.0.4_1.ta
|
||||||
dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0.tar.bz2
|
dc67fc1b132fa3945349efe74c5b2197bd0b6babf4d29d2deddd04f09d9af680 gettext-0.21_0.tar.bz2
|
||||||
309282ba840f80b5e10897b1221f3ff3329b9e05b982c788d03652f411974524 gmp-6.2.1_0.tar.bz2
|
309282ba840f80b5e10897b1221f3ff3329b9e05b982c788d03652f411974524 gmp-6.2.1_0.tar.bz2
|
||||||
62edfa633f64202b2d29199d11d56a897654a441c7ae39a4d59ca5fe75199f61 gperf-3.1_0.tar.bz2
|
62edfa633f64202b2d29199d11d56a897654a441c7ae39a4d59ca5fe75199f61 gperf-3.1_0.tar.bz2
|
||||||
23d6f3bf4a60708ebc66d778c536616a728b378defff9f39ee9d1c2fd0cfdd87 grep-2.4_0.tar.bz2
|
276e073496931ff7d4caaabb53079412b88de953def88aec966c1f8506293e88 grep-2.4_0.tar.bz2
|
||||||
8e612afb9a439aa8bf5db0fc2589eec890a6017690412d5c8e88a5838730b42c grep-3.7_0.tar.bz2
|
8e612afb9a439aa8bf5db0fc2589eec890a6017690412d5c8e88a5838730b42c grep-3.7_0.tar.bz2
|
||||||
e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2
|
e2a85aad6d51e52c9a30afeed058f95172fde1215f77243549274672990f6237 guile-3.0.9_0.tar.bz2
|
||||||
8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2
|
8d2015b87337abbf287f7a39ee4cf53514120b5d3e90a93fe7d533dcc43f14fa help2man-1.36.4_0.tar.bz2
|
||||||
|
|
@ -70,47 +70,47 @@ b39826742e236890f3562cdf19492e7ef4224b271f3e75ddeab1f07982b03ebe libffi-3.3_0.t
|
||||||
daae709e98d2df2190d1d13b4e86f7f3fe90fa7a975282fe0bb03289b6539f29 libtool-2.2.4_0.tar.bz2
|
daae709e98d2df2190d1d13b4e86f7f3fe90fa7a975282fe0bb03289b6539f29 libtool-2.2.4_0.tar.bz2
|
||||||
6cefa575362149620f8008a32c8af54f0198a18bc6ab910bd3cead196c1507d7 libtool-2.4.7_0.tar.bz2
|
6cefa575362149620f8008a32c8af54f0198a18bc6ab910bd3cead196c1507d7 libtool-2.4.7_0.tar.bz2
|
||||||
503007bbcddcf4e49d26514c59b4c9501f8b42f0c994a59dfdc388b1ae6b7900 libunistring-0.9.10_0.tar.bz2
|
503007bbcddcf4e49d26514c59b4c9501f8b42f0c994a59dfdc388b1ae6b7900 libunistring-0.9.10_0.tar.bz2
|
||||||
fd2264a08cbeeb28f3e2580cba174376a154c77b0ef6cbf67b55fd13c0987f52 linux-4.9.10_0.tar.bz2
|
576c04a4b2ccbfe6b48f5f16e8bd59469e359bdc77458ed82a4025da98ad6dcb linux-4.9.10_0.tar.bz2
|
||||||
d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2
|
d15c922973c15a8206e09020e8cfe6a78f7e93614de212f2b37ff80163799c6c linux-headers-4.9.10_0.tar.bz2
|
||||||
fdb3dce8af3eb6c0745f103989f1bae0bfe9156390215f97240a75ed77ae4acd m4-1.4.7_0.tar.bz2
|
bd3885a389d3e058081e099850f95aa7938ce1d9b88a187aea6b7196124fbcfe m4-1.4.7_0.tar.bz2
|
||||||
e69554b0a77b419ddd5d0a0e418ba4005ecd0f6784c92a6928a0270bd929a098 make-3.82_0.tar.bz2
|
e69554b0a77b419ddd5d0a0e418ba4005ecd0f6784c92a6928a0270bd929a098 make-3.82_0.tar.bz2
|
||||||
6d24960d6a987f68a7e0e3abf6edb52d2e0fe4c86f6ba45327e9634dbf7d40b4 make-4.2.1_0.tar.bz2
|
6d24960d6a987f68a7e0e3abf6edb52d2e0fe4c86f6ba45327e9634dbf7d40b4 make-4.2.1_0.tar.bz2
|
||||||
17cd976bc0f6e897c6fffe43dd7c55d93ce0adadf1b4dc72925b80e2d266519f mpc-1.2.1_0.tar.bz2
|
17cd976bc0f6e897c6fffe43dd7c55d93ce0adadf1b4dc72925b80e2d266519f mpc-1.2.1_0.tar.bz2
|
||||||
98a9f55c01ed375fae21913284e7fa07ff434c0810f34d791f3fbaa1df221302 mpfr-4.1.0_0.tar.bz2
|
98a9f55c01ed375fae21913284e7fa07ff434c0810f34d791f3fbaa1df221302 mpfr-4.1.0_0.tar.bz2
|
||||||
2fbbd3d8e56173aa6950fb2d5be9b1af6b25735ac7ba79e1938fff232a801418 musl-1.1.24_0.tar.bz2
|
3561678ad3b8ed5a085cdd86baefb18a675c3cecca8e6e8e086b17007e918370 musl-1.1.24_0.tar.bz2
|
||||||
5fe0f457fd577bfbef98d85cc572ce3a30e17c004eeff18a298a6db13126ea61 musl-1.1.24_1.tar.bz2
|
40a35b525f21dce1007e17a3557677d49477df753e715579c37438d5581b0dcd musl-1.1.24_1.tar.bz2
|
||||||
d58d85c4be26d90f111f273929a4998d05294fe5aa37c4842d5aecaa593e6079 musl-1.1.24_2.tar.bz2
|
d58d85c4be26d90f111f273929a4998d05294fe5aa37c4842d5aecaa593e6079 musl-1.1.24_2.tar.bz2
|
||||||
81f79a0faf58e105c5f12d9f538d3ea7578a3b361e633ab8f47324ec23ec9de6 musl-1.2.4_0.tar.bz2
|
81f79a0faf58e105c5f12d9f538d3ea7578a3b361e633ab8f47324ec23ec9de6 musl-1.2.4_0.tar.bz2
|
||||||
6dc5e763b747b66f72692c6820d7f46b7f4cf2e2fe05229a1d01c03919c1c936 musl-1.2.4_1.tar.bz2
|
6dc5e763b747b66f72692c6820d7f46b7f4cf2e2fe05229a1d01c03919c1c936 musl-1.2.4_1.tar.bz2
|
||||||
820203286127e7c22cee9f1b3cff664431f10d14c3f22f00b3e771fd849fd449 musl-1.2.4_2.tar.bz2
|
820203286127e7c22cee9f1b3cff664431f10d14c3f22f00b3e771fd849fd449 musl-1.2.4_2.tar.bz2
|
||||||
c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l_0.tar.bz2
|
c490016e49bbf77e7f63071f7aa60e8290a0c67f017846def1c3f65bd10d5712 openssl-1.1.1l_0.tar.bz2
|
||||||
71864d042cdc564b65eab21360902c714e9b43f80a19689c5600589529b267e7 patch-2.7.6_0.tar.bz2
|
71864d042cdc564b65eab21360902c714e9b43f80a19689c5600589529b267e7 patch-2.7.6_0.tar.bz2
|
||||||
35dff94213d6b4648ac857daff76817048723acc01a07b428f031be854b0dc63 perl-5.000_0.tar.bz2
|
5ae7fe43d62d1064c123d9813017015e5e8d5107d0e70f0199576141416ff81d perl-5.000_0.tar.bz2
|
||||||
ea93a29bd049af498e34ceebed4f1b747aed1713bd2d787e03b65c1031806e71 perl-5.003_0.tar.bz2
|
4994c55e3832649600f190079bd4779c463478a092b167098b1d00eff3358fbe perl-5.003_0.tar.bz2
|
||||||
a6afef8623ffddd4d50c1688d5c6a03a696e9d06ae903412bf99edb2d6b65a6d perl5.004-05_0.tar.bz2
|
|
||||||
485c76bec0aa901de0c4cfce00e3e7a203d7342895cce60dbc9162fd8a999e90 perl5.005-03_0.tar.bz2
|
|
||||||
74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2
|
74d64a8af080022432fa94dba449090419d25b103d247710dc0b6102a4ad86a6 perl-5.10.1_0.tar.bz2
|
||||||
fdccd3ba27a44d2149f159040414a04b39bfc72673ba36f50051b61199cc425c perl-5.32.1_0.tar.bz2
|
fdccd3ba27a44d2149f159040414a04b39bfc72673ba36f50051b61199cc425c perl-5.32.1_0.tar.bz2
|
||||||
f9e5cd15fa976ba1b3892640bb2f39b35e0cd1147bf98a92d26e3ab1dc6b86f3 perl-5.6.2_0.tar.bz2
|
101a791b6843b997ec10d5ce6dc32af2637f687772674eb6f1cdc1c8ff836a03 perl-5.6.2_0.tar.bz2
|
||||||
|
ae6c84e55c2d9bcd7b80bf780ae6921fe890608123c9ba904e1b7d90759ade3d perl5.004-05_0.tar.bz2
|
||||||
|
8cedd2240bbbd5bca65a1362998ed73884756aa7ff5208226d3fa22c68868052 perl5.005-03_0.tar.bz2
|
||||||
1b9d4260edf7b2241d10e4c4ad17d0f90047bd4bf42f2487a7133902529e9dfe pkg-config-0.29.2_0.tar.bz2
|
1b9d4260edf7b2241d10e4c4ad17d0f90047bd4bf42f2487a7133902529e9dfe pkg-config-0.29.2_0.tar.bz2
|
||||||
1e882c3206f9d1de2a9be8b5c6ae4cc65e80a4de607bd521058577bf4169c0e9 python-2.0.1_0.tar.bz2
|
1e882c3206f9d1de2a9be8b5c6ae4cc65e80a4de607bd521058577bf4169c0e9 python-2.0.1_0.tar.bz2
|
||||||
aba9710341db75b78c7bc1eb4ef45b9496e23f7a356128af6c2b116ee0f3f31a python-2.0.1_1.tar.bz2
|
aba9710341db75b78c7bc1eb4ef45b9496e23f7a356128af6c2b116ee0f3f31a python-2.0.1_1.tar.bz2
|
||||||
d497c9b614194b941620bb5c5111fc72eca8cafd7d4f476eacb24fb7f909b614 python-2.3.7_0.tar.bz2
|
d497c9b614194b941620bb5c5111fc72eca8cafd7d4f476eacb24fb7f909b614 python-2.3.7_0.tar.bz2
|
||||||
8a977205933431c2a4207f647cb683b570dfdb0146e21abf5fab3f8426e1356b python-2.3.7_1.tar.bz2
|
8a977205933431c2a4207f647cb683b570dfdb0146e21abf5fab3f8426e1356b python-2.3.7_1.tar.bz2
|
||||||
34e5083ed3e72da5aa5950acebf9e95464089d693e3d6a047a2b69b6103f5ca9 python-2.5.6_0.tar.bz2
|
34e5083ed3e72da5aa5950acebf9e95464089d693e3d6a047a2b69b6103f5ca9 python-2.5.6_0.tar.bz2
|
||||||
52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2
|
|
||||||
3508248f299b73c50e3607c4c294d40face05170476a5026b0821aed69025863 python-3.1.5_0.tar.bz2
|
3508248f299b73c50e3607c4c294d40face05170476a5026b0821aed69025863 python-3.1.5_0.tar.bz2
|
||||||
12b1ffc7ec98ba8f807160b93ba69a694d5395567c3bcac1e49e8f8d1d50de43 python-3.1.5_1.tar.bz2
|
12b1ffc7ec98ba8f807160b93ba69a694d5395567c3bcac1e49e8f8d1d50de43 python-3.1.5_1.tar.bz2
|
||||||
|
52ffb1ea6f2b893a6fd26f930c8ff63f78ddcc31ac3ec9c2ddade555205aa1ef python-3.11.1_0.tar.bz2
|
||||||
60b93253a2078f849f81e7e1ed6233e30702f03b1893640eee95671d814f5514 python-3.3.7_0.tar.bz2
|
60b93253a2078f849f81e7e1ed6233e30702f03b1893640eee95671d814f5514 python-3.3.7_0.tar.bz2
|
||||||
da7c8ec579dd225c0d8bee63d95aeeb27ac2d5a60d4eefe298508cbf86bf506c python-3.4.10_0.tar.bz2
|
da7c8ec579dd225c0d8bee63d95aeeb27ac2d5a60d4eefe298508cbf86bf506c python-3.4.10_0.tar.bz2
|
||||||
0be505f63205b4bc1b1421896c610468ad1a2194bbc4c9abf58f61685c2023d1 python-3.8.16_0.tar.bz2
|
0be505f63205b4bc1b1421896c610468ad1a2194bbc4c9abf58f61685c2023d1 python-3.8.16_0.tar.bz2
|
||||||
6874e16afb9a0cfa960416f0ce721e81b4cfb48992e827788df0ed1feb47df1d sed-4.0.9_0.tar.bz2
|
34c51d3df85585a8aee7691b3500a5c3c7442b06a6f57231b76970bdd6e99bf9 sed-4.0.9_0.tar.bz2
|
||||||
e8daec00b2c2de7b18efbec057dc9290eed06668806c6f5a48914d4a5cd95eb4 sed-4.8_0.tar.bz2
|
e8daec00b2c2de7b18efbec057dc9290eed06668806c6f5a48914d4a5cd95eb4 sed-4.8_0.tar.bz2
|
||||||
912d8f344104f1322255d6210c7c7e1371413ab530b2c6796e6aa565c74bf647 tar-1.34_0.tar.bz2
|
912d8f344104f1322255d6210c7c7e1371413ab530b2c6796e6aa565c74bf647 tar-1.34_0.tar.bz2
|
||||||
d5d0df210248a385ae255cc5651369108e9a71fa8668821a6b1ed30a8d7364a1 tcc-0.9.27_0.tar.bz2
|
1667937d5d646f2bb7ec7ab54a23ddd65a0ae3ca7d5e597f3fbcd5163031d2ef tcc-0.9.27_0.tar.bz2
|
||||||
53703e68b3d5597dc05b0982331ad87e437f616165e1a289d429d54773ab02fc tcc-0.9.27_1.tar.bz2
|
b20cea098c8ff635a0ce9f99430d7c9a75d081194941ab54dc92dbc8af3776a4 tcc-0.9.27_1.tar.bz2
|
||||||
74c26384d3bde54a4d0bac4242559593872f6dcfc5856acbe2c4aea5dd62f941 tcc-0.9.27_2.tar.bz2
|
8e8cc802fccdb907cd74501dccce1ee85ffb0150b33b4719f86d6720f5b09a7a tcc-0.9.27_2.tar.bz2
|
||||||
0f7e12be49c697a2758a6e1acae736b3bac208eacfeae1e5155d8159f9a30bd2 tcc-0.9.27_3.tar.bz2
|
d4fe9460ca561fc2f546f9730f19f541b17dac0bcc42eb190abba856588c3593 tcc-0.9.27_3.tar.bz2
|
||||||
50ebaa1d8fcc4a03a43d431eb71e2f435cc8712ae47d400564df3716037d553a texinfo-6.7_0.tar.bz2
|
50ebaa1d8fcc4a03a43d431eb71e2f435cc8712ae47d400564df3716037d553a texinfo-6.7_0.tar.bz2
|
||||||
229d9189adac10ad2a2c76fc147a4c317fc5b34026cef1c47edc9159aee480da util-linux-2.19.1_0.tar.bz2
|
229d9189adac10ad2a2c76fc147a4c317fc5b34026cef1c47edc9159aee480da util-linux-2.19.1_0.tar.bz2
|
||||||
ecdb7ffeb9256f6a9760be70969fe5dea9cde6a538cc88595281fe44340e98a1 which-2.21_0.tar.bz2
|
ecdb7ffeb9256f6a9760be70969fe5dea9cde6a538cc88595281fe44340e98a1 which-2.21_0.tar.bz2
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
lib.a: allocator.o areadlink.o argmatch.o asnprintf.o basename.o basename-lgpl.o binary-io.o bitrotate.o bitset.o bitsetv.o calloc.o canonicalize-lgpl.o careadlinkat.o c-ctype.o cloexec.o close.o closeout.o close-stream.o concat-filename.o c-strcasecmp.o c-strncasecmp.o dirname.o dirname-lgpl.o dup2.o dup-safer.o dup-safer-flag.o exitfail.o fatal-signal.o fd-hook.o fd-safer.o fd-safer-flag.o fopen.o fopen-safer.o fprintf.o frexp.o frexpl.o fstat.o getdtablesize.o get-errno.o gethrxtime.o getopt.o getprogname.o getrusage.o gettime.o gettimeofday.o gl_array_list.o gl_list.o gl_xlist.o hard-locale.o hash.o isnan.o isnand.o isnanf.o isnanl.o itold.o ldexpl.o localcharset.o localtime-buffer.o lstat.o main.o malloca.o malloc.o math.o mbrtowc.o mbsinit.o mbswidth.o memchr.o msvc-inval.o obstack.o obstack_printf.o open.o path-join.o perror.o pipe2-safer.o pipe-safer.o printf-args.o printf.o printf-frexp.o printf-frexpl.o printf-parse.o progname.o progreloc.o quotearg.o raise.o rawmemchr.o readlink.o realloc.o relocatable.o rename.o rmdir.o setenv.o sig-handler.o signbitd.o signbitf.o signbitl.o spawnattr_destroy.o spawnattr_init.o sprintf.o stat.o stat-time.o stat-w32.o stpcpy.o strchrnul.o strdup.o strerror.o stripslash.o strndup.o strnlen.o strverscmp.o timespec.o timevar.o unistd.o unlink.o unsetenv.o vasnprintf.o wait-process.o wctype-h.o xalloc-die.o xconcat-filename.o xmalloc.o xmemdup0.o xreadlink.o xsize.o xstrndup.o xtime.o yyerror.o error.o bitset/array.o bitset/list.o bitset/stats.o bitset/table.o bitset/vector.o fseterr.o spawn-pipe.o
|
lib.a: allocator.o areadlink.o argmatch.o asnprintf.o basename.o basename-lgpl.o binary-io.o bitrotate.o bitset.o bitsetv.o calloc.o canonicalize-lgpl.o careadlinkat.o c-ctype.o cloexec.o close.o closeout.o close-stream.o concat-filename.o c-strcasecmp.o c-strncasecmp.o dirname.o dirname-lgpl.o dup2.o dup-safer.o dup-safer-flag.o exitfail.o fatal-signal.o fd-hook.o fd-safer.o fd-safer-flag.o fopen.o fopen-safer.o fprintf.o frexp.o frexpl.o fstat.o getdtablesize.o get-errno.o gethrxtime.o getprogname.o getrusage.o gettime.o gettimeofday.o gl_array_list.o gl_list.o gl_xlist.o hard-locale.o hash.o isnan.o isnand.o isnanf.o isnanl.o itold.o ldexpl.o localcharset.o localtime-buffer.o lstat.o main.o malloca.o malloc.o math.o mbrtowc.o mbsinit.o mbswidth.o memchr.o msvc-inval.o obstack.o obstack_printf.o open.o path-join.o perror.o pipe2-safer.o pipe-safer.o printf-args.o printf.o printf-frexp.o printf-frexpl.o printf-parse.o progname.o progreloc.o quotearg.o raise.o rawmemchr.o readlink.o realloc.o relocatable.o rename.o rmdir.o setenv.o sig-handler.o signbitd.o signbitf.o signbitl.o spawnattr_destroy.o spawnattr_init.o sprintf.o stat.o stat-time.o stat-w32.o stpcpy.o strchrnul.o strdup.o strerror.o stripslash.o strndup.o strnlen.o strverscmp.o timespec.o timevar.o unistd.o unlink.o unsetenv.o vasnprintf.o wait-process.o wctype-h.o xalloc-die.o xconcat-filename.o xmalloc.o xmemdup0.o xreadlink.o xsize.o xstrndup.o xtime.o yyerror.o error.o bitset/array.o bitset/list.o bitset/stats.o bitset/table.o bitset/vector.o fseterr.o spawn-pipe.o
|
||||||
$(AR) r $@ $^
|
$(AR) r $@ $^
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ ALL=$(BINARIES) $(SRC_DIR)/cp $(SRC_DIR)/ls $(SRC_DIR)/install $(SRC_DIR)/md5sum
|
||||||
all: $(BINARIES) $(SRC_DIR)/cp $(SRC_DIR)/ls $(SRC_DIR)/install $(SRC_DIR)/md5sum $(SRC_DIR)/mv $(SRC_DIR)/rm $(SRC_DIR)/sha1sum
|
all: $(BINARIES) $(SRC_DIR)/cp $(SRC_DIR)/ls $(SRC_DIR)/install $(SRC_DIR)/md5sum $(SRC_DIR)/mv $(SRC_DIR)/rm $(SRC_DIR)/sha1sum
|
||||||
|
|
||||||
LIB_DIR = lib
|
LIB_DIR = lib
|
||||||
LIB_SRC = acl alloca posixtm posixver strftime getopt getopt1 hash hash-pjw addext argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode __fpending file-type fnmatch fopen-safer full-read full-write getline getstr gettime hard-locale human idcache isdir imaxtostr linebuffer localcharset long-options makepath mbswidth md5 memcasecmp memcoll modechange offtostr path-concat physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha stpcpy stripslash strtoimax strtoumax umaxtostr unicodeio userspec version-etc xgetcwd xgethostname xmalloc xmemcoll xnanosleep xreadlink xstrdup xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist regex canonicalize mkstemp memrchr euidaccess ftw obstack strverscmp strftime tsearch stat
|
LIB_SRC = acl alloca posixtm posixver strftime getopt getopt1 hash hash-pjw addext argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode __fpending file-type fnmatch fopen-safer full-read full-write getline getstr gettime hard-locale human idcache isdir imaxtostr linebuffer localcharset long-options makepath mbswidth md5 memcasecmp memcoll modechange offtostr path-concat physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha stpcpy stripslash umaxtostr unicodeio userspec version-etc xgetcwd xgethostname xmalloc xmemcoll xnanosleep xreadlink xstrdup xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist regex canonicalize mkstemp memrchr euidaccess ftw obstack strverscmp strftime tsearch stat
|
||||||
|
|
||||||
LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC)))
|
LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC)))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ ALL=$(BINARIES) $(SRC_DIR)/sha256sum
|
||||||
all: $(BINARIES) $(SRC_DIR)/sha256sum
|
all: $(BINARIES) $(SRC_DIR)/sha256sum
|
||||||
|
|
||||||
LIB_DIR = lib
|
LIB_DIR = lib
|
||||||
LIB_SRC = acl alloca getdate fprintftime posixtm posixver strftime getopt hash hash-pjw argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode fpending file-type fnmatch fopen-safer full-read full-write getline gettime hard-locale human idcache imaxtostr linebuffer localcharset long-options mbswidth md5 memcasecmp memcoll modechange offtostr physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha256 stpcpy stripslash umaxtostr unicodeio userspec version-etc version-etc-fsf xgetcwd xgethostname xmalloc xmemcoll xnanosleep readlink xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist canonicalize mkstemp memrchr euidaccess obstack strverscmp strftime xalloc-die close-stream tempname filenamecat xstrndup randint randread rand-isaac gethrxtime
|
LIB_SRC = acl alloca getdate fprintftime posixtm posixver strftime hash hash-pjw argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode fpending file-type fnmatch fopen-safer full-read full-write getline gettime hard-locale human idcache imaxtostr linebuffer localcharset long-options mbswidth md5 memcasecmp memcoll modechange offtostr physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha256 stpcpy stripslash umaxtostr unicodeio userspec version-etc version-etc-fsf xgetcwd xgethostname xmalloc xmemcoll xnanosleep readlink xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist canonicalize mkstemp memrchr euidaccess obstack strverscmp strftime xalloc-die close-stream tempname filenamecat xstrndup randint randread rand-isaac gethrxtime
|
||||||
|
|
||||||
LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC)))
|
LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC)))
|
||||||
|
|
||||||
|
|
|
||||||
24
steps/improve/after.sh
Normal file
24
steps/improve/after.sh
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# After bootstrap, drop to a shell if needed, then shut down cleanly.
|
||||||
|
|
||||||
|
. /steps/bootstrap.cfg
|
||||||
|
. /steps/env
|
||||||
|
|
||||||
|
if [ "${INTERACTIVE}" = True ]; then
|
||||||
|
env - PATH=${PREFIX}/bin PS1="\w # " bash -i
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${CHROOT}" = False ]; then
|
||||||
|
# ignore errors due to fstab or swapfile not existing
|
||||||
|
swapoff -a &> /dev/null || true
|
||||||
|
sync
|
||||||
|
# sysrq to avoid device busy; then mount to wait for it to finish
|
||||||
|
echo u > /proc/sysrq-trigger
|
||||||
|
mount -o remount,ro /
|
||||||
|
echo o > /proc/sysrq-trigger # power off
|
||||||
|
fi
|
||||||
|
|
@ -6,13 +6,22 @@
|
||||||
#
|
#
|
||||||
# Add the rest of the FHS that we will use and is not created pre-boot
|
# Add the rest of the FHS that we will use and is not created pre-boot
|
||||||
rm -rf /sbin /usr/sbin
|
rm -rf /sbin /usr/sbin
|
||||||
|
ln -s /usr/bin /usr/sbin
|
||||||
for d in bin lib sbin; do
|
for d in bin lib sbin; do
|
||||||
ln -s "usr/${d}" "/${d}"
|
ln -s "/usr/${d}" "/${d}" || true # these might exist if rerunning
|
||||||
done
|
done
|
||||||
mkdir -p /etc /run /var
|
|
||||||
test -d /proc || (mkdir /proc && mount -t proc proc /proc)
|
mkdir -p /etc /run /var/log /var/lock /var/spool /var/tmp /var/cache
|
||||||
test -d /sys || (mkdir /sys && mount -t sysfs sysfs /sys)
|
|
||||||
|
# can't use /dev/null before mounting /dev
|
||||||
|
mount | grep '/dev' &> /junk || (mkdir -p /dev; mount -t devtmpfs none /dev)
|
||||||
|
rm /junk &> /dev/null || true
|
||||||
|
|
||||||
|
mount | grep '/proc' &> /dev/null || (mkdir -p /proc; mount -t proc proc /proc)
|
||||||
|
mount | grep '/sys' &> /dev/null || (mkdir -p /sys; mount -t sysfs sysfs /sys)
|
||||||
# Make /tmp a ramdisk (speeds up configure etc significantly)
|
# Make /tmp a ramdisk (speeds up configure etc significantly)
|
||||||
test -d /tmp || (mkdir /tmp && mount -t tmpfs tmpfs /tmp)
|
mount | grep '/tmp' &> /dev/null || (mkdir -p /tmp; mount -t tmpfs tmpfs /tmp)
|
||||||
|
|
||||||
# Add /etc/resolv.conf
|
# Add /etc/resolv.conf
|
||||||
echo 'nameserver 1.1.1.1' > /etc/resolv.conf
|
echo 'nameserver 1.1.1.1' > /etc/resolv.conf
|
||||||
|
echo 'nameserver 1.1.1.1' > /etc/resolv.conf.head
|
||||||
|
|
|
||||||
14
steps/improve/finalize_job_count.sh
Normal file
14
steps/improve/finalize_job_count.sh
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2024 Gábor Stefanik <netrolller.3d@gmail.com>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# Finalize job count once SMP support is available
|
||||||
|
|
||||||
|
cat >> /steps/bootstrap.cfg <<- EOF
|
||||||
|
JOBS=${FINAL_JOBS}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
. /steps/bootstrap.cfg
|
||||||
|
. /steps/env
|
||||||
19
steps/improve/swap.sh
Normal file
19
steps/improve/swap.sh
Normal 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
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
unset GUILE_LOAD_PATH
|
unset GUILE_LOAD_PATH
|
||||||
|
|
||||||
cat > /steps/env <<- EOF
|
cat >> /steps/env <<- 'EOF'
|
||||||
export PATH=${PREFIX}/bin
|
export PATH=${PREFIX}/bin
|
||||||
PREFIX=${PREFIX}
|
PREFIX=${PREFIX}
|
||||||
LIBDIR=${LIBDIR}
|
LIBDIR=${LIBDIR}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ if [ "${KERNEL_BOOTSTRAP}" = True ]; then
|
||||||
find / -xdev -type d -printf "dir %p %m %U %G\n" >> /initramfs.list
|
find / -xdev -type d -printf "dir %p %m %U %G\n" >> /initramfs.list
|
||||||
find / -xdev -type f -printf "file %p %p %m %U %G\n" >> /initramfs.list
|
find / -xdev -type f -printf "file %p %p %m %U %G\n" >> /initramfs.list
|
||||||
find / -xdev -type l -printf "slink %p %l %m %U %G\n" >> /initramfs.list
|
find / -xdev -type l -printf "slink %p %l %m %U %G\n" >> /initramfs.list
|
||||||
find / -xdev -type c -or -type b -not -name "ram*" -printf "nod %p %m %U %G %y " -exec stat -c '%Hr %Lr' {} \; >> /initramfs.list
|
|
||||||
kexec-linux "/dev/ram1" "/boot/linux-4.9.10" "!$(command -v gen_init_cpio) /initramfs.list"
|
kexec-linux "/dev/ram1" "/boot/linux-4.9.10" "!$(command -v gen_init_cpio) /initramfs.list"
|
||||||
else
|
else
|
||||||
mkdir /etc
|
mkdir /etc
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,31 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
set -ex
|
set -e
|
||||||
|
# mount might fail if /etc doesn't exist because of fstab and mtab
|
||||||
|
mkdir -p /dev /etc
|
||||||
|
mount -t devtmpfs none /dev &> /junk || true # no /dev/null yet
|
||||||
|
rm /junk &> /dev/null || true
|
||||||
|
|
||||||
|
timeout=120
|
||||||
|
while ! dd if=/dev/${DISK} of=/dev/null bs=512 count=1; do
|
||||||
|
sleep 1
|
||||||
|
# shellcheck disable=SC2219
|
||||||
|
let timeout--
|
||||||
|
if [ "${timeout}" -le 0 ]; then
|
||||||
|
echo "Timeout reached for disk to become accessible"
|
||||||
|
false
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Create partition if it doesn't exist
|
# Create partition if it doesn't exist
|
||||||
if [ $(($(stat -c "%Lr" "/dev/${DISK}") % 8)) -eq 0 ]; then
|
if [ $(($(stat -c "%Lr" "/dev/${DISK}") % 8)) -eq 0 ]; then
|
||||||
echo "Creating partition table..."
|
echo "Creating partition table..."
|
||||||
echo ";" | sfdisk "/dev/${DISK}"
|
# Start at 1GiB, use -S32 -H64 to align to MiB rather than cylinder boundary
|
||||||
|
echo "2097152;" | sfdisk -uS -S32 -H64 --force "/dev/${DISK}"
|
||||||
fdisk -l "/dev/${DISK}"
|
fdisk -l "/dev/${DISK}"
|
||||||
echo "Creating ext4 partition..."
|
echo "Creating ext4 partition..."
|
||||||
mkfs.ext4 "/dev/${DISK}1"
|
mkfs.ext4 -F -F "/dev/${DISK}1"
|
||||||
DISK="${DISK}1"
|
DISK="${DISK}1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -27,5 +43,6 @@ mkdir -p /rootonly
|
||||||
# This doesn't recursively mount - that's why we're able to copy everything over
|
# This doesn't recursively mount - that's why we're able to copy everything over
|
||||||
mount --bind / /rootonly
|
mount --bind / /rootonly
|
||||||
cp -ar /rootonly/* /newroot/
|
cp -ar /rootonly/* /newroot/
|
||||||
|
sed -e 's/newroot//' /rootonly/etc/mtab | grep -v 'rootonly' > /newroot/etc/mtab
|
||||||
umount /rootonly
|
umount /rootonly
|
||||||
switch_root /newroot /init
|
switch_root /newroot /init
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
7d98c6ce71a3b45d86453d50b2bc91e651b31aac9615705bb73d09580b220997 /usr/bin/kexec-fiwix
|
f8c754de5bd9cf5a1b36dfea25e81f7b39c4e0145e10eebafccc8cdca5be91bd /usr/bin/kexec-fiwix
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
#include "multiboot1.h"
|
#include "multiboot1.h"
|
||||||
|
|
||||||
#define MULTIBOOT_MAGIC 0x2BADB002
|
#define MULTIBOOT_MAGIC 0x2BADB002
|
||||||
#define INITRD_MB 1152
|
#define INITRD_MB 1280
|
||||||
|
#define KEXEC_MB 256
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
/* Read the kernel */
|
/* Read the kernel */
|
||||||
|
|
@ -81,11 +82,11 @@ int main() {
|
||||||
char *bare_metal = getenv("BARE_METAL");
|
char *bare_metal = getenv("BARE_METAL");
|
||||||
if (bare_metal != NULL && strcmp(bare_metal, "True") == 0)
|
if (bare_metal != NULL && strcmp(bare_metal, "True") == 0)
|
||||||
{
|
{
|
||||||
sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=280000 kexec_cmdline=\"init=/init\"", INITRD_MB * 1024);
|
sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init consoleblank=0\"", INITRD_MB * 1024, KEXEC_MB * 1024);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=280000 kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024);
|
sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=fiwix.ext2 kexec_proto=linux kexec_size=%d kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024, KEXEC_MB * 1024);
|
||||||
}
|
}
|
||||||
char * boot_loader_name = "kexec-fiwix";
|
char * boot_loader_name = "kexec-fiwix";
|
||||||
|
|
||||||
|
|
@ -127,13 +128,13 @@ int main() {
|
||||||
|
|
||||||
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
||||||
pmultiboot_memory_map->addr = 0x00000000;
|
pmultiboot_memory_map->addr = 0x00000000;
|
||||||
pmultiboot_memory_map->len = 0x0009FC00;
|
pmultiboot_memory_map->len = 0x00080000;
|
||||||
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE;
|
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE;
|
||||||
pmultiboot_memory_map++;
|
pmultiboot_memory_map++;
|
||||||
|
|
||||||
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
||||||
pmultiboot_memory_map->addr = 0x0009FC00;
|
pmultiboot_memory_map->addr = 0x00080000;
|
||||||
pmultiboot_memory_map->len = 0x00000400;
|
pmultiboot_memory_map->len = 0x00020000;
|
||||||
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED;
|
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED;
|
||||||
pmultiboot_memory_map++;
|
pmultiboot_memory_map++;
|
||||||
|
|
||||||
|
|
@ -145,13 +146,13 @@ int main() {
|
||||||
|
|
||||||
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
||||||
pmultiboot_memory_map->addr = 0x00100000;
|
pmultiboot_memory_map->addr = 0x00100000;
|
||||||
pmultiboot_memory_map->len = 0xBFEE0000;
|
pmultiboot_memory_map->len = 0xBC000000;
|
||||||
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE;
|
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_AVAILABLE;
|
||||||
pmultiboot_memory_map++;
|
pmultiboot_memory_map++;
|
||||||
|
|
||||||
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
pmultiboot_memory_map->size = sizeof(multiboot_memory_map_t) - sizeof(multiboot_uint32_t);
|
||||||
pmultiboot_memory_map->addr = 0XBFFE0000;
|
pmultiboot_memory_map->addr = 0XBC000000;
|
||||||
pmultiboot_memory_map->len = 0x00020000;
|
pmultiboot_memory_map->len = 0x04000000;
|
||||||
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED;
|
pmultiboot_memory_map->type = MULTIBOOT_MEMORY_RESERVED;
|
||||||
pmultiboot_memory_map++;
|
pmultiboot_memory_map++;
|
||||||
|
|
||||||
|
|
@ -208,6 +209,7 @@ int main() {
|
||||||
0xF3, 0xA4, /* rep movsb */
|
0xF3, 0xA4, /* rep movsb */
|
||||||
0xB8, 0x00, 0x00, 0x00, 0x00, /* mov eax, 0x00000000 */
|
0xB8, 0x00, 0x00, 0x00, 0x00, /* mov eax, 0x00000000 */
|
||||||
0xBB, 0x00, 0x00, 0x00, 0x00, /* mov ebx, 0x00000000 */
|
0xBB, 0x00, 0x00, 0x00, 0x00, /* mov ebx, 0x00000000 */
|
||||||
|
0xFB, /* sti */
|
||||||
0xEA, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 /* jmp far 0x0008:0x00000000 */
|
0xEA, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00 /* jmp far 0x0008:0x00000000 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -217,7 +219,7 @@ int main() {
|
||||||
*((unsigned int *) &trampoline[11]) = INITRD_MB * 1024 * 1024;
|
*((unsigned int *) &trampoline[11]) = INITRD_MB * 1024 * 1024;
|
||||||
*((unsigned int *) &trampoline[19]) = magic;
|
*((unsigned int *) &trampoline[19]) = magic;
|
||||||
*((unsigned int *) &trampoline[24]) = multiboot_info_num;
|
*((unsigned int *) &trampoline[24]) = multiboot_info_num;
|
||||||
*((unsigned int *) &trampoline[29]) = e_entry;
|
*((unsigned int *) &trampoline[30]) = e_entry;
|
||||||
|
|
||||||
memcpy((void *)0x4000, trampoline, sizeof(trampoline));
|
memcpy((void *)0x4000, trampoline, sizeof(trampoline));
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -48,7 +48,7 @@
|
||||||
|
|
||||||
#define BLOCK_SIZE 1024
|
#define BLOCK_SIZE 1024
|
||||||
#define FILENAME_LENGTH 256
|
#define FILENAME_LENGTH 256
|
||||||
#define INITRD_MB 1152
|
#define INITRD_MB 1280
|
||||||
|
|
||||||
const char *input_name = NULL;
|
const char *input_name = NULL;
|
||||||
/**@brief Block device handle.*/
|
/**@brief Block device handle.*/
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
a07ed611ce6a0547063be9d5f8ba0f7d14a2ea4e23fa6ff3cbcb09974ece9527 /usr/bin/make_fiwix_initrd
|
68e17d5d7d372101fb7d9857113b9d9b0d19610b19014a742d054d52998c782d /usr/bin/make_fiwix_initrd
|
||||||
|
|
|
||||||
|
|
@ -119,11 +119,12 @@ improve: clean_sources
|
||||||
build: linux-4.9.10 ( BUILD_LINUX == True )
|
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 )
|
||||||
|
jump: move_disk ( KERNEL_BOOTSTRAP == True )
|
||||||
|
improve: finalize_job_count
|
||||||
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
|
|
||||||
jump: move_disk ( KERNEL_BOOTSTRAP == True )
|
|
||||||
improve: get_network ( CHROOT == False )
|
improve: get_network ( CHROOT == False )
|
||||||
build: bash-5.2.15
|
build: bash-5.2.15
|
||||||
build: xz-5.4.1
|
build: xz-5.4.1
|
||||||
|
|
@ -183,3 +184,4 @@ build: binutils-2.41
|
||||||
build: gcc-13.1.0
|
build: gcc-13.1.0
|
||||||
improve: null_time ( FORCE_TIMESTAMPS == True )
|
improve: null_time ( FORCE_TIMESTAMPS == True )
|
||||||
improve: update_checksums ( UPDATE_CHECKSUMS == True )
|
improve: update_checksums ( UPDATE_CHECKSUMS == True )
|
||||||
|
improve: after
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
|
||||||
SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
Replace weak symbols with strong to workaround an issue with tcc -ar
|
|
||||||
This won't be necessary once we can rebuild with ar from binutils.
|
|
||||||
--- src/include/features.h 2021-02-02 23:15:42.791932948 +0000
|
|
||||||
+++ src/include/features.h 2021-02-02 23:17:21.394647015 +0000
|
|
||||||
@@ -6,6 +6,6 @@
|
|
||||||
#define weak __attribute__((__weak__))
|
|
||||||
#define hidden __attribute__((__visibility__("hidden")))
|
|
||||||
#define weak_alias(old, new) \
|
|
||||||
- extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
|
|
||||||
+ extern __typeof(old) new __attribute__((/*__weak__, */__alias__(#old)))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../patches/ignore-static-inside-array.patch
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../patches/static-link.patch
|
|
||||||
50
steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch
Normal file
50
steps/tcc-0.9.27/patches/dont-skip-weak-symbols-ar.patch
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
SPDX-FileCopyrightText: 2021 Alexander Sosedkin <monk@unboiled.info>
|
||||||
|
|
||||||
|
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||||
|
|
||||||
|
From da11cf651576f94486dbd043dbfcde469e497574 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexander Sosedkin <monk@unboiled.info>
|
||||||
|
Date: Sat, 30 Oct 2021 16:04:11 +0200
|
||||||
|
Subject: [PATCH] Don't skip weak symbols during ar creation
|
||||||
|
|
||||||
|
```
|
||||||
|
$ echo 'int __attribute__((__weak__)) f(void) { return 4; }' > w.c
|
||||||
|
$ tcc -c w.c -o w.o
|
||||||
|
|
||||||
|
$ tcc-old -ar rc w.a w.o; nm -s w.a # previous behaviour, not indexed
|
||||||
|
w.o:
|
||||||
|
0000000000000000 W f
|
||||||
|
|
||||||
|
$ ar rc w.a w.o; nm -s w.a # GNU binutils behaviour, indexed
|
||||||
|
Archive index:
|
||||||
|
f in w.o
|
||||||
|
|
||||||
|
0000000000000000 W f
|
||||||
|
|
||||||
|
$ tcc-new rc w.a w.o; nm -s w.a # new behaviour, indexed
|
||||||
|
Archive index:
|
||||||
|
f in w.o
|
||||||
|
|
||||||
|
0000000000000000 W f
|
||||||
|
```
|
||||||
|
---
|
||||||
|
tcctools.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/tcctools.c b/tcctools.c
|
||||||
|
index cf174965..4567b81a 100644
|
||||||
|
--- tcctools.c
|
||||||
|
+++ tcctools.c
|
||||||
|
@@ -200,6 +200,9 @@ ST_FUNC int tcc_tool_ar(TCCState *s1, int argc, char **argv)
|
||||||
|
(sym->st_info == 0x10
|
||||||
|
|| sym->st_info == 0x11
|
||||||
|
|| sym->st_info == 0x12
|
||||||
|
+ || sym->st_info == 0x20
|
||||||
|
+ || sym->st_info == 0x21
|
||||||
|
+ || sym->st_info == 0x22
|
||||||
|
)) {
|
||||||
|
//printf("symtab: %2Xh %4Xh %2Xh %s\n", sym->st_info, sym->st_size, sym->st_shndx, strtab + sym->st_name);
|
||||||
|
istrlen = strlen(strtab + sym->st_name)+1;
|
||||||
|
--
|
||||||
|
2.11.4.GIT
|
||||||
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
|
|
||||||
|
|
||||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
|
||||||
|
|
||||||
Ignore duplicate symbols. Due to poor support for weak symbols in tcc-ar
|
|
||||||
we had to patch musl to replace weak symbols with strong symbols
|
|
||||||
--- tccelf.c 2021-02-02 17:41:08.662247892 +0000
|
|
||||||
+++ tccelf.c 2021-02-02 23:21:49.652080201 +0000
|
|
||||||
@@ -552,8 +552,9 @@
|
|
||||||
#if 0
|
|
||||||
printf("new_bind=%x new_shndx=%x new_vis=%x old_bind=%x old_shndx=%x old_vis=%x\n",
|
|
||||||
sym_bind, shndx, new_vis, esym_bind, esym->st_shndx, esym_vis);
|
|
||||||
-#endif
|
|
||||||
tcc_error_noabort("'%s' defined twice", name);
|
|
||||||
+#endif
|
|
||||||
+ goto do_patch;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
do_patch:
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue