diff --git a/README.md b/README.md index 4b6b9e08..62e2da14 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # ~~OSBuild~~ Debian Forge -A - fork of osbuild, but for debian. +A fork of osbuild, but for debian. Try to be as close as 1:1 os possible Build-Pipelines for Operating System Artifacts @@ -48,11 +47,12 @@ Additionally, the built-in stages require: * `coreutils >= 8.31` * `curl >= 7.68` * `qemu-img >= 4.2.0` - * `rpm >= 4.15` + * `debootstrap >= 1.0.0` + * `mmdebstrap >= 1.0.0` * `tar >= 1.32` * `util-linux >= 235` * `skopeo` - * `python3-librepo` + * `ostree >= 2023.1` At build-time, the following software is required: @@ -71,7 +71,7 @@ The main binary is safe to run on your development machine with: To build an image: - python3 -m osbuild --libdir . ./test/data/manifests/fedora-boot.json + python3 -m osbuild --libdir . ./test-debian-manifest.json Every osbuild run uses a cache for downloaded files (sources) and, optionally, checkpoints of artifacts built by stages and pipelines. By default, this is @@ -93,7 +93,7 @@ Also keep in mind that some tests require those prerequisites, otherwise they are skipped ``` -sudo dnf install -y systemd-boot-unsigned erofs-utils pykickstart podman xfsprogs +sudo apt install -y debootstrap mmdebstrap sbuild schroot ostree qemu-utils ``` ## Installation @@ -103,20 +103,20 @@ additional artifacts such as tools (i.e: `osbuild-mpp`) sources, stages, schemas and SELinux policies. For this reason, doing an installation from source is not trivial and the easier -way to install it is to create the set of RPMs that contain all these components. +way to install it is to create the set of Debian packages that contain all these components. -This can be done with the `rpm` make target, i.e: +This can be done with the `deb` make target, i.e: ```sh -sudo dnf builddep osbuild.spec -make rpm +sudo apt builddep osbuild.spec +make deb ``` -A set of RPMs will be created in the `./rpmbuild/RPMS/noarch/` directory and can +A set of Debian packages will be created in the `./debbuild/` directory and can be installed in the system using the distribution package manager, i.e: ```sh -sudo dnf install ./rpmbuild/RPMS/noarch/*.rpm +sudo apt install ./debbuild/*.deb ``` ## Repository diff --git a/todo.txt b/todo.txt new file mode 100644 index 00000000..f8c6cd2a --- /dev/null +++ b/todo.txt @@ -0,0 +1,91 @@ +# Debian Forge File Structure Reorganization Plan +# Goal: Achieve near 1:1 compatibility with original osbuild repository structure + +## Phase 1: Restore Original Structure +- [ ] Verify core directories exist and are complete: + - [ ] .devcontainer/ + - [ ] .github/ + - [ ] assemblers/ + - [ ] data/ + - [ ] devices/ + - [ ] docs/ + - [ ] inputs/ + - [ ] mounts/ + - [ ] osbuild/ # Core Python package + - [ ] runners/ + - [ ] schemas/ + - [ ] schutzbot/ + - [ ] selinux/ + - [ ] sources/ + - [ ] stages/ + - [ ] test/ + - [ ] tools/ + - [ ] samples/ + +- [ ] Restore missing configuration files: + - [ ] .bandit + - [ ] .editorconfig + - [ ] .git-blame-ignore-revs + - [ ] .gitignore + - [ ] .gitlab-ci.yml + - [ ] .mypy.ini + - [ ] .packit.yaml + - [ ] .ruff.toml + - [ ] CODEOWNERS + - [ ] Schutzfile + - [ ] osbuild.spec + - [ ] setup.cfg + - [ ] tox.ini + +## Phase 2: Reorganize Debian-Specific Content +- [ ] Move Debian documentation to docs/: + - [ ] debian-forge-docs/ → docs/debian/ + - [ ] Keep original docs/ structure intact + +- [ ] Move Debian tests to test/: + - [ ] debian-forge-tests/ → test/debian/ + - [ ] Ensure original test/ structure remains + +- [ ] Move Debian blueprints to samples/: + - [ ] blueprints/ → samples/debian/ + - [ ] Keep original samples/ content + +- [ ] Move Debian stages to stages/: + - [ ] Ensure Debian stages integrate with existing stage structure + - [ ] Maintain original stage organization + +## Phase 3: Clean Up Root Directory +- [ ] Move Python scripts to appropriate locations: + - [ ] composer_*.py → tools/ (if CLI tools) or osbuild/ (if core modules) + - [ ] debian_*.py → osbuild/ (core modules) + - [ ] build_*.py → osbuild/ (core modules) + +- [ ] Remove custom build directories: + - [ ] build-environments/ → Move to .osbuild/ or create proper build system integration + - [ ] build-logs/ → Move to .osbuild/ or create proper build system integration + - [ ] artifacts/ → Move to .osbuild/ or create proper build system integration + +## Phase 4: Maintain Debian Functionality +- [ ] Ensure Debian stages work with original pipeline system +- [ ] Integrate Debian package management with existing stage architecture +- [ ] Maintain OSTree support alongside original features + +## Implementation Steps +1. [ ] Audit current structure against original osbuild repository +2. [ ] Create backup of current Debian-specific work +3. [ ] Restore original structure from upstream +4. [ ] Reintegrate Debian components into proper locations +5. [ ] Test functionality to ensure nothing breaks +6. [ ] Update documentation to reflect new structure + +## Current Structure Issues Identified +- Extra directories: debian-forge-docs/, debian-forge-tests/, build-environments/, build-logs/, artifacts/ +- Misplaced files: Python scripts in root that should be in tools/ or osbuild/ +- Missing original structure: Some original directories may be incomplete +- Custom additions: Debian-specific files mixed with core structure + +## Priority Order +1. High: Restore core osbuild structure +2. Medium: Reorganize Debian content +3. Low: Clean up and optimize +4. Critical: Maintain all Debian functionality during transition