Skip to content

Commit 1dae914

Browse files
committed
initial steps towards soar nests
1 parent 6320a8e commit 1dae914

File tree

4 files changed

+2198
-0
lines changed

4 files changed

+2198
-0
lines changed

.github/scripts/builder.sh

Lines changed: 342 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,342 @@
1+
#!/usr/bin/env bash
2+
3+
#-------------------------------------------------------#
4+
## <DO NOT RUN STANDALONE, meant for CI Only>
5+
## Meant to Build & Upload All our Packages
6+
## Self: https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/builder.sh
7+
# bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/builder.sh")
8+
##Env vars
9+
# (Remote) FORCE_REBUILD_ALL=YES --> Rebuilds everything regardless if prebuilt already exists
10+
# (Local) SBUILD_REBUILD=true --> Rebuilds Local SBUILD regardless if remote prebuilt already exists
11+
# KEEP_LOGS="YES" --> Keep Dirs/Files
12+
#-------------------------------------------------------#
13+
14+
#-------------------------------------------------------#
15+
sbuild_builder()
16+
{
17+
##Version
18+
SBB_VERSION="0.0.1" && echo -e "[+] SBUILD Builder Version: ${SBB_VERSION}" ; unset SBB_VERSION
19+
##Repo
20+
if [[ -z "${GITHUB_REPOSITORY//[[:space:]]/}" ]]; then
21+
echo -e "\n[✗] FATAL: Failed to Get \$GITHUB_REPOSITORY\n"
22+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
23+
return 1 || exit 1
24+
elif echo "${GITHUB_REPOSITORY}" | grep -qiE 'github.com'; then
25+
GITHUB_REPOSITORY="$(echo "${GITHUB_REPOSITORY}" | sed -E 's|^(https://github.com/)?([^/]+/[^/]+).*|\2|' | tr -d '[:space:]')"
26+
export GITHUB_REPOSITORY
27+
fi
28+
PKG_REPO="$(echo "${GITHUB_REPOSITORY}" | awk -F'/' '{gsub(/^[ \t]+|[ \t]+$/, "", $0); sub(/\.git$/, "", $NF); print $NF}' | tr -d '[:space:]')"
29+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "PKG_REPO=${PKG_REPO}" >> "${GITHUB_ENV}"
30+
PKG_REPO_OWNER="$(echo "${GITHUB_REPOSITORY}" | awk -F'/' '{gsub(/^[ \t]+|[ \t]+$/, "", $0); print $1}' | tr -d '[:space:]')"
31+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "PKG_REPO_OWNER=${PKG_REPO_OWNER}" >> "${GITHUB_ENV}"
32+
export PKG_REPO PKG_REPO_OWNER
33+
##Enable Debug
34+
if [ "${DEBUG}" = "1" ] || [ "${DEBUG}" = "ON" ]; then
35+
set -x
36+
fi
37+
##Get/Set ENVS (from Host)
38+
#User
39+
if [ -z "${USER+x}" ] || [ -z "${USER##*[[:space:]]}" ]; then
40+
case "${USER}" in
41+
"" )
42+
echo "WARNING: \$USER is Unknown"
43+
USER="$(whoami)"
44+
export USER
45+
if [ -z "${USER}" ]; then
46+
echo -e "[-] INFO: Setting USER --> ${USER}"
47+
else
48+
echo -e "[-] WARNING: FAILED to find \$USER"
49+
fi
50+
;;
51+
esac
52+
fi
53+
##ENV:$PATH
54+
HOME="$(getent passwd ${USER} | cut -d: -f6)" && export HOME="${HOME}"
55+
export PATH="${HOME}/.local/share/soar/bin:${HOME}/bin:${HOME}/.cargo/bin:${HOME}/.cargo/env:${HOME}/.config/guix/current/bin/guix:${HOME}/.go/bin:${HOME}/go/bin:${HOME}/.local/bin:${HOME}/miniconda3/bin:${HOME}/miniconda3/condabin:/root/.config/guix/current/bin/guix:/usr/local/zig:/usr/local/zig/lib:/usr/local/zig/lib/include:/usr/local/musl/bin:/usr/local/musl/lib:/usr/local/musl/include:${PATH}"
56+
if command -v awk >/dev/null 2>&1 && command -v sed >/dev/null 2>&1; then
57+
PATH="$(echo "${PATH}" | awk 'BEGIN{RS=":";ORS=":"}{gsub(/\n/,"");if(!a[$0]++)print}' | sed 's/:*$//')" ; export PATH
58+
fi
59+
HOST_TRIPLET="$(uname -m)-$(uname -s)"
60+
if [ -z "${SYSTMP+x}" ] || [ -z "${SYSTMP##*[[:space:]]}" ]; then
61+
SYSTMP="$(dirname $(realpath $(mktemp -u)))" && export SYSTMP="${SYSTMP}"
62+
mkdir -p "${SYSTMP}" 2>/dev/null
63+
fi
64+
OWD_TMPDIR="$(realpath .)" ; export OWD_TMPDIR
65+
TMPDIRS="mktemp -d --tmpdir=${SYSTMP}/pkgforge XXXXXXXXX_SBUILD"
66+
USER_AGENT="$(curl -qfsSL 'https://pub.ajam.dev/repos/Azathothas/Wordlists/Misc/User-Agents/ua_chrome_macos_latest.txt')"
67+
export HOST_TRIPLET PKG_REPO SYSTMP TMPDIRS USER_AGENT
68+
if [[ "${KEEP_PREVIOUS}" != "YES" ]]; then
69+
rm -rf "${SYSTMP}/pkgforge"
70+
find "${SYSTMP}" -mindepth 1 \( -type f -o -type d \) -empty -not -path "$(pwd)" -not -path "$(pwd)/*" -delete 2>/dev/null
71+
fi
72+
mkdir -p "${SYSTMP}/pkgforge"
73+
##Get Initial Inputs
74+
for attempt in {1..4}; do
75+
BUILDSCRIPT="$(mktemp --tmpdir="${SYSTMP}/pkgforge" XXXXXXXXX_build.yaml)" && export BUILDSCRIPT="${BUILDSCRIPT}" && break
76+
echo -e "[-] TMPFILE Creation Failed ($attempt/4) Retrying..."
77+
sleep 1
78+
done
79+
if [[ ! -f "${BUILDSCRIPT}" ]]; then
80+
echo -e "\n[✗] FATAL: Failed to create \$BUILDSCRIPT after 4 Retries\n"
81+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
82+
return 1 || exit 1
83+
fi
84+
INPUT_FILE="${1:-$(echo "$@" | tr -d '[:space:]')}" ; unset INPUT_FILE_REMOTE
85+
if [ -n "${INPUT_FILE+x}" ] && [ -n "${INPUT_FILE##*[[:space:]]}" ]; then
86+
if echo "${INPUT_FILE}" | grep -qE '^https?://'; then
87+
touch "$(realpath .)/SBUILD_INPUT"
88+
curl -w "(SBUILD) <== %{url}\n" -fL "${INPUT_FILE}" -o "$(realpath './SBUILD_INPUT' | tr -d '[:space:]')"
89+
if [[ ! -s "$(realpath './SBUILD_INPUT')" || $(stat -c%s "$(realpath './SBUILD_INPUT')") -le 10 ]]; then
90+
echo -e "\n[✗] FATAL: Failed to Fetch ${INPUT_FILE}\n"
91+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
92+
( rm "$(realpath './SBUILD_INPUT' )" ) 2>/dev/null
93+
export CONTINUE_SBUILD="NO"
94+
return 1 || exit 1
95+
else
96+
INPUT_FILE_REMOTE="$(echo "${INPUT_FILE}" | tr -d '[:space:]')" ; export INPUT_FILE_REMOTE
97+
INPUT_FILE="$(realpath './SBUILD_INPUT' | tr -d '[:space:]')" ; export INPUT_FILE
98+
SELF_NAME="${ARGV0:-${0##*/}}" ; export SELF_NAME
99+
fi
100+
elif [ ! -f "$(realpath ${INPUT_FILE})" ] || [ ! -s "$(realpath ${INPUT_FILE})" ]; then
101+
echo -e "\n[✗] FATAL: ${INPUT_FILE} is NOT a Valid file\n"
102+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
103+
export CONTINUE_SBUILD="NO"
104+
return 1 || exit 1
105+
else
106+
INPUT_FILE="$(realpath ${INPUT_FILE})" ; export INPUT_FILE
107+
SELF_NAME="${ARGV0:-${0##*/}}" ; export SELF_NAME
108+
fi
109+
else
110+
SELF_NAME="sbuild-builder" ; export SELF_NAME
111+
fi
112+
if [[ -z "${INPUT_FILE}" ]]; then
113+
echo -e "\n[+] Building Everything (Rerun: ${SELF_NAME} /path/to/SBUILD_FILE , if you are building a Single Prog)\n"
114+
else
115+
if [ -f "${INPUT_FILE}" ] && [ -s "${INPUT_FILE}" ]; then
116+
echo -e "\n[+] Building [${INPUT_FILE}] Locally\n"
117+
cp -fv "${INPUT_FILE}" "${BUILDSCRIPT}"
118+
if [[ -s "${BUILDSCRIPT}" && $(stat -c%s "${BUILDSCRIPT}") -gt 10 ]]; then
119+
export LOCAL_SBUILD="YES"
120+
else
121+
echo -e "\n[✗] FATAL: ${INPUT_FILE} is NOT a Valid file\n"
122+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
123+
fi
124+
else
125+
echo -e "\n[✗] FATAL: ${INPUT_FILE} is NOT a file\n"
126+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
127+
export CONTINUE_SBUILD="NO"
128+
return 1 || exit 1
129+
fi
130+
fi
131+
#Clean
132+
unset INPUT_FILE SELF_NAME
133+
#-------------------------------------------------------#
134+
135+
#-------------------------------------------------------#
136+
##Init
137+
INITSCRIPT="$(mktemp --tmpdir=${SYSTMP} XXXXXXXXX_init.sh)" && export INITSCRIPT="${INITSCRIPT}"
138+
curl -qfsSL "https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/setup_$(uname -m).sh" -o "${INITSCRIPT}"
139+
chmod +xwr "${INITSCRIPT}" && source "${INITSCRIPT}"
140+
#Check
141+
if [ "${CONTINUE}" != "YES" ]; then
142+
echo -e "\n[✗] Failed To Initialize\n"
143+
exit 1
144+
fi
145+
##Ulimits
146+
#(-n) Open File Descriptors
147+
echo -e "[+] ulimit -n (open file descriptors) :: [Soft --> $(ulimit -n -S)] [Hard --> $(ulimit -n -H)] [Total --> $(cat '/proc/sys/fs/file-max')]"
148+
ulimit -n "$(ulimit -n -H)"
149+
#Stack Size
150+
ulimit -s unlimited
151+
#-------------------------------------------------------#
152+
153+
#-------------------------------------------------------#
154+
##Helpers
155+
source <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/helpers.sh")
156+
sanitize_logs()
157+
{
158+
if [[ -s "${TEMP_LOG}" && $(stat -c%s "${TEMP_LOG}") -gt 10 && -n "${LOGPATH}" ]]; then
159+
echo -e "\n[+] Sanitizing $(realpath "${TEMP_LOG}") ==> ${LOGPATH}"
160+
if command -v trufflehog &> /dev/null; then
161+
trufflehog filesystem "${TEMP_LOG}" --no-fail --no-verification --no-update --json 2>/dev/null | jq -r '.Raw' | sed '/{/d' | xargs -I "{}" sh -c 'echo "{}" | tr -d " \t\r\f\v"' | xargs -I "{}" sed "s/{}/ /g" -i "${TEMP_LOG}"
162+
fi
163+
sed -e '/.*github_pat.*/Id' \
164+
-e '/.*ghp_.*/Id' \
165+
-e '/.*glpat.*/Id' \
166+
-e '/.*hf_.*/Id' \
167+
-e '/.*token.*/Id' \
168+
-e '/.*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.*/Id' \
169+
-e '/.*access_key_id.*/Id' \
170+
-e '/.*secret_access_key.*/Id' \
171+
-e '/.*cloudflarestorage.*/Id' -i "${TEMP_LOG}"
172+
#sed '/.*\[+\] Total Size.*/I,$ { /.*\[+\] Total Size.*/I p; d }' -i "${TEMP_LOG}"
173+
sed '/\(LOGPATH\|ENVPATH\)=/d' -i "${TEMP_LOG}"
174+
#grep -viE 'github_pat|ghp_|glpat|hf_|token|access_key_id|secret_access_key|cloudflarestorage' "${TEMP_LOG}" | tee "${LOGPATH}" && rm "${TEMP_LOG}" 2>/dev/null
175+
#mv -fv "${TEMP_LOG}" "${LOGPATH}" && rm "${TEMP_LOG}" 2>/dev/null
176+
echo '\\\\====================== Package Forge ======================////' > "${LOGPATH}"
177+
echo '|--- Repository: https://github.com/pkgforge/soar ---|' >> "${LOGPATH}"
178+
echo '|--- Contact: https://docs.pkgforge.dev/contact/chat ---|' >> "${LOGPATH}"
179+
echo '|--- Discord: https://discord.gg/djJUs48Zbu ---|' >> "${LOGPATH}"
180+
echo '|--- Docs: https://docs.pkgforge.dev/sbuild/nests ---|' >> "${LOGPATH}"
181+
echo '|-----------------------------------------------------------------|' >> "${LOGPATH}"
182+
grep -viE 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|github_pat|ghp_|glpat|hf_|token|access_key_id|secret_access_key|cloudflarestorage' "${TEMP_LOG}" >> "${LOGPATH}" && rm "${TEMP_LOG}" 2>/dev/null
183+
fi
184+
}
185+
export -f sanitize_logs
186+
#Check
187+
if ! (declare -F setup_env &>/dev/null && \
188+
declare -F check_sane_env &>/dev/null && \
189+
declare -F gen_json_from_sbuild &>/dev/null && \
190+
declare -F build_progs &>/dev/null && \
191+
declare -F generate_json &>/dev/null && \
192+
declare -F upload_to_ghcr &>/dev/null && \
193+
declare -F sanitize_logs &>/dev/null && \
194+
declare -F cleanup_env &>/dev/null); then
195+
echo -e "\n[✗] FATAL: Required Functions could NOT BE Found\n"
196+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
197+
exit 1
198+
fi
199+
#-------------------------------------------------------#
200+
201+
#-------------------------------------------------------#
202+
##Build
203+
rm -rvf "${SYSTMP}/pkgforge/SBUILD_URLS" 2>/dev/null
204+
unset RECIPES
205+
#If local
206+
if [[ "${LOCAL_SBUILD}" == "YES" ]]; then
207+
if echo "${INPUT_FILE_REMOTE}" | grep -qE '^https?://'; then
208+
echo "${INPUT_FILE_REMOTE}" > "${SYSTMP}/pkgforge/SBUILD_URLS"
209+
else
210+
echo "$(realpath ${BUILDSCRIPT})" > "${SYSTMP}/pkgforge/SBUILD_URLS"
211+
fi
212+
fi
213+
#Build
214+
i=0; until pushd "$(${TMPDIRS})" >/dev/null 2>&1 || [ $((i+=1)) -gt 3 ]; do :; done
215+
echo -e "\n==> [+] Started Building at :: $(TZ='UTC' date +'%A, %Y-%m-%d (%I:%M:%S %p)') UTC\n"
216+
sort -u "${SYSTMP}/pkgforge/SBUILD_URLS" -o"${SYSTMP}/pkgforge/SBUILD_URLS"
217+
readarray -t RECIPES < "${SYSTMP}/pkgforge/SBUILD_URLS"
218+
TOTAL_RECIPES="${#RECIPES[@]}" && export TOTAL_RECIPES="${TOTAL_RECIPES}"
219+
echo -e "\n[+] Total RECIPES :: ${TOTAL_RECIPES}\n"
220+
for ((i=0; i<${#RECIPES[@]}; i++)); do
221+
pushd "$(${TMPDIRS})" >/dev/null 2>&1 || sleep 2 && pushd "$(${TMPDIRS})" >/dev/null 2>&1
222+
OCWD="$(realpath .)" ; export OCWD
223+
rm "${OCWD}/ENVPATH" 2>/dev/null
224+
if [[ "${LOCAL_SBUILD}" == "YES" ]] && [[ "${SBUILD_REBUILD}" != "false" ]]; then
225+
export SBUILD_REBUILD="true"
226+
elif [[ "${LOCAL_SBUILD}" == "YES" ]] && [[ "${SBUILD_REBUILD}" == "false" ]]; then
227+
export SBUILD_REBUILD="false"
228+
else
229+
unset SBUILD_REBUILD
230+
fi
231+
unset CONTINUE_SBUILD GHCRPKG LOGPATH PKG_FAMILY PUSH_SUCCESSFUL RECIPE SBUILD_PKG SBUILD_SCRIPT SBUILD_SCRIPT_BLOB SBUILD_SKIPPED SBUILD_SUCCESSFUL
232+
if [[ "${KEEP_LOGS}" != "YES" ]]; then
233+
unset KEEP_LOGS
234+
fi
235+
TEMP_LOG="./BUILD.log"
236+
#Init
237+
START_TIME="$(date +%s)" && export START_TIME="${START_TIME}"
238+
RECIPE="${RECIPES[i]}" ; export RECIPE
239+
CURRENT_RECIPE=$((i+1))
240+
echo -e "\n[+] Fetching : ${RECIPE} (${CURRENT_RECIPE}/${TOTAL_RECIPES})\n"
241+
#Fetch
242+
if echo "${RECIPE}" | grep -E -q '^https?://'; then
243+
if curl -qfsSL "${RECIPE}" -o "${BUILDSCRIPT}"; then
244+
echo -e "==> ${RECIPE}"
245+
chmod -v +xwr "${BUILDSCRIPT}"
246+
else
247+
echo -e "\n[✗] FATAL: Failed to fetch Remote SBUILD [${RECIPE}]\n"
248+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
249+
export CONTINUE_SBUILD="NO"
250+
return 1 || exit 1
251+
fi
252+
elif [ -s "${BUILDSCRIPT}" ]; then
253+
realpath "${BUILDSCRIPT}"
254+
fi
255+
#Run
256+
if [[ -s "${BUILDSCRIPT}" && $(stat -c%s "${BUILDSCRIPT}") -gt 10 ]]; then
257+
SBUILD_SCRIPT="${RECIPE}" && export SBUILD_SCRIPT
258+
SBUILD_SCRIPT_BLOB="$(echo "${SBUILD_SCRIPT}" | sed -E 's/raw.githubusercontent.com/github.com/; s/refs\/heads/blob/' | tr -d '[:space:]')" ; export SBUILD_SCRIPT_BLOB
259+
if [[ "${LOCAL_SBUILD}" == "YES" ]]; then
260+
if [ -n "${GHCRPKG_LOCAL+x}" ] && [ -n "${GHCRPKG_LOCAL##*[[:space:]]}" ]; then
261+
GHCRPKG="${GHCRPKG_LOCAL}" ; unset GHCRPKG_LOCAL ; export GHCRPKG
262+
echo "[+] Setting '.ghcr_pkg' --> ${GHCRPKG} [Provided]"
263+
fi
264+
if [ -n "${PKG_FAMILY_LOCAL+x}" ] && [ -n "${PKG_FAMILY_LOCAL##*[[:space:]]}" ]; then
265+
PKG_FAMILY="${PKG_FAMILY_LOCAL}" ; unset PKG_FAMILY_LOCAL ; export PKG_FAMILY
266+
echo "[+] Setting '.pkg_family' --> ${PKG_FAMILY} [Provided]"
267+
else
268+
PKG_FAMILY="$(yq eval '.pkg' "${BUILDSCRIPT}" | tr -d '[:space:]')" ; export PKG_FAMILY
269+
echo "[+] Setting '.pkg_family' --> ${PKG_FAMILY} [Guessed]"
270+
fi
271+
unset LOCAL_SBUILD
272+
elif [[ -s "${SYSTMP}/pkgforge/SBUILD_LIST.json" && $(stat -c%s "${SYSTMP}/pkgforge/SBUILD_LIST.json") -gt 10 ]]; then
273+
GHCRPKG="$(jq -r '.[] | select(.build_script == env.SBUILD_SCRIPT) | .ghcr_pkg' "${SYSTMP}/pkgforge/SBUILD_LIST.json" | tr -d '[:space:]')" && export GHCRPKG
274+
PKG_FAMILY="$(jq -r '.[] | select(.build_script == env.SBUILD_SCRIPT) | .pkg_family' "${SYSTMP}/pkgforge/SBUILD_LIST.json" | tr -d '[:space:]')" && export PKG_FAMILY
275+
SBUILD_REBUILD="$(jq -r '.[] | select(.build_script == env.SBUILD_SCRIPT) | .rebuild' "${SYSTMP}/pkgforge/SBUILD_LIST.json" | tr -d '[:space:]')" && export SBUILD_REBUILD
276+
else
277+
echo -e "\n[✗] FATAL: No Local SBUILD was Supplied & Remote ${SYSTMP}/pkgforge/SBUILD_LIST.json Does Not Exist\n"
278+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
279+
export CONTINUE_SBUILD="NO"
280+
return 1 || exit 1
281+
fi
282+
#Main
283+
{
284+
setup_env "${BUILDSCRIPT}"
285+
check_sane_env
286+
gen_json_from_sbuild
287+
build_progs
288+
if [ -d "${SBUILD_OUTDIR}" ] && [ "$(du -s "${SBUILD_OUTDIR}" | cut -f1)" -gt 10 ]; then
289+
generate_json
290+
elif [[ "${SBUILD_SKIPPED}" != "YES" ]]; then
291+
echo -e "\n[✗] FATAL: Build Dir [${BUILD_DIR}/SBUILD_OUTDIR] seems Broken\n"
292+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "GHA_BUILD_FAILED=YES" >> "${GITHUB_ENV}"
293+
if [[ "${KEEP_LOGS}" != "YES" ]]; then
294+
echo 'KEEP_LOGS="YES"' >> "${OCWD}/ENVPATH"
295+
fi
296+
fi
297+
#} 2>&1 | ts '[%Y-%m-%dT%Hh%Mm%Ss]➜ ' | tee "${TEMP_LOG}"
298+
} 2>&1 | ts -s '[%H:%M:%S]➜ ' | tee "${TEMP_LOG}"
299+
if [ -d "${OCWD}" ]; then
300+
source "${OCWD}/ENVPATH" ; SBUILD_PKGS=($SBUILD_PKGS)
301+
if [[ "${SBUILD_SUCCESSFUL}" == "YES" ]]; then
302+
sanitize_logs
303+
#2000req/min
304+
printf '%s\n' "${SBUILD_PKGS[@]}" | xargs -P "$(($(nproc)+1))" -I "{}" bash -c 'upload_to_ghcr "$@" ; sleep "1.$(((RANDOM % 900) + 100))"' _ "{}"
305+
source "${OCWD}/ENVPATH"
306+
if [[ "${PUSH_SUCCESSFUL}" != "YES" ]]; then
307+
echo -e "\n[✗] FATAL: Failed to Push Artifacts ==> [${GHCRPKG}]"
308+
[[ "${GHA_MODE}" == "MATRIX" ]] && echo "PUSH_SUCCESSFUL=NO" >> "${GITHUB_ENV}"
309+
echo -e "[+] LOGS (Build Dir): ${BUILD_DIR}/SBUILD_OUTDIR\n"
310+
if [[ "${KEEP_LOGS}" != "YES" ]]; then
311+
export KEEP_LOGS="YES"
312+
fi
313+
fi
314+
fi
315+
fi
316+
fi
317+
if [[ "${KEEP_LOGS}" != "YES" ]]; then
318+
rm -rf "${BUILDSCRIPT}" "$(realpath .)" && popd >/dev/null 2>&1 ; cleanup_env
319+
else
320+
popd >/dev/null 2>&1 ; cleanup_env
321+
fi
322+
END_TIME="$(date +%s)" && export END_TIME="${END_TIME}"
323+
ELAPSED_TIME="$(date -u -d@"$((END_TIME - START_TIME))" "+%H(Hr):%M(Min):%S(Sec)")"
324+
echo -e "\n[+] Completed (Building|Fetching) ${RECIPE} :: ${ELAPSED_TIME}\n"
325+
done
326+
echo -e "\n==> [+] Finished Building at :: $(TZ='UTC' date +'%A, %Y-%m-%d (%I:%M:%S %p)') UTC\n"
327+
popd >/dev/null 2>&1
328+
unset CONTINUE_SBUILD GHCRPKG LOGPATH PKG_FAMILY PUSH_SUCCESSFUL RECIPE SBUILD_PKG SBUILD_SCRIPT SBUILD_SCRIPT_BLOB SBUILD_SKIPPED SBUILD_SUCCESSFUL
329+
cd "${OWD_TMPDIR}" ; unset OWD_TMPDIR
330+
##Finish
331+
#Disable Debug
332+
if [ "${DEBUG}" = "1" ] || [ "${DEBUG}" = "ON" ]; then
333+
set +x
334+
fi
335+
}
336+
export -f sbuild_builder
337+
alias sbuild-builder="sbuild_builder"
338+
#Call func directly if not being sourced
339+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
340+
sbuild_builder "$@" <&0
341+
fi
342+
#-------------------------------------------------------#

0 commit comments

Comments
 (0)