Files
vasilito facf0c92e0 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00

52 lines
1.2 KiB
Python

#!/usr/bin/env python3
import sys
import os
import marshal
DIR = os.path.dirname(sys.argv[0])
# source code for module to freeze
FILE = os.path.join(DIR, 'flag.py')
# C symbol to use for array holding frozen bytes
SYMBOL = 'M___hello__'
def get_module_code(filename):
"""Compile 'filename' and return the module code as a marshalled byte
string.
"""
with open(filename, 'r') as fp:
src = fp.read()
co = compile(src, 'none', 'exec')
co_bytes = marshal.dumps(co)
return co_bytes
def gen_c_code(fp, co_bytes):
"""Generate C code for the module code in 'co_bytes', write it to 'fp'.
"""
def write(*args, **kwargs):
print(*args, **kwargs, file=fp)
write('/* Generated with Tools/freeze/regen_frozen.py */')
write('static unsigned char %s[] = {' % SYMBOL, end='')
bytes_per_row = 13
for i, opcode in enumerate(co_bytes):
if (i % bytes_per_row) == 0:
# start a new row
write()
write(' ', end='')
write('%d,' % opcode, end='')
write()
write('};')
def main():
out_filename = sys.argv[1]
co_bytes = get_module_code(FILE)
with open(out_filename, 'w') as fp:
gen_c_code(fp, co_bytes)
if __name__ == '__main__':
main()