Skip to content

Commit 220f1d8

Browse files
authored
Core updates
* Easyrpg builds, bump cores
1 parent 4bcef72 commit 220f1d8

156 files changed

Lines changed: 487 additions & 425 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build.sh

Lines changed: 131 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,10 @@ SPINNER_START() {
536536
now=$(date +%s)
537537
el=$((now - _t0))
538538

539+
h=$((el / 3600))
540+
m=$(((el % 3600) / 60))
541+
s=$((el % 60))
542+
539543
base_hue=$((cycle * 12))
540544

541545
bar=""
@@ -555,7 +559,7 @@ SPINNER_START() {
555559
i=$((i + 1))
556560
done
557561

558-
printf "\r%s ┤%s├ %3ds elapsed\033[K" "$_label" "$bar" "$el"
562+
printf "\r%s ┤%s├ %d:%02d:%02d elapsed\033[K" "$_label" "$bar" "$h" "$m" "$s"
559563

560564
step=$((step + 1))
561565
sleep 0.05
@@ -807,35 +811,56 @@ for NAME in $CORES; do
807811
SOURCE=$(echo "$MODULE" | jq -r '.source')
808812
SYMBOLS=$(echo "$MODULE" | jq -r '.symbols')
809813

810-
# Make keys
811-
MAKE_FILE=$(echo "$MODULE" | jq -r '.make.file')
814+
# Make skip: allow skipping the main 'make' phase entirely.
815+
MAKE_SKIP=$(echo "$MODULE" | jq -r '.make.skip // 0' 2>/dev/null)
816+
case "$MAKE_SKIP" in
817+
1) MAKE_SKIP=1 ;;
818+
*) MAKE_SKIP=0 ;;
819+
esac
820+
821+
# Make keys (make.file is only required when make.skip=0)
822+
MAKE_FILE=$(echo "$MODULE" | jq -r '.make.file // ""')
812823

813824
# Accept .make.args as either:
814825
# - array: ["A=B","C=D"]
815826
# - string: "A=B C=D"
816827
# - null/missing: empty
817-
MAKE_ARGS_TYPE=$(echo "$MODULE" | jq -r '(.make.args // empty) | type' 2>/dev/null || echo "")
828+
MAKE_ARGS_TYPE=""
818829
MAKE_ARGS_STR=""
819830
MAKE_ARGS_FILE=""
820831

821-
if [ "$MAKE_ARGS_TYPE" = "array" ]; then
832+
if [ "$MAKE_SKIP" -eq 0 ]; then
833+
MAKE_ARGS_TYPE=$(echo "$MODULE" | jq -r '(.make.args // empty) | type' 2>/dev/null || echo "")
834+
fi
835+
836+
if [ "$MAKE_SKIP" -eq 0 ] && [ "$MAKE_ARGS_TYPE" = "array" ]; then
822837
MAKE_ARGS_FILE="$RUN_TMPDIR/.make_args.${NAME}.$$"
823838
: >"$MAKE_ARGS_FILE"
824839
echo "$MODULE" | jq -r '.make.args[]' >"$MAKE_ARGS_FILE" 2>/dev/null || :
825840
MAKE_ARGS_STR=$(tr '\n' ' ' <"$MAKE_ARGS_FILE" | sed 's/[[:space:]][[:space:]]*/ /g; s/[[:space:]]*$//')
826-
elif [ "$MAKE_ARGS_TYPE" = "string" ]; then
841+
elif [ "$MAKE_SKIP" -eq 0 ] && [ "$MAKE_ARGS_TYPE" = "string" ]; then
827842
MAKE_ARGS_STR=$(echo "$MODULE" | jq -r '.make.args' 2>/dev/null)
828843
else
829844
MAKE_ARGS_STR=""
830845
fi
831846

832-
MAKE_TARGET=$(echo "$MODULE" | jq -r '.make.target')
847+
MAKE_TARGET=""
848+
if [ "$MAKE_SKIP" -eq 0 ]; then
849+
MAKE_TARGET=$(echo "$MODULE" | jq -r '.make.target')
850+
fi
851+
833852
MAKE_ARCH='-march=armv8-a+crc+crypto -mtune=cortex-a53'
834853

835-
# Verify required keys
836-
if [ -z "$DIR" ] || [ -z "$OUTPUT_LIST" ] || [ -z "$SOURCE" ] || [ -z "$MAKE_FILE" ] || [ -z "$SYMBOLS" ]; then
854+
# Verify required keys (make.file is only required when make.skip=0)
855+
if [ -z "$DIR" ] || [ -z "$OUTPUT_LIST" ] || [ -z "$SOURCE" ] || [ -z "$SYMBOLS" ]; then
837856
printf "Missing required configuration keys for '%s' in '%s'\n" "$NAME" "$CORE_CONFIG" >&2
838-
MARK_FAIL "$NAME" "config" "missing required keys: directory/output/source/make.file/symbols"
857+
MARK_FAIL "$NAME" "config" "missing required keys: directory/output/source/symbols"
858+
continue
859+
fi
860+
861+
if [ "$MAKE_SKIP" -eq 0 ] && [ -z "$MAKE_FILE" ]; then
862+
printf "Missing required configuration key for '%s': make.file (and make.skip is not set)\n" "$NAME" >&2
863+
MARK_FAIL "$NAME" "config" "missing required key: make.file (set make.skip=1 to disable)"
839864
continue
840865
fi
841866

@@ -997,92 +1022,97 @@ for NAME in $CORES; do
9971022
cd "$WORKDIR" || { printf "Failed to enter WORKDIR %s\n" "$WORKDIR" >&2; FAIL_AND_CONTINUE "$NAME" "fs" "failed to enter WORKDIR"; }
9981023

9991024
printf "Make Structure:"
1000-
printf "\n\tFILE:\t%s" "$MAKE_FILE"
1001-
printf "\n\tARCH:\t%s" "ARM64_A53"
1002-
printf "\n\tARGS:\t%s" "$MAKE_ARGS_STR"
1003-
printf "\n\tTARGET: %s\n" "$MAKE_TARGET"
1025+
if [ "$MAKE_SKIP" -eq 1 ]; then
1026+
printf "\n\tSKIP:\t1\n"
1027+
printf "\tNOTE:\tSkipping main make step for '%s'\n" "$NAME"
1028+
printf "SKIP: make phase disabled by make.skip=1 for %s\n" "$NAME" >>"$LOGFILE"
1029+
else
1030+
printf "\n\tFILE:\t%s" "$MAKE_FILE"
1031+
printf "\n\tARCH:\t%s" "ARM64_A53"
1032+
printf "\n\tARGS:\t%s" "$MAKE_ARGS_STR"
1033+
printf "\n\tTARGET: %s\n" "$MAKE_TARGET"
1034+
fi
10041035

10051036
START_TS=$(date +%s)
10061037
BUILD_LABEL="Building $NAME started @ $START_WALL"
10071038

1008-
# Build make argv safely (no eval)
1009-
set -- make -j"$MAKE_CORES" -f "$MAKE_FILE"
1039+
if [ "$MAKE_SKIP" -eq 0 ]; then
1040+
# Build make argv safely (no eval)
1041+
set -- make -j"$MAKE_CORES" -f "$MAKE_FILE"
1042+
1043+
TRANSFORM_MAKE_ARG() {
1044+
_a=$1
1045+
1046+
case $_a in
1047+
OVERRIDE_CC=*)
1048+
_v=${_a#OVERRIDE_CC=}
1049+
case " $_v " in
1050+
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_CC=$_v" ;;
1051+
*) printf '%s\n' "OVERRIDE_CC=$_v $MAKE_ARCH" ;;
1052+
esac
1053+
return 0
1054+
;;
1055+
OVERRIDE_CXX=*)
1056+
_v=${_a#OVERRIDE_CXX=}
1057+
case " $_v " in
1058+
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_CXX=$_v" ;;
1059+
*) printf '%s\n' "OVERRIDE_CXX=$_v $MAKE_ARCH" ;;
1060+
esac
1061+
return 0
1062+
;;
1063+
OVERRIDE_LD=*)
1064+
_v=${_a#OVERRIDE_LD=}
1065+
case " $_v " in
1066+
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_LD=$_v" ;;
1067+
*) printf '%s\n' "OVERRIDE_LD=$_v $MAKE_ARCH" ;;
1068+
esac
1069+
return 0
1070+
;;
1071+
esac
10101072

1011-
TRANSFORM_MAKE_ARG() {
1012-
_a=$1
1073+
printf '%s\n' "$_a"
1074+
}
10131075

1014-
case $_a in
1015-
OVERRIDE_CC=*)
1016-
_v=${_a#OVERRIDE_CC=}
1017-
case " $_v " in
1018-
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_CC=$_v" ;;
1019-
*) printf '%s\n' "OVERRIDE_CC=$_v $MAKE_ARCH" ;;
1020-
esac
1021-
return 0
1022-
;;
1023-
OVERRIDE_CXX=*)
1024-
_v=${_a#OVERRIDE_CXX=}
1025-
case " $_v " in
1026-
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_CXX=$_v" ;;
1027-
*) printf '%s\n' "OVERRIDE_CXX=$_v $MAKE_ARCH" ;;
1028-
esac
1029-
return 0
1030-
;;
1031-
OVERRIDE_LD=*)
1032-
_v=${_a#OVERRIDE_LD=}
1033-
case " $_v " in
1034-
*" -march="*|*" -mcpu="*|*" -mtune="*) printf '%s\n' "OVERRIDE_LD=$_v" ;;
1035-
*) printf '%s\n' "OVERRIDE_LD=$_v $MAKE_ARCH" ;;
1036-
esac
1037-
return 0
1038-
;;
1039-
esac
1076+
# Append args from JSON
1077+
if [ "$MAKE_ARGS_TYPE" = "array" ] && [ -n "$MAKE_ARGS_FILE" ] && [ -s "$MAKE_ARGS_FILE" ]; then
1078+
while IFS= read -r _a; do
1079+
[ -n "$_a" ] || continue
1080+
_t=$(TRANSFORM_MAKE_ARG "$_a")
1081+
[ -n "$_t" ] && set -- "$@" "$_t"
1082+
done <"$MAKE_ARGS_FILE"
1083+
elif [ -n "$MAKE_ARGS_STR" ]; then
1084+
# shellcheck disable=SC2086
1085+
for _a in $MAKE_ARGS_STR; do
1086+
_t=$(TRANSFORM_MAKE_ARG "$_a")
1087+
[ -n "$_t" ] && set -- "$@" "$_t"
1088+
done
1089+
fi
10401090

1041-
printf '%s\n' "$_a"
1042-
}
1091+
# Add explicit make target if present
1092+
if [ -n "$MAKE_TARGET" ] && [ "$MAKE_TARGET" != "null" ]; then
1093+
set -- "$@" "$MAKE_TARGET"
1094+
fi
10431095

1044-
# Append args from JSON
1045-
if [ "$MAKE_ARGS_TYPE" = "array" ] && [ -n "$MAKE_ARGS_FILE" ] && [ -s "$MAKE_ARGS_FILE" ]; then
1046-
while IFS= read -r _a; do
1047-
[ -n "$_a" ] || continue
1048-
_t=$(TRANSFORM_MAKE_ARG "$_a")
1049-
[ -n "$_t" ] && set -- "$@" "$_t"
1050-
done <"$MAKE_ARGS_FILE"
1051-
elif [ -n "$MAKE_ARGS_STR" ]; then
1052-
# shellcheck disable=SC2086
1053-
for _a in $MAKE_ARGS_STR; do
1054-
_t=$(TRANSFORM_MAKE_ARG "$_a")
1055-
[ -n "$_t" ] && set -- "$@" "$_t"
1096+
# Debug: log actual argv we will run
1097+
printf "EXEC:" >>"$LOGFILE"
1098+
for __x in "$@"; do
1099+
printf " [%s]" "$__x" >>"$LOGFILE"
10561100
done
1057-
fi
1058-
1059-
# Add explicit make target if present
1060-
if [ -n "$MAKE_TARGET" ] && [ "$MAKE_TARGET" != "null" ]; then
1061-
set -- "$@" "$MAKE_TARGET"
1062-
fi
1063-
1064-
# Debug: log actual argv we will run
1065-
printf "EXEC:" >>"$LOGFILE"
1066-
for __x in "$@"; do
1067-
printf " [%s]" "$__x" >>"$LOGFILE"
1068-
done
1069-
printf "\n" >>"$LOGFILE"
1070-
1071-
# Run make with spinner; log all output
1072-
if RUN_WITH_SPINNER_LOG "$BUILD_LABEL" "$LOGFILE" "$@"; then
1073-
END_WALL="$(NOW)"
1074-
printf "\nBuild succeeded: %s at %s\n" "$NAME" "$END_WALL"
1101+
printf "\n" >>"$LOGFILE"
10751102

1076-
jq --arg name "$NAME" --arg hash "$REMOTE_HASH" --arg dir "$DIR" \
1077-
'(.[$name] = {"hash":$hash,"dir":$dir})' "$CACHE_FILE" >"$CACHE_FILE.tmp" && mv "$CACHE_FILE.tmp" "$CACHE_FILE"
1078-
else
1079-
FAIL_WALL="$(NOW)"
1080-
printf "\nBuild FAILED: %s at %s - see %s\n" "$NAME" "$FAIL_WALL" "$LOGFILE" >&2
1081-
printf '\a' 2>/dev/null || :
1103+
# Run make with spinner; log all output
1104+
if RUN_WITH_SPINNER_LOG "$BUILD_LABEL" "$LOGFILE" "$@"; then
1105+
END_WALL="$(NOW)"
1106+
printf "\nBuild succeeded: %s at %s\n" "$NAME" "$END_WALL"
1107+
else
1108+
FAIL_WALL="$(NOW)"
1109+
printf "\nBuild FAILED: %s at %s - see %s\n" "$NAME" "$FAIL_WALL" "$LOGFILE" >&2
1110+
printf '\a' 2>/dev/null || :
10821111

1083-
MARK_FAIL "$NAME" "make" "make failed (see build.log)"
1084-
RETURN_TO_BASE
1085-
continue
1112+
MARK_FAIL "$NAME" "make" "make failed (see build.log)"
1113+
RETURN_TO_BASE
1114+
continue
1115+
fi
10861116
fi
10871117

10881118
END_TS=$(date +%s)
@@ -1182,23 +1212,31 @@ for NAME in $CORES; do
11821212
sort -k3 .index-extended -o .index-extended
11831213
sort .index -o .index
11841214

1215+
# Cache update only after outputs validated, moved, zipped, and indexed successfully
1216+
jq --arg name "$NAME" --arg hash "$REMOTE_HASH" --arg dir "$DIR" \
1217+
'(.[$name] = {"hash":$hash,"dir":$dir})' "$CACHE_FILE" >"$CACHE_FILE.tmp" && mv "$CACHE_FILE.tmp" "$CACHE_FILE"
1218+
11851219
# After packaging: purge repo if requested, otherwise try cleaning build artifacts
11861220
if [ "$PURGE" -eq 1 ] || [ "$CORE_PURGE_FLAG" -eq 1 ]; then
11871221
printf "\nPurging core repo directory: %s\n" "$CORE_DIR"
11881222
rm -rf -- "$CORE_DIR"
11891223
else
11901224
printf "\nCleaning build environment for '%s'\n" "$NAME"
1191-
(
1192-
cd "$CORE_DIR" 2>/dev/null || exit 0
1225+
if [ "$MAKE_SKIP" -eq 1 ]; then
1226+
printf "Skipping clean: make.skip=1 for '%s'\n" "$NAME"
1227+
else
1228+
(
1229+
cd "$CORE_DIR" 2>/dev/null || exit 0
11931230

1194-
# Prefer cleaning using the same makefile we built with
1195-
make -j"$MAKE_CORES" -f "$MAKE_FILE" clean >/dev/null 2>&1 && exit 0
1231+
# Prefer cleaning using the same makefile we built with
1232+
make -j"$MAKE_CORES" -f "$MAKE_FILE" clean >/dev/null 2>&1 && exit 0
11961233

1197-
# Fallback: common clean target
1198-
make clean -j"$MAKE_CORES" >/dev/null 2>&1 && exit 0
1234+
# Fallback: common clean target
1235+
make clean -j"$MAKE_CORES" >/dev/null 2>&1 && exit 0
11991236

1200-
exit 0
1201-
) || :
1237+
exit 0
1238+
) || :
1239+
fi
12021240
fi
12031241

12041242
RETURN_TO_BASE

core/.index

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ chailove_libretro.so.zip
1717
chimerasnes_libretro.so.zip
1818
crocods_libretro.so.zip
1919
dice_libretro.so.zip
20+
dosbox_core_libretro.so.zip
2021
dosbox_pure_libretro.so.zip
2122
dosbox_svn_libretro.so.zip
2223
DoubleCherryGB_libretro.so.zip
24+
easyrpg_libretro.so.zip
2325
ecwolf_libretro.so.zip
2426
emux_chip8_libretro.so.zip
2527
emux_gb_libretro.so.zip
@@ -97,6 +99,7 @@ numero_libretro.so.zip
9799
nxengine_libretro.so.zip
98100
o2em_libretro.so.zip
99101
opera_libretro.so.zip
102+
parallel_n64_libretro.so.zip
100103
pcsx_rearmed_libretro.so.zip
101104
picodrive_libretro.so.zip
102105
pocketcdg_libretro.so.zip
@@ -114,8 +117,8 @@ quasi88_libretro.so.zip
114117
quicknes_libretro.so.zip
115118
race_libretro.so.zip
116119
retro8_libretro.so.zip
117-
scummvm_libretro.so.zip
118120
sameboy_libretro.so.zip
121+
scummvm_libretro.so.zip
119122
smsplus_libretro.so.zip
120123
snes9x2002_libretro.so.zip
121124
snes9x2005_libretro.so.zip

0 commit comments

Comments
 (0)