Add a basic rootfs preparation

This commit is contained in:
andreili 2025-07-05 00:58:44 +02:00
parent fe18f2da2a
commit eadeba42bc
3 changed files with 22 additions and 3 deletions

View File

@ -23,6 +23,8 @@ targets_meta = Target.load_meta(f"config/target_meta.json")
target_board = Board(args.board, f"config/board/{args.board}.json", targets_meta) target_board = Board(args.board, f"config/board/{args.board}.json", targets_meta)
os.set_board(target_board) os.set_board(target_board)
os.check_rootfs()
if (args.sync): if (args.sync):
target_board.sync() target_board.sync()
elif (args.target != ""): elif (args.target != ""):

View File

@ -3,9 +3,9 @@ boot/*
media/* media/*
usr/lib/python3.13/test* usr/lib/python3.13/test*
usr/lib64/perl5* usr/lib64/perl5*
usr/src/* #usr/src/*
var/cache/binpkgs/* var/cache/binpkgs/*
var/cache/distfiles/* var/cache/distfiles/*
vvar/cache/edb/* var/cache/edb/*
var/cache/eix/* var/cache/eix/*
var/log/*.log var/log/*.log

View File

@ -1,4 +1,4 @@
import subprocess, os, sys, datetime, getpass, shutil import subprocess, os, sys, datetime, getpass, shutil, requests
from pathlib import Path from pathlib import Path
if __name__ != '__main__': if __name__ != '__main__':
from . import * from . import *
@ -21,6 +21,23 @@ class OS:
lst.append(act[0]) lst.append(act[0])
return lst return lst
def check_rootfs(self):
root_marker = Path(self.root_dir)
if (not root_marker.is_dir()):
Logger.os(f"Download base OS rootfs archive...")
temp_dir = f"{ROOT_DIR}/build/tmp"
os.makedirs(temp_dir, exist_ok=True)
r = requests.get("https://cloud.andreil.by/public.php/dav/files/sbc-rootfs-archive", stream=True)
arch_fn = f"{temp_dir}/sbc_rootfs_archive.tar.xz"
with open(arch_fn, 'wb') as f:
total_length = int(r.headers.get('content-length'))
for chunk in r.iter_content(chunk_size=1024):
f.write(chunk)
os.makedirs(self.root_dir, exist_ok=True)
self.__extract_tar(arch_fn, self.root_dir)
self.__tmp_clean(temp_dir)
self.__chroot("eix-sync -v")
def set_board(self, board): def set_board(self, board):
self.board = board self.board = board
self.arch = board.parse_variables("%{ARCH}%") self.arch = board.parse_variables("%{ARCH}%")