From c8d01f966a578728c45741d7bdcf0a8d3e381a3d Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Wed, 27 Feb 2019 14:22:03 +0100 Subject: [PATCH] Use pkgtool to resolve and manage dependencies, add sub package support Been working on this for too long, don't remember the specifics, will add documentation. Signed-off-by: David Oberhollenzer --- layer/pygos-cli/ROOTFS | 3 + mk.sh | 46 +++-- pkg/bash-completion/build | 3 +- pkg/bash/bash-dev.desc | 2 +- pkg/bash/bash.desc | 2 +- pkg/bash/bash.files | 3 + pkg/bash/build | 5 +- pkg/bbstatic/bbstatic.files | 1 + pkg/boot-rpi3/build | 2 +- pkg/btrfs-progs/btrfs-progs-dev.desc | 2 +- pkg/btrfs-progs/btrfs-progs.desc | 2 +- pkg/btrfs-progs/build | 3 +- pkg/bzip2/build | 1 + pkg/bzip2/bzip2-dev.desc | 2 +- pkg/bzip2/bzip2.desc | 2 +- pkg/coreutils/coreutils.desc | 2 +- pkg/dhcpcd/dhcpcd.desc | 2 +- pkg/diffutils/diffutils.desc | 2 +- pkg/dnsmasq/dnsmasq.desc | 2 +- pkg/dosfstools/dosfstools.desc | 2 +- pkg/ethtool/ethtool.desc | 2 +- pkg/expat/build | 3 +- pkg/expat/expat-dev.desc | 2 +- pkg/expat/expat.desc | 2 +- pkg/file/build | 3 +- pkg/file/file-dev.desc | 2 +- pkg/file/file.desc | 2 +- pkg/findutils/findutils.desc | 2 +- pkg/findutils/findutils.files | 2 + pkg/firmware-rpi3/build | 2 +- pkg/fortify-headers/build | 4 +- pkg/fortify-headers/fortify-headers-dev.desc | 1 - pkg/fortify-headers/fortify-headers.desc | 1 + ...eaders-dev.files => fortify-headers.files} | 0 pkg/gawk/build | 1 + pkg/gawk/gawk-dev.desc | 2 +- pkg/gawk/gawk.desc | 2 +- pkg/gawk/gawk.files | 8 + pkg/gcron/gcron.desc | 2 +- pkg/gmp/build | 1 + pkg/gmp/gmp-dev.desc | 2 +- pkg/gmp/gmp.desc | 2 +- pkg/grep/grep.desc | 2 +- pkg/gzip/gzip.desc | 2 +- pkg/hostapd/build | 2 +- pkg/hostapd/hostapd.desc | 2 +- pkg/iana-etc/build | 2 +- pkg/iana-etc/iana-etc.files | 1 + pkg/inetutils/build | 2 +- pkg/inetutils/inetutils.desc | 2 +- pkg/init-scripts/init-scripts.files | 3 + pkg/init/build | 2 +- pkg/init/init.desc | 2 +- pkg/iproute2/build | 3 +- pkg/iproute2/iproute2-dev.desc | 2 +- pkg/iproute2/iproute2.desc | 2 +- pkg/iw/build | 2 +- pkg/iw/iw.desc | 2 +- pkg/kbd/kbd.desc | 2 +- pkg/kmod/build | 3 +- pkg/kmod/kmod-dev.desc | 2 +- pkg/kmod/kmod.desc | 2 +- pkg/ldns/build | 3 +- pkg/ldns/ldns-dev.desc | 2 +- pkg/ldns/ldns.desc | 2 +- pkg/less/build | 2 +- pkg/less/less.desc | 2 +- pkg/libbsd/build | 1 + pkg/libbsd/libbsd-dev.desc | 2 +- pkg/libbsd/libbsd.desc | 2 +- pkg/libbsd/libbsd.files | 4 +- pkg/libmnl/build | 1 + pkg/libmnl/libmnl-dev.desc | 2 +- pkg/libmnl/libmnl.desc | 2 +- pkg/libnftnl/build | 3 +- pkg/libnftnl/libnftnl-dev.desc | 2 +- pkg/libnftnl/libnftnl.desc | 2 +- pkg/libnl3/build | 1 + pkg/libnl3/libnl3-dev.desc | 2 +- pkg/libnl3/libnl3.desc | 2 +- pkg/libpcap/build | 3 +- pkg/libpcap/libpcap-dev.desc | 2 +- pkg/libpcap/libpcap.desc | 2 +- pkg/linux-rpi3/linux-rpi3.desc | 1 + pkg/linux-rpi3/linux.desc | 1 - pkg/linux/build | 12 +- pkg/linux_headers/build | 5 +- pkg/lzo/build | 1 + pkg/lzo/lzo-dev.desc | 2 +- pkg/lzo/lzo.desc | 2 +- pkg/musl/build | 5 +- pkg/musl/libc-dev.desc | 2 +- pkg/musl/libc-dev.files | 3 +- pkg/musl/libc.desc | 1 - pkg/nano/build | 2 +- pkg/nano/nano.desc | 2 +- pkg/ncurses/build | 1 + pkg/ncurses/ncurses-dev.desc | 2 +- pkg/ncurses/ncurses.desc | 2 +- pkg/ncurses/ncurses.files | 2 + pkg/nftables/build | 3 +- pkg/nftables/nftables-dev.desc | 2 +- pkg/nftables/nftables.desc | 2 +- pkg/nginx/build | 2 +- pkg/nginx/nginx.desc | 2 +- pkg/ntp/build | 2 +- pkg/ntp/ntp.desc | 2 +- pkg/openssh/build | 2 +- pkg/openssh/openssh.desc | 2 +- pkg/openssl/build | 3 +- pkg/openssl/openssl-dev.desc | 2 +- pkg/openssl/openssl.desc | 2 +- pkg/openssl/openssl.files | 3 + pkg/pcre/build | 1 + pkg/pcre/pcre-dev.desc | 2 +- pkg/pcre/pcre.desc | 2 +- pkg/procps-ng/build | 3 +- pkg/procps-ng/procps-ng-dev.desc | 2 +- pkg/procps-ng/procps-ng-dev.files | 28 +-- pkg/procps-ng/procps-ng.desc | 2 +- pkg/psmisc/build | 2 +- pkg/psmisc/psmisc.desc | 2 +- pkg/readline/build | 3 +- pkg/readline/readline-dev.desc | 2 +- pkg/readline/readline.desc | 2 +- pkg/release-qemu/build | 7 +- pkg/rootfs/rootfs.files | 1 + pkg/sed/sed.desc | 2 +- pkg/shadow/shadow.desc | 2 +- pkg/sqlite3/build | 2 +- pkg/sqlite3/sqlite3.desc | 2 +- pkg/tar/build | 2 +- pkg/tar/tar.desc | 2 +- pkg/tc-binutils/build | 2 +- pkg/tc-cloog/build | 2 +- pkg/tc-file/build | 3 +- pkg/tc-gcc1/build | 2 +- pkg/tc-gcc2/build | 3 +- pkg/tc-gcc2/crt-dev.desc | 2 + pkg/tc-gcc2/crt-dev.files | 0 pkg/tc-gcc2/crt.desc | 2 + pkg/tc-gcc2/crt.files | 0 pkg/tc-gcc2/libgcc-dev.desc | 1 + pkg/tc-gcc2/libgcc.files | 10 +- pkg/tc-gmp/build | 3 +- pkg/tc-isl/build | 2 +- pkg/tc-mpc/build | 2 +- pkg/tc-mpfr/build | 2 +- pkg/tcpdump/build | 2 +- pkg/tcpdump/tcpdump.desc | 2 +- pkg/toolchain/build | 4 +- pkg/tzdata/build | 1 + pkg/tzdata/tzdata-dev.desc | 2 +- pkg/tzdata/tzdata.files | 2 + pkg/unbound/build | 3 +- pkg/unbound/unbound-dev.desc | 2 +- pkg/unbound/unbound.desc | 2 +- pkg/usyslog/usyslog.desc | 2 +- pkg/util-linux/build | 3 +- pkg/util-linux/util-linux-dev.desc | 2 +- pkg/util-linux/util-linux.desc | 2 +- pkg/util-linux/util-linux.files | 2 + pkg/xz/build | 1 + pkg/xz/xz-dev.desc | 2 +- pkg/xz/xz-dev.files | 2 +- pkg/xz/xz.desc | 2 +- pkg/zlib/build | 1 + pkg/zlib/zlib-dev.desc | 2 +- pkg/zlib/zlib.desc | 2 +- pkg/zlib/zlib.files | 1 + util/depends.sh | 22 --- util/depgraph.cpp | 169 ++++++++++++++++++ util/pkgcmd.sh | 12 ++ util/toolchain.sh | 29 --- 174 files changed, 454 insertions(+), 227 deletions(-) delete mode 100644 pkg/fortify-headers/fortify-headers-dev.desc create mode 100644 pkg/fortify-headers/fortify-headers.desc rename pkg/fortify-headers/{fortify-headers-dev.files => fortify-headers.files} (100%) create mode 100644 pkg/linux-rpi3/linux-rpi3.desc delete mode 100644 pkg/linux-rpi3/linux.desc create mode 100644 pkg/tc-gcc2/crt-dev.desc create mode 100644 pkg/tc-gcc2/crt-dev.files create mode 100644 pkg/tc-gcc2/crt.desc create mode 100644 pkg/tc-gcc2/crt.files delete mode 100755 util/depends.sh create mode 100644 util/depgraph.cpp delete mode 100644 util/toolchain.sh diff --git a/layer/pygos-cli/ROOTFS b/layer/pygos-cli/ROOTFS index 2e5f5f7..2a80dad 100644 --- a/layer/pygos-cli/ROOTFS +++ b/layer/pygos-cli/ROOTFS @@ -18,4 +18,7 @@ procps-ng psmisc file init +init-scripts +gcron +usyslog tzdata diff --git a/mk.sh b/mk.sh index d6404db..f9cc9b6 100755 --- a/mk.sh +++ b/mk.sh @@ -28,6 +28,8 @@ PKGDEPLOYDIR="$BUILDROOT/$PRODUCT/deploy" PKGLOGDIR="$BUILDROOT/$PRODUCT/log" PACKAGELIST="$BUILDROOT/$PRODUCT/pkglist" REPODIR="$BUILDROOT/$PRODUCT/repo" +DEPENDSLIST="$BUILDROOT/$PRODUCT/depends" +PROVIDESLIST="$BUILDROOT/$PRODUCT/provides" mkdir -p "$PKGDOWNLOADDIR" "$PKGSRCDIR" "$PKGLOGDIR" "$PKGDEPLOYDIR" mkdir -p "$REPODIR" @@ -38,10 +40,8 @@ OS_RELEASE=$(git describe --always --tags --dirty) popd > /dev/null ############################# include utilities ############################## -source "$SCRIPTDIR/util/depends.sh" source "$SCRIPTDIR/util/download.sh" source "$SCRIPTDIR/util/pkgcmd.sh" -source "$SCRIPTDIR/util/toolchain.sh" source "$SCRIPTDIR/util/misc.sh" source "$SCRIPTDIR/util/override.sh" source "$SCRIPTDIR/util/autotools.sh" @@ -61,8 +61,22 @@ CMAKETCFILE="$TCDIR/toolchain.cmake" ############################### build packages ############################### echo "--- resolving package dependencies ---" -include_pkg "$RELEASEPKG" -dependencies | tsort | tac > "$PACKAGELIST" +g++ "$SCRIPTDIR/util/depgraph.cpp" -o "$TCDIR/bin/depgraph" + +truncate -s 0 $DEPENDSLIST $PROVIDESLIST + +for pkg in $SCRIPTDIR/pkg/*; do + include_pkg $(basename $pkg) + + for DEP in $SUBPKG; do + echo "$PKGNAME,$DEP" >> "$PROVIDESLIST" + done + for DEP in $DEPENDS; do + echo "$PKGNAME,$DEP" >> "$DEPENDSLIST" + done +done + +depgraph "$PROVIDESLIST" "$DEPENDSLIST" "$RELEASEPKG" > "$PACKAGELIST" cat "$PACKAGELIST" echo "--- downloading package files ---" @@ -77,22 +91,24 @@ echo "--- building packages ---" while read pkg; do if [ ! -e "$PKGLOGDIR/.$pkg" ]; then include_pkg "$pkg" - install_build_deps + + rm -rf "$TCDIR/$TARGET" + mkdir -p "$TCDIR/$TARGET" + + if [ ! -z "$DEPENDS" ]; then + pkg install -omD -r "$TCDIR/$TARGET" -R "$REPODIR" $DEPENDS + fi + run_pkg_command "build" run_pkg_command "deploy" deploy_dev_cleanup "$PKGDEPLOYDIR/$PKGNAME" strip_files ${PKGDEPLOYDIR}/${PKGNAME}/{bin,lib} - restore_toolchain - if [ -d "$PKGDEPLOYDIR/$PKGNAME" ]; then - for f in $PKGDEPLOYDIR/$PKGNAME/*.desc; do - if [ ! -f "$f" ]; then - continue - fi - - pkg pack -r "$REPODIR" -d "$f" -l $PKGDEPLOYDIR/$PKGNAME/$(basename "$f" .desc).files - done - fi + for f in $SUBPKG; do + pkg pack -r "$REPODIR" \ + -d "$PKGDEPLOYDIR/$PKGNAME/${f}.desc" \ + -l "$PKGDEPLOYDIR/$PKGNAME/${f}.files" + done rm -rf "$PKGBUILDDIR" touch "$PKGLOGDIR/.$pkg" diff --git a/pkg/bash-completion/build b/pkg/bash-completion/build index 7eb6c4d..6c9a963 100755 --- a/pkg/bash-completion/build +++ b/pkg/bash-completion/build @@ -3,7 +3,8 @@ SRCDIR="bash-completion-upstream-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://salsa.debian.org/debian/bash-completion/-/archive/upstream/${VERSION}/" SHA256SUM="50985e7f1a1adc8e05cbea56f0f9753b5600f6ea176b42583184f300b1eed5ea" -DEPENDS="bash" +DEPENDS="bash bash-dev" +SUBPKG="bash-completion bash-completion-dev" prepare() { autoreconf --force --install --symlink diff --git a/pkg/bash/bash-dev.desc b/pkg/bash/bash-dev.desc index 2c3b9f5..55dcdf5 100644 --- a/pkg/bash/bash-dev.desc +++ b/pkg/bash/bash-dev.desc @@ -1,2 +1,2 @@ name bash-dev -requires bash libc-dev ncurses-dev readline-dev +requires bash crt-dev ncurses-dev readline-dev diff --git a/pkg/bash/bash.desc b/pkg/bash/bash.desc index 86e7e23..cbe415a 100644 --- a/pkg/bash/bash.desc +++ b/pkg/bash/bash.desc @@ -1,2 +1,2 @@ name bash -requires ncurses readline libc +requires ncurses readline crt diff --git a/pkg/bash/bash.files b/pkg/bash/bash.files index 6adfcd8..a8c0c2b 100644 --- a/pkg/bash/bash.files +++ b/pkg/bash/bash.files @@ -1,3 +1,6 @@ +dir bin 0755 0 0 +dir etc 0755 0 0 +dir etc/skel 0755 0 0 file bin/bash 0755 0 0 file etc/bashrc 0644 0 0 file etc/profile 0644 0 0 diff --git a/pkg/bash/build b/pkg/bash/build index 8f5c366..e4a4f54 100755 --- a/pkg/bash/build +++ b/pkg/bash/build @@ -3,7 +3,8 @@ SRCDIR="bash-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://ftp.gnu.org/gnu/bash/" SHA256SUM="b4a80f2ac66170b2913efbfb9f2594f1f76c7b1afd11f799e22035d63077fb4d" -DEPENDS="ncurses readline" +DEPENDS="ncurses-dev readline-dev crt-dev" +SUBPKG="bash bash-dev" prepare() { apply_patches @@ -30,4 +31,4 @@ check_update() { curl --silent -L "$URL" | grep -o ">bash-[0-9.]*tar.gz<" | \ sed 's/>bash-//g' | sed 's/.tar.gz> "$DEPLOY/linux.files" + echo "dir boot 0755 0 0" >> "$DEPLOY/$PKGNAME.files" + echo "file boot/vmlinuz 0755 0 0" >> "$DEPLOY/$PKGNAME.files" ;; modules) export KBUILD_OUTPUT="$PKGBUILDDIR" make -C "$SOURCE" O="$PKGBUILDDIR" ARCH="$LINUX_CPU" CROSS_COMPILE="${TARGET}-" INSTALL_MOD_PATH="$DEPLOY" modules_install + echo "dir lib 0755 0 0" >> "$DEPLOY/$PKGNAME.files" + echo "dir lib/modules 0755 0 0" >> "$DEPLOY/$PKGNAME.files" + find -H "$DEPLOY/lib" -type d -printf "dir %p 0%m 0 0\\n" |\ - tail -n +2 | sed "s#^$DEPLOY/##g" >> "$DEPLOY/linux.files" + tail -n +2 | sed "s#^$DEPLOY/##g" >> "$DEPLOY/$PKGNAME.files" find -H "$DEPLOY/lib" -type l -printf "slink %p 0%m 0 0 %l\\n" |\ - sed "s#^$DEPLOY/##g" >> "$DEPLOY/linux.files" + sed "s#^$DEPLOY/##g" >> "$DEPLOY/$PKGNAME.files" find -H "$DEPLOY/lib" -type f -printf "file %p 0%m 0 0\\n" |\ - sed "s#^$DEPLOY/##g" >> "$DEPLOY/linux.files" + sed "s#^$DEPLOY/##g" >> "$DEPLOY/$PKGNAME.files" ;; esac done diff --git a/pkg/linux_headers/build b/pkg/linux_headers/build index 6b77a65..4878043 100755 --- a/pkg/linux_headers/build +++ b/pkg/linux_headers/build @@ -1,6 +1,7 @@ # inherit package details from kernel package source "$SCRIPTDIR/pkg/$LINUXPKG/build" -DEPENDS="" +DEPENDS="tc-pkgtool" +SUBPKG="linux-dev" build() { local LINUX_CPU=$(get_linux_cpu) @@ -14,4 +15,6 @@ deploy() { export KBUILD_OUTPUT="$PKGBUILDDIR" make -C "$1" O="$PKGBUILDDIR" ARCH="$LINUX_CPU" INSTALL_HDR_PATH="$2" headers_install + + cp $SCRIPTDIR/pkg/$PKGNAME/*.{files,desc} "$2" } diff --git a/pkg/lzo/build b/pkg/lzo/build index 32e5dd0..223c46a 100644 --- a/pkg/lzo/build +++ b/pkg/lzo/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.gz" URL="http://www.oberhumer.com/opensource/lzo/download" SHA256SUM="c0f892943208266f9b6543b3ae308fab6284c5c90e627931446fb49b4221a072" DEPENDS="toolchain" +SUBPKG="lzo lzo-dev" prepare() { return diff --git a/pkg/lzo/lzo-dev.desc b/pkg/lzo/lzo-dev.desc index 19a001b..78fdfae 100644 --- a/pkg/lzo/lzo-dev.desc +++ b/pkg/lzo/lzo-dev.desc @@ -1,2 +1,2 @@ name lzo-dev -requires libc +requires lzo crt-dev diff --git a/pkg/lzo/lzo.desc b/pkg/lzo/lzo.desc index d40c201..7d8b1f2 100644 --- a/pkg/lzo/lzo.desc +++ b/pkg/lzo/lzo.desc @@ -1,2 +1,2 @@ name lzo -requires libc +requires crt diff --git a/pkg/musl/build b/pkg/musl/build index a3dd2f6..1d2afa2 100755 --- a/pkg/musl/build +++ b/pkg/musl/build @@ -3,7 +3,8 @@ SRCDIR="musl-$VERSION" TARBALL="$SRCDIR.tar.gz" URL="https://www.musl-libc.org/releases" SHA256SUM="44be8771d0e6c6b5f82dd15662eb2957c9a3173a19a8b49966ac0542bbd40d61" -DEPENDS="tc-gcc1 linux_headers fortify-headers tc-pkgtool" +DEPENDS="tc-gcc1 linux-dev fortify-headers tc-pkgtool" +SUBPKG="libc libc-dev" prepare() { return @@ -56,6 +57,8 @@ deploy() { cp $SCRIPTDIR/pkg/$PKGNAME/*.{desc,files} "$DEPLOY" cat > "$DEPLOY/libc.files" <<_EOF +dir lib 0755 0 0 +dir etc 0755 0 0 file lib/libc.so 0755 0 0 $DEPLOY/lib/libc.so slink lib/ld-musl-${MUSL_CPU}.so.1 0777 0 0 libc.so file etc/ld-musl-${MUSL_CPU}.path 0644 0 0 $DEPLOY/LDPATH diff --git a/pkg/musl/libc-dev.desc b/pkg/musl/libc-dev.desc index 316a7a2..5af1ff7 100644 --- a/pkg/musl/libc-dev.desc +++ b/pkg/musl/libc-dev.desc @@ -1,2 +1,2 @@ name libc-dev -requires libgcc-dev linux-dev fortify-headers-dev +requires libc linux-dev fortify-headers diff --git a/pkg/musl/libc-dev.files b/pkg/musl/libc-dev.files index 81f2e25..9d345f7 100644 --- a/pkg/musl/libc-dev.files +++ b/pkg/musl/libc-dev.files @@ -222,14 +222,13 @@ file include/err.h 0644 0 0 file include/glob.h 0644 0 0 file include/ctype.h 0644 0 0 file include/nl_types.h 0644 0 0 -dir lib 0755 +dir lib 0755 0 0 file lib/crt1.o 0644 0 0 file lib/libm.a 0644 0 0 file lib/libc.a 0644 0 0 file lib/libpthread.a 0644 0 0 file lib/librt.a 0644 0 0 file lib/libssp_nonshared.a 0664 0 0 -file lib/libc.so 0755 0 0 file lib/rcrt1.o 0644 0 0 file lib/libresolv.a 0644 0 0 file lib/crti.o 0644 0 0 diff --git a/pkg/musl/libc.desc b/pkg/musl/libc.desc index fb5ba39..421879f 100644 --- a/pkg/musl/libc.desc +++ b/pkg/musl/libc.desc @@ -1,2 +1 @@ name libc -requires libgcc diff --git a/pkg/nano/build b/pkg/nano/build index b799f61..c18c305 100644 --- a/pkg/nano/build +++ b/pkg/nano/build @@ -3,7 +3,7 @@ SRCDIR="nano-${VERSION}" TARBALL="${SRCDIR}.tar.xz" URL="https://ftp.gnu.org/gnu/nano/" SHA256SUM="d12773af3589994b2e4982c5792b07c6240da5b86c5aef2103ab13b401fe6349" -DEPENDS="ncurses" +DEPENDS="ncurses-dev crt-dev" prepare() { return diff --git a/pkg/nano/nano.desc b/pkg/nano/nano.desc index 54d2023..189cf89 100644 --- a/pkg/nano/nano.desc +++ b/pkg/nano/nano.desc @@ -1,2 +1,2 @@ name nano -requires libc ncurses +requires crt ncurses diff --git a/pkg/ncurses/build b/pkg/ncurses/build index a5aef85..07930fe 100755 --- a/pkg/ncurses/build +++ b/pkg/ncurses/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.gz" URL="https://ftp.gnu.org/gnu/ncurses/" SHA256SUM="aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17" DEPENDS="toolchain" +SUBPKG="ncurses-dev ncurses" prepare() { return diff --git a/pkg/ncurses/ncurses-dev.desc b/pkg/ncurses/ncurses-dev.desc index 8c9fce8..7e3a195 100644 --- a/pkg/ncurses/ncurses-dev.desc +++ b/pkg/ncurses/ncurses-dev.desc @@ -1,2 +1,2 @@ name ncurses-dev -requires libc-dev +requires ncurses crt-dev diff --git a/pkg/ncurses/ncurses.desc b/pkg/ncurses/ncurses.desc index 9903fee..97b8eb5 100644 --- a/pkg/ncurses/ncurses.desc +++ b/pkg/ncurses/ncurses.desc @@ -1,2 +1,2 @@ name ncurses -requires libc +requires crt diff --git a/pkg/ncurses/ncurses.files b/pkg/ncurses/ncurses.files index faf9f4e..5f01c76 100644 --- a/pkg/ncurses/ncurses.files +++ b/pkg/ncurses/ncurses.files @@ -1,3 +1,4 @@ +dir share 0755 0 0 dir share/tabset 0755 0 0 file share/tabset/std 0644 0 0 file share/tabset/stdcrt 0644 0 0 @@ -70,6 +71,7 @@ slink lib/libformw.so 0777 0 0 libformw.so.6.1 slink lib/terminfo 0777 0 0 /share/terminfo slink lib/libtinfo.so 0777 0 0 libncursesw.so.6.1 slink lib/libtinfo.so.6.1 0777 0 0 libncursesw.so.6.1 +dir bin 0755 0 0 file bin/tic 0755 0 0 file bin/toe 0755 0 0 slink bin/infotocap 0777 0 0 tic diff --git a/pkg/nftables/build b/pkg/nftables/build index 8683626..f14fdc0 100644 --- a/pkg/nftables/build +++ b/pkg/nftables/build @@ -3,7 +3,8 @@ SRCDIR="nftables-${VERSION}" TARBALL="${SRCDIR}.tar.bz2" URL="https://netfilter.org/projects/nftables/files" SHA256SUM="ad8181b5fcb9ca572f444bed54018749588522ee97e4c21922648bb78d7e7e91" -DEPENDS="libmnl libnftnl gmp readline ncurses" +DEPENDS="libmnl-dev libnftnl-dev gmp-dev readline-dev ncurses-dev crt-dev" +SUBPKG="nftables nftables-dev" prepare() { return diff --git a/pkg/nftables/nftables-dev.desc b/pkg/nftables/nftables-dev.desc index 0da36a2..2cb7c7b 100644 --- a/pkg/nftables/nftables-dev.desc +++ b/pkg/nftables/nftables-dev.desc @@ -1,2 +1,2 @@ name nftables-dev -requires libmnl-dev libnftnl-dev gmp-dev readline-dev ncurses-dev +requires nftables libmnl-dev libnftnl-dev gmp-dev readline-dev ncurses-dev crt-dev diff --git a/pkg/nftables/nftables.desc b/pkg/nftables/nftables.desc index a603ea2..57c8dca 100644 --- a/pkg/nftables/nftables.desc +++ b/pkg/nftables/nftables.desc @@ -1,2 +1,2 @@ name nftables -requires libmnl libnftnl gmp readline ncurses libc +requires libmnl libnftnl gmp readline ncurses crt diff --git a/pkg/nginx/build b/pkg/nginx/build index 73f0317..ba176d8 100755 --- a/pkg/nginx/build +++ b/pkg/nginx/build @@ -3,7 +3,7 @@ SRCDIR="nginx-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://nginx.org/download" SHA256SUM="a8bdafbca87eb99813ae4fcac1ad0875bf725ce19eb265d28268c309b2b40787" -DEPENDS="zlib openssl pcre" +DEPENDS="zlib-dev openssl-dev pcre-dev crt-dev" prepare() { apply_patches diff --git a/pkg/nginx/nginx.desc b/pkg/nginx/nginx.desc index 263e91d..34f546d 100644 --- a/pkg/nginx/nginx.desc +++ b/pkg/nginx/nginx.desc @@ -1,2 +1,2 @@ name nginx -requires zlib openssl pcre libc +requires zlib openssl pcre crt diff --git a/pkg/ntp/build b/pkg/ntp/build index 049c75b..116021e 100644 --- a/pkg/ntp/build +++ b/pkg/ntp/build @@ -3,7 +3,7 @@ SRCDIR="ntp-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2" SHA256SUM="709b222b5013d77d26bfff532b5ea470a8039497ef29d09363931c036cb30454" -DEPENDS="openssl zlib readline" +DEPENDS="openssl-dev zlib-dev readline-dev crt-dev" prepare() { return diff --git a/pkg/ntp/ntp.desc b/pkg/ntp/ntp.desc index 6039122..0a2de74 100644 --- a/pkg/ntp/ntp.desc +++ b/pkg/ntp/ntp.desc @@ -1,2 +1,2 @@ name ntp -requires openssl zlib readline libc +requires openssl zlib readline crt diff --git a/pkg/openssh/build b/pkg/openssh/build index 8ac59e0..d63fbe0 100644 --- a/pkg/openssh/build +++ b/pkg/openssh/build @@ -3,7 +3,7 @@ SRCDIR="openssh-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable" SHA256SUM="6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad" -DEPENDS="openssl zlib" +DEPENDS="openssl-dev zlib-dev crt-dev" prepare() { return diff --git a/pkg/openssh/openssh.desc b/pkg/openssh/openssh.desc index 5ec1034..05e59b8 100644 --- a/pkg/openssh/openssh.desc +++ b/pkg/openssh/openssh.desc @@ -1,2 +1,2 @@ name openssh -requires openssl zlib libc +requires openssl zlib crt diff --git a/pkg/openssl/build b/pkg/openssl/build index df4f118..30a991a 100755 --- a/pkg/openssl/build +++ b/pkg/openssl/build @@ -3,7 +3,8 @@ SRCDIR="openssl-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://www.openssl.org/source" SHA256SUM="fc20130f8b7cbd2fb918b2f14e2f429e109c31ddd0fb38fc5d71d9ffed3f9f41" -DEPENDS="zlib" +DEPENDS="zlib-dev crt-dev" +SUBPKG="openssl openssl-dev" prepare() { return diff --git a/pkg/openssl/openssl-dev.desc b/pkg/openssl/openssl-dev.desc index d7b7594..7b2edbf 100644 --- a/pkg/openssl/openssl-dev.desc +++ b/pkg/openssl/openssl-dev.desc @@ -1,2 +1,2 @@ name openssl-dev -requires zlib-dev +requires openssl zlib-dev crt-dev diff --git a/pkg/openssl/openssl.desc b/pkg/openssl/openssl.desc index b0c845b..24f264c 100644 --- a/pkg/openssl/openssl.desc +++ b/pkg/openssl/openssl.desc @@ -1,2 +1,2 @@ name openssl -requires zlib libc +requires zlib crt diff --git a/pkg/openssl/openssl.files b/pkg/openssl/openssl.files index da32089..ffe39b7 100644 --- a/pkg/openssl/openssl.files +++ b/pkg/openssl/openssl.files @@ -1,3 +1,4 @@ +dir lib 0755 0 0 file lib/libcrypto.so.1.1 0755 0 0 slink lib/libcrypto.so 0777 0 0 libcrypto.so.1.1 file lib/libssl.so.1.1 0755 0 0 @@ -5,7 +6,9 @@ slink lib/libssl.so 0777 0 0 libssl.so.1.1 dir lib/engines-1.1 0755 0 0 file lib/engines-1.1/capi.so 0755 0 0 file lib/engines-1.1/padlock.so 0755 0 0 +dir bin 0755 0 0 file bin/openssl 0755 0 0 +dir etc 0755 0 0 dir etc/ssl 0755 0 0 dir etc/ssl/certs 0755 0 0 dir etc/ssl/private 0755 0 0 diff --git a/pkg/pcre/build b/pkg/pcre/build index efbeb1d..d49c8d3 100755 --- a/pkg/pcre/build +++ b/pkg/pcre/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.bz2" URL="https://ftp.pcre.org/pub/pcre" SHA256SUM="2cd04b7c887808be030254e8d77de11d3fe9d4505c39d4b15d2664ffe8bf9301" DEPENDS="toolchain" +SUBPKG="pcre pcre-dev" prepare() { return diff --git a/pkg/pcre/pcre-dev.desc b/pkg/pcre/pcre-dev.desc index 40fe6ab..d6746ab 100644 --- a/pkg/pcre/pcre-dev.desc +++ b/pkg/pcre/pcre-dev.desc @@ -1,2 +1,2 @@ name pcre-dev -requires pcre libc-dev +requires pcre crt-dev diff --git a/pkg/pcre/pcre.desc b/pkg/pcre/pcre.desc index be9305d..1930700 100644 --- a/pkg/pcre/pcre.desc +++ b/pkg/pcre/pcre.desc @@ -1,2 +1,2 @@ name pcre -requires libc +requires crt diff --git a/pkg/procps-ng/build b/pkg/procps-ng/build index 9ba17d3..814f609 100755 --- a/pkg/procps-ng/build +++ b/pkg/procps-ng/build @@ -3,7 +3,8 @@ SRCDIR="procps-ng-${VERSION}" TARBALL="${SRCDIR}.tar.xz" URL="https://sourceforge.net/projects/procps-ng/files/Production" SHA256SUM="10bd744ffcb3de2d591d2f6acf1a54a7ba070fdcc432a855931a5057149f0465" -DEPENDS="ncurses" +DEPENDS="ncurses-dev crt-dev" +SUBPKG="procps-ng procps-ng-dev" prepare() { apply_patches diff --git a/pkg/procps-ng/procps-ng-dev.desc b/pkg/procps-ng/procps-ng-dev.desc index 68ff66d..0f69ba3 100644 --- a/pkg/procps-ng/procps-ng-dev.desc +++ b/pkg/procps-ng/procps-ng-dev.desc @@ -1,2 +1,2 @@ name procps-ng-dev -requires ncurses-dev +requires procps-ng ncurses-dev crt-dev diff --git a/pkg/procps-ng/procps-ng-dev.files b/pkg/procps-ng/procps-ng-dev.files index 121fe77..e08c1a1 100644 --- a/pkg/procps-ng/procps-ng-dev.files +++ b/pkg/procps-ng/procps-ng-dev.files @@ -2,17 +2,17 @@ dir include 0755 0 0 dir include/proc 0755 0 0 dir lib 0755 0 0 dir lib/pkgconfig 0755 0 0 -file include/proc/alloc.h -file include/proc/devname.h -file include/proc/escape.h -file include/proc/numa.h -file include/proc/procps.h -file include/proc/pwcache.h -file include/proc/readproc.h -file include/proc/sig.h -file include/proc/slab.h -file include/proc/sysinfo.h -file include/proc/version.h -file include/proc/wchan.h -file include/proc/whattime.h -file lib/pkgconfig/libprocps.pc +file include/proc/alloc.h 0644 0 0 +file include/proc/devname.h 0644 0 0 +file include/proc/escape.h 0644 0 0 +file include/proc/numa.h 0644 0 0 +file include/proc/procps.h 0644 0 0 +file include/proc/pwcache.h 0644 0 0 +file include/proc/readproc.h 0644 0 0 +file include/proc/sig.h 0644 0 0 +file include/proc/slab.h 0644 0 0 +file include/proc/sysinfo.h 0644 0 0 +file include/proc/version.h 0644 0 0 +file include/proc/wchan.h 0644 0 0 +file include/proc/whattime.h 0644 0 0 +file lib/pkgconfig/libprocps.pc 0644 0 0 diff --git a/pkg/procps-ng/procps-ng.desc b/pkg/procps-ng/procps-ng.desc index a80dbae..4bd2459 100644 --- a/pkg/procps-ng/procps-ng.desc +++ b/pkg/procps-ng/procps-ng.desc @@ -1,2 +1,2 @@ name procps-ng -requires libc ncurses +requires crt ncurses diff --git a/pkg/psmisc/build b/pkg/psmisc/build index 44c41f2..93e0333 100755 --- a/pkg/psmisc/build +++ b/pkg/psmisc/build @@ -3,7 +3,7 @@ SRCDIR="psmisc-${VERSION}" TARBALL="${SRCDIR}.tar.xz" URL="https://sourceforge.net/projects/psmisc/files/psmisc" SHA256SUM="4b7cbffdc9373474da49b85dc3457ae511c43dc7fa7d94513fe06f89dcb87880" -DEPENDS="ncurses" +DEPENDS="ncurses-dev crt-dev" prepare() { return diff --git a/pkg/psmisc/psmisc.desc b/pkg/psmisc/psmisc.desc index 6651600..84e1630 100644 --- a/pkg/psmisc/psmisc.desc +++ b/pkg/psmisc/psmisc.desc @@ -1,2 +1,2 @@ name psmisc -requires ncurses libc +requires ncurses crt diff --git a/pkg/readline/build b/pkg/readline/build index ffaca0e..4004366 100755 --- a/pkg/readline/build +++ b/pkg/readline/build @@ -3,7 +3,8 @@ SRCDIR="readline-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://ftp.gnu.org/gnu/readline/" SHA256SUM="e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" -DEPENDS="ncurses" +DEPENDS="ncurses-dev crt-dev" +SUBPKG="readline readline-dev" prepare() { return diff --git a/pkg/readline/readline-dev.desc b/pkg/readline/readline-dev.desc index ace5e5d..0646950 100644 --- a/pkg/readline/readline-dev.desc +++ b/pkg/readline/readline-dev.desc @@ -1,2 +1,2 @@ name readline-dev -requires ncurses-dev +requires readline ncurses-dev crt-dev diff --git a/pkg/readline/readline.desc b/pkg/readline/readline.desc index 045a6b7..17cb19f 100644 --- a/pkg/readline/readline.desc +++ b/pkg/readline/readline.desc @@ -1,2 +1,2 @@ name readline -requires ncurses libc +requires ncurses crt diff --git a/pkg/release-qemu/build b/pkg/release-qemu/build index ec8b9ff..f1a571a 100755 --- a/pkg/release-qemu/build +++ b/pkg/release-qemu/build @@ -4,7 +4,7 @@ build() { local SOURCE="$1" local DEPLOY="$2" - pkg install -om -r "$PKGDEPLOYDIR/$OS_RELEASE" -R "$REPODIR" $DEPENDS + pkg install -om -r "$PKGBUILDDIR/$OS_RELEASE" -R "$REPODIR" $DEPENDS # copy helper scripts local linux_image="vmlinuz" @@ -30,6 +30,11 @@ deploy() { local DEPLOY="$2" tar czf "$DEPLOY/$PKGNAME.tar.gz" * + + touch "$2/$PKGNAME.files" + cat > "$2/$PKGNAME.desc" <<_EOF +name $PKGNAME +_EOF } check_update() { diff --git a/pkg/rootfs/rootfs.files b/pkg/rootfs/rootfs.files index cc66e05..d7b8cb8 100644 --- a/pkg/rootfs/rootfs.files +++ b/pkg/rootfs/rootfs.files @@ -1 +1,2 @@ file rootfs.img 0755 0 0 +file vmlinuz 0755 0 0 diff --git a/pkg/sed/sed.desc b/pkg/sed/sed.desc index a1aab0a..9f9d6a2 100644 --- a/pkg/sed/sed.desc +++ b/pkg/sed/sed.desc @@ -1,2 +1,2 @@ name sed -requires libc +requires crt diff --git a/pkg/shadow/shadow.desc b/pkg/shadow/shadow.desc index ef1e328..6208bfd 100644 --- a/pkg/shadow/shadow.desc +++ b/pkg/shadow/shadow.desc @@ -1,2 +1,2 @@ name shadow -requires libc +requires crt diff --git a/pkg/sqlite3/build b/pkg/sqlite3/build index b5010a4..ee62786 100755 --- a/pkg/sqlite3/build +++ b/pkg/sqlite3/build @@ -3,7 +3,7 @@ SRCDIR="sqlite-autoconf-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://sqlite.org/2018/" SHA256SUM="00ebf97be13928941940cc71de3d67e9f852698233cd98ce2d178fd08092f3dd" -DEPENDS="readline" +DEPENDS="readline-dev crt-dev" prepare() { return diff --git a/pkg/sqlite3/sqlite3.desc b/pkg/sqlite3/sqlite3.desc index c782e8b..cd8125c 100644 --- a/pkg/sqlite3/sqlite3.desc +++ b/pkg/sqlite3/sqlite3.desc @@ -1,2 +1,2 @@ name sqlite3 -requires libc readline +requires crt readline diff --git a/pkg/tar/build b/pkg/tar/build index b574852..ddecfb0 100755 --- a/pkg/tar/build +++ b/pkg/tar/build @@ -3,7 +3,7 @@ SRCDIR="tar-${VERSION}" TARBALL="${SRCDIR}.tar.xz" URL="https://ftp.gnu.org/gnu/tar/" SHA256SUM="37f3ef1ceebd8b7e1ebf5b8cc6c65bb8ebf002c7d049032bf456860f25ec2dc1" -DEPENDS="xz gzip bzip2" +DEPENDS="toolchain" prepare() { return diff --git a/pkg/tar/tar.desc b/pkg/tar/tar.desc index 02dcc9c..c6c9656 100644 --- a/pkg/tar/tar.desc +++ b/pkg/tar/tar.desc @@ -1,2 +1,2 @@ name tar -requires xz gzip bzip2 +requires xz gzip bzip2 crt diff --git a/pkg/tc-binutils/build b/pkg/tc-binutils/build index 0d94d7b..f1c2c10 100755 --- a/pkg/tc-binutils/build +++ b/pkg/tc-binutils/build @@ -3,7 +3,7 @@ SRCDIR="binutils-$VERSION" TARBALL="binutils-$VERSION.tar.xz" URL="http://ftp.gnu.org/gnu/binutils" SHA256SUM="5d20086ecf5752cc7d9134246e9588fa201740d540f7eb84d795b1f7a93bca86" -DEPENDS="" +DEPENDS="tc-pkgtool" prepare() { apply_patches diff --git a/pkg/tc-cloog/build b/pkg/tc-cloog/build index 838a41e..ff11433 100755 --- a/pkg/tc-cloog/build +++ b/pkg/tc-cloog/build @@ -3,7 +3,7 @@ SRCDIR="cloog-$VERSION" TARBALL="cloog-$VERSION.tar.gz" URL="ftp://gcc.gnu.org/pub/gcc/infrastructure" SHA256SUM="02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196" -DEPENDS="" +DEPENDS="tc-pkgtool" prepare() { return diff --git a/pkg/tc-file/build b/pkg/tc-file/build index f99ed5e..27be9ed 100755 --- a/pkg/tc-file/build +++ b/pkg/tc-file/build @@ -1,5 +1,6 @@ source "$SCRIPTDIR/pkg/file/build" -DEPENDS="" +DEPENDS="tc-pkgtool" +SUBPKG="tc-file" prepare() { return diff --git a/pkg/tc-gcc1/build b/pkg/tc-gcc1/build index 0180ff1..f9cc9d0 100755 --- a/pkg/tc-gcc1/build +++ b/pkg/tc-gcc1/build @@ -3,7 +3,7 @@ SRCDIR="gcc-$VERSION" TARBALL="gcc-$VERSION.tar.xz" URL="http://ftp.gnu.org/gnu/gcc/gcc-$VERSION" SHA256SUM="196c3c04ba2613f893283977e6011b2345d1cd1af9abeac58e916b1aab3e0080" -DEPENDS="tc-binutils tc-cloog tc-gmp tc-isl tc-mpc tc-mpfr linux_headers fortify-headers" +DEPENDS="tc-binutils tc-cloog tc-gmp tc-isl tc-mpc tc-mpfr linux-dev fortify-headers" prepare() { apply_patches diff --git a/pkg/tc-gcc2/build b/pkg/tc-gcc2/build index c675d93..3c517e7 100755 --- a/pkg/tc-gcc2/build +++ b/pkg/tc-gcc2/build @@ -1,6 +1,7 @@ # inherit package details from first stage GCC source "$SCRIPTDIR/pkg/tc-gcc1/build" -DEPENDS="tc-gcc1 musl linux_headers tc-pkgtool" +DEPENDS="tc-gcc1 libc-dev linux-dev" +SUBPKG="crt libgcc libgcc-dev crt-dev" build() { local extra="--disable-libssp" diff --git a/pkg/tc-gcc2/crt-dev.desc b/pkg/tc-gcc2/crt-dev.desc new file mode 100644 index 0000000..3b03dbf --- /dev/null +++ b/pkg/tc-gcc2/crt-dev.desc @@ -0,0 +1,2 @@ +name crt-dev +requires crt libgcc-dev libc-dev diff --git a/pkg/tc-gcc2/crt-dev.files b/pkg/tc-gcc2/crt-dev.files new file mode 100644 index 0000000..e69de29 diff --git a/pkg/tc-gcc2/crt.desc b/pkg/tc-gcc2/crt.desc new file mode 100644 index 0000000..8e89177 --- /dev/null +++ b/pkg/tc-gcc2/crt.desc @@ -0,0 +1,2 @@ +name crt +requires libgcc libc diff --git a/pkg/tc-gcc2/crt.files b/pkg/tc-gcc2/crt.files new file mode 100644 index 0000000..e69de29 diff --git a/pkg/tc-gcc2/libgcc-dev.desc b/pkg/tc-gcc2/libgcc-dev.desc index c180443..622e0ad 100644 --- a/pkg/tc-gcc2/libgcc-dev.desc +++ b/pkg/tc-gcc2/libgcc-dev.desc @@ -1 +1,2 @@ name libgcc-dev +requires libgcc diff --git a/pkg/tc-gcc2/libgcc.files b/pkg/tc-gcc2/libgcc.files index f52f979..235ec57 100644 --- a/pkg/tc-gcc2/libgcc.files +++ b/pkg/tc-gcc2/libgcc.files @@ -1,14 +1,14 @@ -slink lib/libatomic.so 0777 0 0 libatomic.so.1.2.0 -slink lib/libatomic.so.1 0777 0 0 libatomic.so.1.2.0 file lib/libatomic.so.1.2.0 0755 0 0 file lib/libgcc_s.so 0755 0 0 file lib/libgcc_s.so.1 0755 0 0 +file lib/libgomp.so.1.0.0 0755 0 0 +file lib/libitm.so.1.0.0 0755 0 0 +file lib/libstdc++.so.6.0.25 0755 0 0 +slink lib/libatomic.so 0777 0 0 libatomic.so.1.2.0 +slink lib/libatomic.so.1 0777 0 0 libatomic.so.1.2.0 slink lib/libgomp.so 0777 0 0 libgomp.so.1.0.0 slink lib/libgomp.so.1 0777 0 0 libgomp.so.1.0.0 -file lib/libgomp.so.1.0.0 0755 0 0 slink lib/libitm.so 0777 0 0libitm.so.1.0.0 slink lib/libitm.so.1 0777 0 0 libitm.so.1.0.0 -file lib/libitm.so.1.0.0 0755 0 0 slink lib/libstdc++.so 0777 0 0 libstdc++.so.6.0.25 slink lib/libstdc++.so.6 0777 0 0 libstdc++.so.6.0.25 -file lib/libstdc++.so.6.0.25 0755 0 0 diff --git a/pkg/tc-gmp/build b/pkg/tc-gmp/build index eac1909..4fe07d8 100755 --- a/pkg/tc-gmp/build +++ b/pkg/tc-gmp/build @@ -1,6 +1,7 @@ # inherit package details from target GMP package source "$SCRIPTDIR/pkg/gmp/build" -DEPENDS="" +DEPENDS="tc-pkgtool" +SUBPKG="tc-gmp" prepare() { return diff --git a/pkg/tc-isl/build b/pkg/tc-isl/build index 6f3878e..dd062b9 100755 --- a/pkg/tc-isl/build +++ b/pkg/tc-isl/build @@ -3,7 +3,7 @@ SRCDIR="isl-$VERSION" TARBALL="isl-$VERSION.tar.bz2" URL="ftp://gcc.gnu.org/pub/gcc/infrastructure" SHA256SUM="6b8b0fd7f81d0a957beb3679c81bbb34ccc7568d5682844d8924424a0dadcb1b" -DEPENDS="" +DEPENDS="tc-pkgtool" prepare() { return diff --git a/pkg/tc-mpc/build b/pkg/tc-mpc/build index ff678a1..b70acea 100755 --- a/pkg/tc-mpc/build +++ b/pkg/tc-mpc/build @@ -3,7 +3,7 @@ SRCDIR="mpc-$VERSION" TARBALL="mpc-$VERSION.tar.gz" URL="http://ftp.gnu.org/gnu/mpc" SHA256SUM="6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e" -DEPENDS="" +DEPENDS="tc-pkgtool" prepare() { return diff --git a/pkg/tc-mpfr/build b/pkg/tc-mpfr/build index 94e95f1..5e3096e 100755 --- a/pkg/tc-mpfr/build +++ b/pkg/tc-mpfr/build @@ -3,7 +3,7 @@ SRCDIR="mpfr-$VERSION" TARBALL="mpfr-$VERSION.tar.xz" URL="http://ftp.gnu.org/gnu/mpfr" SHA256SUM="67874a60826303ee2fb6affc6dc0ddd3e749e9bfcb4c8655e3953d0458a6e16e" -DEPENDS="" +DEPENDS="tc-pkgtool" prepare() { return diff --git a/pkg/tcpdump/build b/pkg/tcpdump/build index 63dd171..258b960 100755 --- a/pkg/tcpdump/build +++ b/pkg/tcpdump/build @@ -3,7 +3,7 @@ SRCDIR="tcpdump-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="http://www.tcpdump.org/release/" SHA256SUM="798b3536a29832ce0cbb07fafb1ce5097c95e308a6f592d14052e1ef1505fe79" -DEPENDS="toolchain libnl3 openssl libpcap" +DEPENDS="libnl3-dev openssl-dev libpcap-dev crt-dev" prepare() { apply_patches diff --git a/pkg/tcpdump/tcpdump.desc b/pkg/tcpdump/tcpdump.desc index 7ad18b8..e41f6c4 100644 --- a/pkg/tcpdump/tcpdump.desc +++ b/pkg/tcpdump/tcpdump.desc @@ -1,2 +1,2 @@ name tcpdump -requires libnl3 openssl libpcap libc +requires libnl3 openssl libpcap crt diff --git a/pkg/toolchain/build b/pkg/toolchain/build index 73fbc2c..0d7c858 100755 --- a/pkg/toolchain/build +++ b/pkg/toolchain/build @@ -1,4 +1,4 @@ -DEPENDS="tc-gcc2 musl linux_headers tc-pkg-config tc-file tc-pkgtool" +DEPENDS="crt-dev tc-pkg-config tc-file tc-pkgtool" build() { return @@ -21,11 +21,11 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) _EOF - save_toolchain touch "$2/$PKGNAME.files" cat > "$2/$PKGNAME.desc" <<_EOF name $PKGNAME +requires $DEPENDS _EOF } diff --git a/pkg/tzdata/build b/pkg/tzdata/build index 20cdd93..18b98a5 100644 --- a/pkg/tzdata/build +++ b/pkg/tzdata/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.xz" URL="http://infraroot.at/pygos" SHA256SUM="d7cf8a0edd7b0d9c926e4fb9b5d7adb3ca951df244806a99a7430be4e6d2a899" DEPENDS="toolchain" +SUBPKG="tzdata tzdata-dev" prepare() { sed -i 's/sbin/bin/g' Makefile diff --git a/pkg/tzdata/tzdata-dev.desc b/pkg/tzdata/tzdata-dev.desc index 82cc9bd..37894ee 100644 --- a/pkg/tzdata/tzdata-dev.desc +++ b/pkg/tzdata/tzdata-dev.desc @@ -1,2 +1,2 @@ name tzdata-dev -requires libc-dev +requires tzdata crt-dev diff --git a/pkg/tzdata/tzdata.files b/pkg/tzdata/tzdata.files index c2938f2..c53d226 100644 --- a/pkg/tzdata/tzdata.files +++ b/pkg/tzdata/tzdata.files @@ -1,4 +1,6 @@ +dir bin 0755 0 0 file bin/tzselect 0755 0 0 +dir share 0755 0 0 slink share/zoneinfo-posix 0777 0 0 zoneinfo dir share/zoneinfo-leaps 0755 0 0 dir share/zoneinfo-leaps/Indian 0755 0 0 diff --git a/pkg/unbound/build b/pkg/unbound/build index c7953be..5906008 100644 --- a/pkg/unbound/build +++ b/pkg/unbound/build @@ -3,7 +3,8 @@ SRCDIR="unbound-${VERSION}" TARBALL="${SRCDIR}.tar.gz" URL="https://www.unbound.net/downloads" SHA256SUM="2b692b8311edfad41e7d0380aac34576060d4176add81dc5db419c79b2a4cecc" -DEPENDS="openssl expat libbsd" +DEPENDS="openssl-dev expat-dev libbsd-dev crt-dev" +SUBPKG="unbound unbound-dev" prepare() { return diff --git a/pkg/unbound/unbound-dev.desc b/pkg/unbound/unbound-dev.desc index 141fe9a..a851e8a 100644 --- a/pkg/unbound/unbound-dev.desc +++ b/pkg/unbound/unbound-dev.desc @@ -1,2 +1,2 @@ name unbound-dev -requires unbound openssl-dev expat-dev libbsd-dev +requires unbound openssl-dev expat-dev libbsd-dev crt-dev diff --git a/pkg/unbound/unbound.desc b/pkg/unbound/unbound.desc index 61a2eea..a0a7227 100644 --- a/pkg/unbound/unbound.desc +++ b/pkg/unbound/unbound.desc @@ -1,2 +1,2 @@ name unbound -requires openssl expat libbsd libc +requires openssl expat libbsd crt diff --git a/pkg/usyslog/usyslog.desc b/pkg/usyslog/usyslog.desc index 3a1e293..0656314 100644 --- a/pkg/usyslog/usyslog.desc +++ b/pkg/usyslog/usyslog.desc @@ -1,2 +1,2 @@ name usyslog -requires libc +requires crt diff --git a/pkg/util-linux/build b/pkg/util-linux/build index 8ba9049..fea3cfb 100755 --- a/pkg/util-linux/build +++ b/pkg/util-linux/build @@ -3,7 +3,8 @@ SRCDIR="util-linux-${VERSION}" TARBALL="${SRCDIR}.tar.xz" URL="https://www.kernel.org/pub/linux/utils/util-linux/v$VERSION/" SHA256SUM="f261b9d73c35bfeeea04d26941ac47ee1df937bd3b0583e748217c1ea423658a" -DEPENDS="bash ncurses zlib" +DEPENDS="bash-dev ncurses-dev zlib-dev crt-dev" +SUBPKG="util-linux util-linux-dev" prepare() { apply_patches diff --git a/pkg/util-linux/util-linux-dev.desc b/pkg/util-linux/util-linux-dev.desc index bae9a37..33f0e25 100644 --- a/pkg/util-linux/util-linux-dev.desc +++ b/pkg/util-linux/util-linux-dev.desc @@ -1,2 +1,2 @@ name util-linux-dev -requires bash-dev ncurses-dev zlib-dev +requires util-linux bash-dev ncurses-dev zlib-dev crt-dev diff --git a/pkg/util-linux/util-linux.desc b/pkg/util-linux/util-linux.desc index ce5a406..7726a21 100644 --- a/pkg/util-linux/util-linux.desc +++ b/pkg/util-linux/util-linux.desc @@ -1,2 +1,2 @@ name util-linux -requires bash ncurses zlib libc +requires bash ncurses zlib crt diff --git a/pkg/util-linux/util-linux.files b/pkg/util-linux/util-linux.files index e4a19db..1c359f1 100644 --- a/pkg/util-linux/util-linux.files +++ b/pkg/util-linux/util-linux.files @@ -1,3 +1,5 @@ +dir var 0755 0 0 +dir var/lib 0755 0 0 dir var/lib/hwclock 0755 0 0 file bin/dmesg 0755 0 0 file bin/mount 0755 0 0 diff --git a/pkg/xz/build b/pkg/xz/build index 8e3522f..b2f03a7 100644 --- a/pkg/xz/build +++ b/pkg/xz/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.xz" URL="https://tukaani.org/xz/" SHA256SUM="9717ae363760dedf573dad241420c5fea86256b65bc21d2cf71b2b12f0544f4b" DEPENDS="toolchain" +SUBPKG="xz xz-dev" prepare() { return diff --git a/pkg/xz/xz-dev.desc b/pkg/xz/xz-dev.desc index 344b5aa..13ada05 100644 --- a/pkg/xz/xz-dev.desc +++ b/pkg/xz/xz-dev.desc @@ -1,2 +1,2 @@ name xz-dev -requires libc-dev +requires xz crt-dev diff --git a/pkg/xz/xz-dev.files b/pkg/xz/xz-dev.files index de66b90..d59109d 100644 --- a/pkg/xz/xz-dev.files +++ b/pkg/xz/xz-dev.files @@ -17,4 +17,4 @@ file include/lzma/lzma12.h 0644 0 0 file include/lzma/stream_flags.h 0644 0 0 file include/lzma/version.h 0644 0 0 file include/lzma/vli.h 0644 0 0 -file lib/pkgconfig/liblzma.pc +file lib/pkgconfig/liblzma.pc 0644 0 0 diff --git a/pkg/xz/xz.desc b/pkg/xz/xz.desc index bd8d01a..42a6d0e 100644 --- a/pkg/xz/xz.desc +++ b/pkg/xz/xz.desc @@ -1,2 +1,2 @@ name xz -requires libc +requires crt diff --git a/pkg/zlib/build b/pkg/zlib/build index 6262fea..f6e970e 100644 --- a/pkg/zlib/build +++ b/pkg/zlib/build @@ -4,6 +4,7 @@ TARBALL="${SRCDIR}.tar.xz" URL="http://www.zlib.net/" SHA256SUM="4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066" DEPENDS="toolchain" +SUBPKG="zlib zlib-dev" prepare() { return diff --git a/pkg/zlib/zlib-dev.desc b/pkg/zlib/zlib-dev.desc index 133b3fb..a883acb 100644 --- a/pkg/zlib/zlib-dev.desc +++ b/pkg/zlib/zlib-dev.desc @@ -1,2 +1,2 @@ name zlib-dev -requires libc-dev +requires zlib crt-dev diff --git a/pkg/zlib/zlib.desc b/pkg/zlib/zlib.desc index c0da1a5..5459d1d 100644 --- a/pkg/zlib/zlib.desc +++ b/pkg/zlib/zlib.desc @@ -1,2 +1,2 @@ name zlib -requires libc +requires crt diff --git a/pkg/zlib/zlib.files b/pkg/zlib/zlib.files index 267cb9b..3f0eeff 100644 --- a/pkg/zlib/zlib.files +++ b/pkg/zlib/zlib.files @@ -1,3 +1,4 @@ +dir lib 0755 0 0 file lib/libz.so.1.2.11 0755 0 0 slink lib/libz.so.1 0777 0 0 libz.so.1.2.11 slink lib/libz.so 0777 0 0 libz.so.1.2.11 diff --git a/util/depends.sh b/util/depends.sh deleted file mode 100755 index cb12dd2..0000000 --- a/util/depends.sh +++ /dev/null @@ -1,22 +0,0 @@ -include_pkg() { - PKGNAME="$1" # globally visible package name - - unset -f build deploy prepare check_update - unset -v VERSION TARBALL URL SRCDIR SHA256SUM DEPENDS - source "$SCRIPTDIR/pkg/$PKGNAME/build" -} - -dependencies() { - local depends="$DEPENDS" - - if [ ! -z "$depends" ]; then - for DEP in $depends; do - echo "$PKGNAME $DEP" - done - - for DEP in $depends; do - include_pkg "$DEP" - dependencies - done - fi -} diff --git a/util/depgraph.cpp b/util/depgraph.cpp new file mode 100644 index 0000000..5f524fb --- /dev/null +++ b/util/depgraph.cpp @@ -0,0 +1,169 @@ +#include +#include +#include +#include + +#include +#include +#include + +struct meta_pkg_t { + meta_pkg_t(const char *pkgname) : name(pkgname), marked(false) { + } + + void markPackage() { + if (!marked) { + marked = true; + + for (auto &dep : depends) + dep->markPackage(); + } + } + + std::string name; + bool marked; + + std::unordered_set depends; +}; + + +static std::map package_by_name; +static std::map package_provides; + + +static void handle_provides(const char *meta, const char *subpkg) +{ + meta_pkg_t *pkg; + + if (package_by_name.find(meta) == package_by_name.end()) + package_by_name[meta] = new meta_pkg_t(meta); + + package_provides[subpkg] = package_by_name[meta]; +} + +static void handle_depends(const char *meta, const char *dependency) +{ + auto it = package_provides.find(dependency); + + if (it == package_provides.end()) { + std::cerr << "nothing provides '" << dependency; + std::cerr << "', required by '" << meta << "'" << std::endl; + exit(EXIT_FAILURE); + } + + package_by_name[meta]->depends.insert(it->second); +} + + +typedef void (*line_handler_t)(const char *lhs, const char *rhs); + +static int foreach_line(const char *filename, line_handler_t cb) +{ + FILE *f = fopen(filename, "r"); + + for (;;) { + char *line = NULL; + size_t n = 0; + ssize_t ret; + + errno = 0; + ret = getline(&line, &n, f); + + if (ret < 0) { + if (errno == 0) { + free(line); + break; + } + perror(filename); + free(line); + fclose(f); + return -1; + } + + char *rhs = strchr(line, ','); + if (rhs == NULL) { + free(line); + continue; + } + + *(rhs++) = '\0'; + + char *ptr = rhs; + while (*ptr != '\0' && !isspace(*ptr)) + ++ptr; + *ptr = '\0'; + + cb(line, rhs); + free(line); + } + + fclose(f); + return 0; +} + +int main(int argc, char **argv) +{ + if (argc < 4) { + std::cerr << "usage: depgraph "; + std::cerr << " PACKAGES..." << std::endl; + return EXIT_FAILURE; + } + + foreach_line(argv[1], handle_provides); + foreach_line(argv[2], handle_depends); + + // recursively mark packages that we actually need to build + for (int i = 3; i < argc; ++i) { + auto it = package_provides.find(argv[i]); + + if (it == package_provides.end()) { + std::cerr << "nothing provides '" << argv[i] << "'"; + std::cerr << std::endl; + return EXIT_FAILURE; + } + + it->second->markPackage(); + } + + // assemble a set of only those packages + std::unordered_set pkglist; + + for (auto &it : package_by_name) { + if (it.second->marked) { + pkglist.insert(it.second); + } else { + delete it.second; + } + } + + package_provides.clear(); + package_by_name.clear(); + + // output set in topological order + while (pkglist.size() > 0) { + meta_pkg_t *pkg = NULL; + + for (auto &it : pkglist) { + if (it->depends.size() == 0) { + pkg = it; + break; + } + } + + if (pkg == NULL) { + std::cerr << "dependency graph is cyclic!"; + std::cerr << std::endl; + return EXIT_FAILURE; + } + + for (auto &it : pkglist) + it->depends.erase(pkg); + + pkglist.erase(pkg); + + std::cout << pkg->name << std::endl; + delete pkg; + } + + return EXIT_SUCCESS; +} diff --git a/util/pkgcmd.sh b/util/pkgcmd.sh index 2c9597e..b75edc9 100644 --- a/util/pkgcmd.sh +++ b/util/pkgcmd.sh @@ -1,3 +1,15 @@ +include_pkg() { + PKGNAME="$1" # globally visible package name + + unset -f build deploy prepare check_update + unset -v VERSION TARBALL URL SRCDIR SHA256SUM DEPENDS SUBPKG + source "$SCRIPTDIR/pkg/$PKGNAME/build" + + if [ -z "$SUBPKG" ]; then + SUBPKG="$PKGNAME" + fi +} + run_pkg_command() { local FUNCTION="$1" local DEPLOYDIR="$PKGDEPLOYDIR/$PKGNAME" diff --git a/util/toolchain.sh b/util/toolchain.sh deleted file mode 100644 index e851ede..0000000 --- a/util/toolchain.sh +++ /dev/null @@ -1,29 +0,0 @@ -save_toolchain() { - if [ ! -e "${TCDIR}/${TARGET}.tar.gz" ]; then - pushd "$TCDIR/$TARGET" > /dev/null - tar czf "${TCDIR}/${TARGET}.tar.gz" include lib - popd > /dev/null - fi -} - -restore_toolchain() { - pushd "$TCDIR/$TARGET" > /dev/null - rm -rf include lib - if [ -e "${TCDIR}/${TARGET}.tar.gz" ]; then - tar zxf "${TCDIR}/${TARGET}.tar.gz" - fi - popd > /dev/null -} - -install_build_deps() { - for deppkg in $DEPENDS; do - local devdir="$PKGDEPLOYDIR/$deppkg" - - if [ -d "$devdir/include" ]; then - cp -R "$devdir/include" "$TCDIR/$TARGET" - fi - if [ -d "$devdir/lib" ]; then - cp -R "$devdir/lib" "$TCDIR/$TARGET" - fi - done -}