Added a copy_ecode_assets.sh script to simplify ecode build scripts across platforms.

Modified find_most_recent_sdl2.sh script to search for an specific CPU architecture version of the SDL2 library.
This commit is contained in:
Martín Lucas Golini
2025-12-12 01:25:24 -03:00
parent 5f30967f80
commit c69740d886
6 changed files with 177 additions and 136 deletions

View File

@@ -57,8 +57,7 @@ fi
gmake -j"${parallel_tasks}" config="${CONFIG_NAME}" ecode || exit
cd "$DIRPATH" || exit
rm -rf ./ecode.app
mkdir -p ecode.app/assets
bash ../../scripts/copy_ecode_assets.sh ../../bin ecode.app || exit
mkdir -p ecode.app/libs
chmod +x AppRun
cp AppRun ecode.app/
@@ -68,32 +67,6 @@ cp ../../../libs/bsd/x86_64/libeepp.so ecode.app/libs/
cp ../../../bin/ecode ecode.app/ecode.bin
cp -L /usr/local/lib/libSDL2-2.0.so.0 ecode.app/libs/
strip ecode.app/libs/libSDL2-2.0.so.0
mkdir -p ecode.app/assets/colorschemes
mkdir -p ecode.app/assets/fonts
mkdir -p ecode.app/assets/i18n
cp -r ../../../bin/assets/i18n ecode.app/assets/
cp -r ../../../bin/assets/colorschemes ecode.app/assets/
cp -r ../../../bin/assets/fonts/DejaVuSansMono.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Oblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-BoldOblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMonoNerdFontComplete.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/nonicons.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/codicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Italic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-BoldItalic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/remixicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoEmoji-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoColorEmoji.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DroidSansFallbackFull.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/plugins ecode.app/assets/
mkdir -p ecode.app/assets/icon/
cp -r ../../../bin/assets/icon/ecode.png ecode.app/assets/icon/
mkdir ecode.app/assets/ui
cp ../../../bin/assets/ui/breeze.css ecode.app/assets/ui/
cp ../../../bin/assets/ca-bundle.pem ecode.app/assets/ca-bundle.pem
if [ -n "$VERSION" ];
then

View File

@@ -7,39 +7,13 @@ premake5 --with-text-shaper gmake
cd make/haiku || exit
make -j"$(nproc)" config=release_x86_64 ecode
cd "$DIRPATH" || exit
rm -rf ./ecode.app
mkdir -p ecode.app/assets
bash ../../scripts/copy_ecode_assets.sh ../../bin ecode.app || exit
mkdir -p ecode.app/lib
cp ../../../bin/assets/icon/ecode.png ecode.app/ecode.png
cp ../../../libs/haiku/x86_64/libeepp.so ecode.app/lib/
cp ../../../bin/ecode ecode.app/
cp -L /boot/system/lib/libSDL2-2.0.so.0 ecode.app/lib/
strip ecode.app/lib/libSDL2-2.0.so.0
mkdir -p ecode.app/assets/colorschemes
mkdir -p ecode.app/assets/fonts
mkdir -p ecode.app/assets/i18n
cp -r ../../../bin/assets/i18n ecode.app/assets/
cp -r ../../../bin/assets/colorschemes ecode.app/assets/
cp -r ../../../bin/assets/fonts/DejaVuSansMono.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Oblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-BoldOblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMonoNerdFontComplete.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/nonicons.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/codicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Italic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-BoldItalic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/remixicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoEmoji-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoColorEmoji.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DroidSansFallbackFull.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/plugins ecode.app/assets/
mkdir -p ecode.app/assets/icon/
cp -r ../../../bin/assets/icon/ecode.png ecode.app/assets/icon/
mkdir ecode.app/assets/ui
cp ../../../bin/assets/ui/breeze.css ecode.app/assets/ui/
VERSIONPATH=../../../src/tools/ecode/version.hpp
ECODE_MAJOR_VERSION=$(grep "define ECODE_MAJOR_VERSION" $VERSIONPATH | awk '{print $3}')

View File

@@ -57,8 +57,7 @@ fi
cd make/linux || exit
make -j"$(nproc)" config="$CONFIG_NAME" ecode || exit
cd "$DIRPATH" || exit
rm -rf ./ecode.app
mkdir -p ecode.app/assets
bash ../../scripts/copy_ecode_assets.sh ../../bin ecode.app || exit
mkdir -p ecode.app/libs
chmod +x AppRun
cp AppRun ecode.app/
@@ -66,34 +65,8 @@ cp ecode.desktop ecode.app/
cp ../../../bin/assets/icon/ecode.png ecode.app/ecode.png
cp ../../../libs/linux/libeepp.so ecode.app/libs/
cp ../../../bin/ecode ecode.app/ecode.bin
cp -L "$(bash ../scripts/find_most_recent_sdl2.sh)" ecode.app/libs/ || exit
cp -L "$(bash ../scripts/find_most_recent_sdl2.sh --arch="$ARCH")" ecode.app/libs/ || exit
${STRIP:-strip} ecode.app/libs/libSDL2-2.0.so.0
mkdir -p ecode.app/assets/colorschemes
mkdir -p ecode.app/assets/fonts
mkdir -p ecode.app/assets/i18n
cp -r ../../../bin/assets/i18n ecode.app/assets/
cp -r ../../../bin/assets/colorschemes ecode.app/assets/
cp -r ../../../bin/assets/fonts/DejaVuSansMono.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Oblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-BoldOblique.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMonoNerdFontComplete.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/nonicons.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/codicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Bold.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Italic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-BoldItalic.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/remixicon.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoEmoji-Regular.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoColorEmoji.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/fonts/DroidSansFallbackFull.ttf ecode.app/assets/fonts/
cp -r ../../../bin/assets/plugins ecode.app/assets/
mkdir -p ecode.app/assets/icon/
cp -r ../../../bin/assets/icon/ecode.png ecode.app/assets/icon/
mkdir ecode.app/assets/ui
cp ../../../bin/assets/ui/breeze.css ecode.app/assets/ui/
cp ../../../bin/assets/ca-bundle.pem ecode.app/assets/ca-bundle.pem
if [ -n "$VERSION" ];
then

View File

@@ -1,21 +1,53 @@
#!/bin/bash
VERBOSE=
DESIRED_ARCH=
for i in "$@"; do
case $i in
--verbose)
VERBOSE=true
shift
;;
-*)
echo "Unknown option $i"
exit 1
;;
*)
;;
esac
case $i in
--verbose)
VERBOSE=true
shift
;;
--arch=*)
DESIRED_ARCH="${i#*=}"
shift
;;
-*)
echo "Unknown option $i"
exit 1
;;
*)
;;
esac
done
# Determine current architecture if no --arch specified
if [[ -z "$DESIRED_ARCH" ]]; then
CURRENT_MACHINE=$(uname -m)
case "$CURRENT_MACHINE" in
x86_64|amd64)
DESIRED_ARCH="x86-64"
;;
i386|i686)
DESIRED_ARCH="80386"
;;
aarch64|arm64)
DESIRED_ARCH="aarch64"
;;
arm*)
DESIRED_ARCH="ARM"
;;
*)
echo "Unsupported current architecture: $CURRENT_MACHINE"
exit 1
;;
esac
if [[ -n "$VERBOSE" ]]; then
echo "No architecture specified; using current: $DESIRED_ARCH"
fi
fi
lib_paths=$(whereis libSDL2-2.0.so.0 | cut -d ':' -f 2)
get_sdl_version() {
@@ -34,6 +66,10 @@ version_to_int() {
local version="$1"
local major minor patch
IFS='.' read -r major minor patch <<< "$version"
# Default missing parts to 0
major=${major:-0}
minor=${minor:-0}
patch=${patch:-0}
echo $((major * 10000 + minor * 100 + patch))
}
@@ -43,27 +79,42 @@ latest_lib=""
for lib in $lib_paths; do
if [[ -f "$lib" ]]; then
version=$(get_sdl_version "$lib")
if [ -n "$VERBOSE" ]; then
echo "Found version $version in $lib"
fi
version_int=$(version_to_int "$version")
if (( version_int > latest_version_int )); then
latest_version_int=$version_int
latest_version="$version"
latest_lib="$lib"
# Check architecture using 'file' command
file_output=$(file -L "$lib" 2>/dev/null)
if echo "$file_output" | grep -q "ELF .* shared object, .* $DESIRED_ARCH"; then
version=$(get_sdl_version "$lib")
if [[ -n "$version" ]]; then
if [ -n "$VERBOSE" ]; then
echo "Found matching version $version in $lib"
fi
version_int=$(version_to_int "$version")
if (( version_int > latest_version_int )); then
latest_version_int=$version_int
latest_version="$version"
latest_lib="$lib"
fi
else
if [ -n "$VERBOSE" ]; then
echo "Could not determine version for $lib (matching arch)"
fi
fi
else
if [ -n "$VERBOSE" ]; then
echo "Skipping $lib (architecture mismatch)"
fi
fi
fi
done
if [[ -n "$latest_lib" ]]; then
if [ -n "$VERBOSE" ]; then
echo "The newest version is $latest_version in $latest_lib"
echo "The newest matching version is $latest_version in $latest_lib"
fi
echo "$latest_lib"
else
if [ -n "$VERBOSE" ]; then
echo "No valid SDL2 library found."
echo "No valid SDL2 library found for architecture $DESIRED_ARCH."
fi
# Fallback: original behavior, print the last path from whereis (or nothing if none)
whereis libSDL2-2.0.so.0 | awk '{print $NF}'
fi

View File

@@ -42,8 +42,7 @@ fi
../make.sh -e config="$BUILDTYPE"_"$ARCH" -j"$(nproc)" ecode || exit
SDLVER=$(grep "remote_sdl2_version_number =" ../../../premake5.lua | awk '{print $3}' | tr -d '"')
rm -rf ./ecode
mkdir -p ecode/assets
bash ../../scripts/copy_ecode_assets.sh ../../bin ecode || exit
cp ../../../bin/ecode.exe ecode/
cp ../../../bin/eepp.dll ecode/
@@ -53,33 +52,6 @@ else
cp ../../../src/thirdparty/"SDL2-$SDLVER"/$ARCHI-w64-mingw32/bin/SDL2.dll ecode/
fi
mkdir -p ecode/assets/colorschemes
mkdir -p ecode/assets/fonts
mkdir -p ecode/assets/i18n
cp -r ../../../bin/assets/i18n ecode/assets/
cp -r ../../../bin/assets/colorschemes ecode/assets/
cp -r ../../../bin/assets/fonts/DejaVuSansMono.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Bold.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-Oblique.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMono-BoldOblique.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/DejaVuSansMonoNerdFontComplete.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/nonicons.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/codicon.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Regular.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Bold.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-Italic.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoSans-BoldItalic.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/remixicon.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoEmoji-Regular.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/NotoColorEmoji.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/fonts/DroidSansFallbackFull.ttf ecode/assets/fonts/
cp -r ../../../bin/assets/plugins ecode/assets/
mkdir ecode/assets/ui
cp ../../../bin/assets/ui/breeze.css ecode/assets/ui/
mkdir -p ecode/assets/icon
cp ../../../bin/assets/icon/ecode.png ecode/assets/icon/
cp ../../../bin/assets/ca-bundle.pem ecode/assets/ca-bundle.pem
if [ -n "$VERSION" ];
then
ECODE_VERSION="$VERSION"

View File

@@ -0,0 +1,98 @@
#!/bin/bash
# Usage: ./copy_ecode_assets.sh <source_dir> <dest_dir>
# Example: ./copy_ecode_assets.sh ../../../bin ecode.app
set -euo pipefail
if [ $# -ne 2 ]; then
echo "Error: Exactly two arguments required: <source_dir> <dest_dir>"
echo "Usage: $0 <source_dir> <dest_dir>"
exit 1
fi
SOURCE_DIR="$1"
DEST_DIR="$2"
# Resolve SCRIPT_DIR to the directory where this script lives
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "Running copy_ecode_assets.sh from: $SCRIPT_DIR"
# Resolve source_dir relative to the script location if it's relative
if [[ "$SOURCE_DIR" != /* ]]; then
SOURCE_DIR="$SCRIPT_DIR/$SOURCE_DIR"
fi
# Convert SOURCE_DIR to absolute path and check it exists
SOURCE_DIR=$(realpath "$SOURCE_DIR" 2>/dev/null || {
echo "Error: Source directory does not exist or cannot be resolved: $1"
exit 1
})
if [ ! -d "$SOURCE_DIR/assets" ]; then
echo "Error: Source assets directory not found: $SOURCE_DIR/assets"
exit 1
fi
echo "Copying assets from $SOURCE_DIR to $DEST_DIR"
# Remove existing destination (if any)
rm -rf "$DEST_DIR"
# Create required directories (with error check)
mkdir -p "$DEST_DIR/assets"/{colorschemes,fonts,i18n,icon,ui,plugins} || {
echo "Error: Failed to create destination directories in $DEST_DIR"
exit 1
}
# Helper function to copy and report errors
copy_file() {
local src="$1"
local dest="$2"
if [ -f "$src" ] || [ -d "$src" ]; then
cp -r "$src" "$dest" || {
echo "Error: Failed to copy $src -> $dest"
exit 1
}
else
echo "Error: Source file/directory not found: $src"
exit 1
fi
}
# Copy whole directories
# We copy into 'assets/' because mkdir already created the subfolders.
# cp will merge the source folder into the existing destination folder.
copy_file "$SOURCE_DIR/assets/i18n" "$DEST_DIR/assets/"
copy_file "$SOURCE_DIR/assets/colorschemes" "$DEST_DIR/assets/"
copy_file "$SOURCE_DIR/assets/plugins" "$DEST_DIR/assets/"
# Copy individual fonts using a loop
fonts=(
DejaVuSansMono.ttf
DejaVuSansMono-Bold.ttf
DejaVuSansMono-Oblique.ttf
DejaVuSansMono-BoldOblique.ttf
DejaVuSansMonoNerdFontComplete.ttf
nonicons.ttf
codicon.ttf
NotoSans-Regular.ttf
NotoSans-Bold.ttf
NotoSans-Italic.ttf
NotoSans-BoldItalic.ttf
remixicon.ttf
NotoEmoji-Regular.ttf
NotoColorEmoji.ttf
DroidSansFallbackFull.ttf
)
for font in "${fonts[@]}"; do
copy_file "$SOURCE_DIR/assets/fonts/$font" "$DEST_DIR/assets/fonts/"
done
# Copy other individual files
copy_file "$SOURCE_DIR/assets/icon/ecode.png" "$DEST_DIR/assets/icon/ecode.png"
copy_file "$SOURCE_DIR/assets/ui/breeze.css" "$DEST_DIR/assets/ui/breeze.css"
copy_file "$SOURCE_DIR/assets/ca-bundle.pem" "$DEST_DIR/assets/ca-bundle.pem"
echo "Assets successfully copied to $DEST_DIR"