mirror of
git://git.2f30.org/morpheus.git
synced 2024-06-16 08:38:32 +00:00
List dependencies explicitly
This is by far the simplest approach as packages previously in cross-scripts/ could also depend on other packages.
This commit is contained in:
parent
e62c2a7619
commit
4b1709f90a
3
DEPS
3
DEPS
@ -1,3 +0,0 @@
|
|||||||
irc ncurses
|
|
||||||
tinyxserver tinyxlib
|
|
||||||
tmux libevent ncurses
|
|
6
pkgbuild
6
pkgbuild
@ -1,7 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|
||||||
if test -z "$1"; then
|
if test -z "$1"; then
|
||||||
echo usage: $0 pkgpath... 1>&2
|
echo usage: $0 pkg... 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -16,6 +18,6 @@ fi
|
|||||||
mkdir -p src
|
mkdir -p src
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
./build "$1"
|
./build "pkgs/$1"
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
76
stage0
76
stage0
@ -3,59 +3,29 @@
|
|||||||
# This is the stage0 script, it prepares a basic usable system
|
# This is the stage0 script, it prepares a basic usable system
|
||||||
# in $root.
|
# in $root.
|
||||||
|
|
||||||
umask 022
|
|
||||||
|
|
||||||
. ./prepare-env
|
|
||||||
|
|
||||||
if test "$(uname -m)" != "$arch"; then
|
|
||||||
echo You need an $arch host to build morpheus 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
rm -rf root morpheus.log
|
rm -rf root morpheus.log
|
||||||
. ./prepare-root
|
|
||||||
mkdir -p src
|
|
||||||
|
|
||||||
# Fetch and install our musl cross-compiler
|
packages="crossmusl
|
||||||
./build cross-scripts/crossmusl
|
ncurses
|
||||||
|
libevent
|
||||||
|
zlib
|
||||||
|
tinyxlib
|
||||||
|
kernel
|
||||||
|
emul
|
||||||
|
busybox
|
||||||
|
fs
|
||||||
|
make
|
||||||
|
man
|
||||||
|
mksh
|
||||||
|
rsync
|
||||||
|
sbase
|
||||||
|
sdhcp
|
||||||
|
sic
|
||||||
|
sinit
|
||||||
|
smdev
|
||||||
|
syslinux
|
||||||
|
tinyxserver
|
||||||
|
tmux
|
||||||
|
ubase"
|
||||||
|
|
||||||
installed_deps=
|
./pkgbuild $packages
|
||||||
build_pkg_dep() {
|
|
||||||
pkg=$1; deps=$2
|
|
||||||
# Build dependencies for package in order
|
|
||||||
for d in $deps; do
|
|
||||||
install=1
|
|
||||||
for i in $installed_deps; do
|
|
||||||
if [ "$i" = "$d" ]; then
|
|
||||||
# If already installed, then skip it
|
|
||||||
install=0
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ $install -eq 1 ]; then
|
|
||||||
./build cross-scripts/$d
|
|
||||||
installed_deps="$installed_deps $d"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
build_pkg_deps() {
|
|
||||||
pkg=$1
|
|
||||||
while read line; do
|
|
||||||
if test "$(echo $line | cut -d' ' -f1)" != "$pkg"; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
deps=$(echo $line | cut -d' ' -f2-)
|
|
||||||
build_pkg_dep "$pkg" "$deps"
|
|
||||||
break
|
|
||||||
done < DEPS
|
|
||||||
}
|
|
||||||
|
|
||||||
build_pkg() {
|
|
||||||
build_pkg_deps $(basename $1) && ./build $1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build stage0 packages
|
|
||||||
for pkg in pkgs/*; do
|
|
||||||
build_pkg $pkg
|
|
||||||
done
|
|
||||||
|
Loading…
Reference in New Issue
Block a user