# My LFS software repository

This is my repository for Linux from Scratch, and designed for the package manager [leaf](https://gitea.phywyj.dynv6.net/wyj/leaf).

Warning: `leaf` won't deal with the dependence relation, and currently won't check file confliction. You have to deal with these problems as the maintainer of your own LFS system.

## Different with LFS book
- Use `ensurepip` in *Chapter 7.10. Python-3.13.2*, then install `python-pip` after  *Chapter 8.51 Python*
- Use `SBINDIR=/usr/bin/` to install `iproute2`. `ip` command should be avaliable for non-root
- We won't install TeX files in *Chapter 8.72. Texinfo-7.2*. We will install TexLive.
- We won't install Grub in LFS. Install in BLFS with UEFI instead.

## issues
- `lfs/vim-9.1.x` has `Test_write_backup_symlink` failed, which can pass if `call assert_true(filereadable('./Xbackup/Xwbsfile.bak'))` is commented. ~~Seams like cannot create this backup file.~~ This is because building in `/tmp`. It's safe to ignore.


## BLFS order

Those can be installed directly:
```
dev-libs/libunistring dev-libs/popt dev-libs/libtasn1 app-arch/libarchive dev-libs/xxhash dev-libs/pcre2 dev-lang/duktape
```

- `dev-libs/libunistring` -> `net-dns/libidn2` -> `net-libs/libpsl` -> `net-misc/wget`
- `dev-libs/libtasn1` -> `app-crypt/p11-kit` -> `app-misc/make-ca`
- `net-libs/libpsl`+`app-misc/make-ca` -> `net-misc/curl`
- `libxml2` is not needed for `nghttp2`
- `icu` is not needed for `libxml2`
- `net-misc/curl`+`app-arch/libarchive`+`dev-libs/libuv` -> `dev-build/cmake`
- `app-arch/libarchive` -> `dev-db/sqlite` -> rebuild `dev-lang/python`
- `dev-python/six` -> `dev-debug/gdb`
- `dev-libs/popt` + `dev-libs/xxhash` -> `net-misc/rsync`
- `dev-libs/pcre2` -> rebuild `sys-apps/grep`
- rebuild `sys-apps/grep` + `net-misc/curl` + `dev-build/cmake` -> `llvm-core/llvm` -> `llvm-runtimes/compiler-rt` -> `llvm-core/clang`
- `llvm-core/llvm` + `dev-db/sqlite` + `dev-build/cmake` + `net-misc/curl` ->
`dev-lang/rust`

### python

Those can be installed directly
```
pyproject-hooks, installer
```

- `pyproject-hooks` -> `build`

after `build` and `installer`:

- `setuptools-scm` -> `pluggy`
- `calver` -> `trove-classifiers`
- `editables` + `pathspec` + `pluggy` + `trove-classifiers` -> `hatchling`
- `hatchling` -> `hatch-vcs`
- `iniconfig` + `pluggy` + `setuptools-scm` -> `pytest`
