@@ -102,7 +102,7 @@ setupPackage()
102102{
103103 local package=$1
104104
105- unset PKG_VER PKG_CATEGORY PKG_PRETTY_NAME PKG_OPTIONAL PKG_DEPENDENCIES
105+ unset PKG_VER PKG_CATEGORY PKG_PRETTY_NAME PKG_OPTIONAL
106106 unset SRC_URL GIT_URL GIT_COMMIT
107107 unset HOST_BUILD_FOLDER HOST_BUILD_MAKE HOST_BUILD_CONFIGURE_ARGS HOST_BUILD_CFLAGS HOST_BUILD_CXXFLAGS HOST_BUILD_LDFLAGS
108108 unset CONFIGURE_ARGS MESON_ARGS CMAKE_ARGS
@@ -282,15 +282,60 @@ setupPackage()
282282 if [ -n " $CI " ]; then
283283 rm -rf " $INIT_DIR /cache/$package "
284284 fi
285-
286- echo $package >> index
287285}
288286
289287setupPackages ()
290288{
291289 cd " $INIT_DIR /workdir"
292290
293- for package in $PACKAGES ; do
291+ # We need to build package list respecting dependencies order
292+ # First add packages that don't need extra dependencies
293+
294+ rm -f " $INIT_DIR /workdir/index"
295+
296+ export FILTERED_PACKAGES=" "
297+ export TODO_PACKAGES=$PACKAGES
298+
299+ while [ -n " $TODO_PACKAGES " ]; do
300+ NEW_TODO=" "
301+
302+ for package in $TODO_PACKAGES ; do
303+ unset DEPENDENCIES
304+
305+ if [ ! -d " $INIT_DIR /packages/$package " ]; then
306+ echo " E: Package '$package ' don't exists."
307+ exit 1
308+ fi
309+
310+ source " $INIT_DIR /packages/$package /build.sh"
311+
312+ if [ -z " $DEPENDENCIES " ]; then
313+ if ! echo " $FILTERED_PACKAGES " | grep -q " $package " ; then
314+ FILTERED_PACKAGES+=" $package "
315+ continue
316+ fi
317+ fi
318+
319+ for dep in $DEPENDENCIES ; do
320+ if ! echo " $FILTERED_PACKAGES " | grep -q " $dep " ; then
321+ NEW_TODO+=" $package "
322+ break
323+ fi
324+ done
325+
326+ if ! echo " $NEW_TODO " | grep -q " $package " ; then
327+ if ! echo " $FILTERED_PACKAGES " | grep -q " $package " ; then
328+ FILTERED_PACKAGES+=" $package "
329+ fi
330+ fi
331+ done
332+
333+ TODO_PACKAGES=" $NEW_TODO "
334+ done
335+
336+ echo $FILTERED_PACKAGES > " $INIT_DIR /workdir/index"
337+
338+ for package in $FILTERED_PACKAGES ; do
294339 packageFullPath=$( ls " $INIT_DIR /built-pkgs/$package -" * " $ARCH .rat" 2> /dev/zero)
295340 packageCommitFullPath=$( ls " $INIT_DIR /built-pkgs/$package -" * " $ARCH .commit" 2> /dev/zero)
296341
@@ -339,6 +384,10 @@ compileAll()
339384 local packageCount=$( cat " $INIT_DIR /workdir/index" | wc -l)
340385
341386 for package in $( cat " $INIT_DIR /workdir/index" ) ; do
387+ if [ ! -d " $INIT_DIR /workdir/$package " ]; then
388+ continue
389+ fi
390+
342391 local packageBuildDir=" $INIT_DIR /workdir/$package /build_dir"
343392 local packageDestDirPkg=" $INIT_DIR /workdir/$package /destdir-pkg"
344393 mkdir -p " $packageBuildDir "
@@ -466,7 +515,7 @@ export NDK_FILENAME="${NDK_URL##*/}"
466515export MINGW_URL=" http://techer.pascal.free.fr/Red-Rose_MinGW-w64-Toolchain/Red-Rose-MinGW-w64-Posix-Urct-v12.0.0.r458.g03d8a40f5-Gcc-11.5.0.tar.xz"
467516export MINGW_FILENAME=" ${MINGW_URL##*/ } "
468517
469- export PACKAGES=" $( cat packages/index ) "
518+ export PACKAGES=" $( ls packages) "
470519export INIT_DIR=" $PWD "
471520export INIT_PATH=" $PATH "
472521
0 commit comments