'Generic Commit'
All checks were successful
dropshell-build / build (push) Successful in 1m3s

This commit is contained in:
Your Name 2025-06-03 00:38:14 +12:00
parent 3fea581249
commit 1da19b9191
12 changed files with 62 additions and 59 deletions

View File

@ -1,8 +1,6 @@
FROM --platform=$BUILDPLATFORM alpine:latest AS builder
# Add build arguments for platform
ARG TARGETPLATFORM
ARG BUILDPLATFORM
ARG PROJECT
# Install build dependencies
RUN apk add --no-cache \
@ -16,7 +14,8 @@ RUN apk add --no-cache \
g++ \
ninja \
linux-headers \
mold
mold \
zlib-static
# Set working directory
WORKDIR /build
@ -29,11 +28,17 @@ RUN mkdir -p build_static && \
cmake -G Ninja -B build_static -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_EXE_LINKER_FLAGS="-static" \
-DCMAKE_FIND_LIBRARY_SUFFIXES=".a" \
-DZLIB_BUILD_SHARED=OFF \
-DZLIB_BUILD_STATIC=ON \
-DBUILD_SHARED_LIBS=OFF \
-DPROJECT_NAME="${PROJECT}" \
${CMAKE_TOOLCHAIN_FILE:+-DCMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE}
RUN cmake --build build_static
# Final stage that only contains the binary
FROM scratch AS $PROJECT
COPY --from=builder /build/build_static/$PROJECT /$PROJECT
FROM scratch AS project
ARG PROJECT
COPY --from=builder /build/build_static/${PROJECT} /${PROJECT}

View File

@ -3,9 +3,19 @@
set -euo pipefail
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
PROJECT="ipdemo" # Define your project name here
rm -rf "${SCRIPT_DIR}/src/build"
rm -rf "${SCRIPT_DIR}/src/build.*"
mkdir -p "${SCRIPT_DIR}/output"
docker build -t gitea.jde.nz/public/dropshell-build:test -f "${SCRIPT_DIR}/Dockerfile" "${SCRIPT_DIR}"
export CMAKE_BUILD_TYPE="Release"
rm -rf "${SCRIPT_DIR}/output"
mkdir -p "${SCRIPT_DIR}/output"
docker build \
-t "gitea.jde.nz/public/${PROJECT}-build:latest" \
-f "${SCRIPT_DIR}/Dockerfile.dropshell-build" \
--build-arg PROJECT="${PROJECT}" \
--output "${SCRIPT_DIR}/output" \
"${SCRIPT_DIR}/${PROJECT}"

View File

@ -6,8 +6,12 @@ execute_process(
)
cmake_minimum_required(VERSION 3.10)
get_filename_component(PROJECT_EXE_NAME "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
project(${PROJECT_EXE_NAME} VERSION ${PROJECT_VERSION} LANGUAGES CXX)
if(NOT DEFINED PROJECT_NAME)
message(FATAL_ERROR "PROJECT_NAME is not defined. Pass it via -DPROJECT_NAME=<name>")
endif()
project(${PROJECT_NAME} VERSION ${PROJECT_VERSION} LANGUAGES CXX)
set(PROJECT_EXE_NAME ${PROJECT_NAME})
# Force static linking globally
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
@ -64,6 +68,32 @@ target_include_directories(${PROJECT_EXE_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
# Configure libassert
include(FetchContent)
FetchContent_Declare(
libassert
GIT_REPOSITORY https://github.com/jeremy-rifkin/libassert.git
GIT_TAG v2.1.5
)
FetchContent_MakeAvailable(libassert)
# Add cpptrace
FetchContent_Declare(
cpptrace
GIT_REPOSITORY https://github.com/jeremy-rifkin/cpptrace.git
GIT_TAG v0.8.3
)
FetchContent_MakeAvailable(cpptrace)
# Add nlohmann/json
FetchContent_Declare(
nlohmann_json
GIT_REPOSITORY https://github.com/nlohmann/json.git
GIT_TAG v3.12.0
)
FetchContent_MakeAvailable(nlohmann_json)
# Link libraries
target_link_libraries(${PROJECT_EXE_NAME} PRIVATE
libassert::assert

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,28 +0,0 @@
#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
function upload_file() {
local file="$1"
local server="getbin.xyz"
local tag="latest"
local name;
name=$(basename "${file}")
# upload the file to the server
echo "Uploading ${file} to the server"
sos upload "${server}" "${file}" "${name}:${tag}"
}
if ! command -v sos &> /dev/null ; then
echo "sos could not be found"
exit 1
fi
# find all .tgz in this directory
for file in "${SCRIPT_DIR}"/*.tgz; do
# upload the file to the server
echo "Uploading ${file} to the server"
upload_file "${file}"
done

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -7,26 +7,12 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# download the sos binary
SOS="${SCRIPT_DIR}/temp/sos"
mkdir -p "${SCRIPT_DIR}/temp"
trap 'rm -rf "${SCRIPT_DIR}/temp"' EXIT
curl -L -o "${SOS}" https://getbin.xyz/sos
chmod +x "${SOS}"
# upload the dropshell-build script
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/src/dropshell-build" "dropshell-build:latest"
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/Dockerfile.dropshell-build" "Dockerfile.dropshell-build:latest"
# upload the install requirements script
"${SOS}" upload "getbin.xyz" "${SCRIPT_DIR}/src/dropshell-build-install-requirements" "dropshell-build-install-requirements:latest"
# tag and push the dropshell-build image
echo "Tagging and pushing the dropshell-build image"
docker tag gitea.jde.nz/public/dropshell-build:test gitea.jde.nz/public/dropshell-build:latest
docker push gitea.jde.nz/public/dropshell-build:latest
# clean up
rm -rf "${SCRIPT_DIR}/temp"
echo "Done"

View File

@ -4,13 +4,13 @@ set -euo pipefail
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
echo "Testing dropshell-build"
echo "Testing"
rm -rf "${SCRIPT_DIR}/ipdemo/build"
"${SCRIPT_DIR}/build.sh"
DROPSHELL_BUILD_TAG="test" "${SCRIPT_DIR}/src/dropshell-build" -r -m "${SCRIPT_DIR}/ipdemo"
[ -f "${SCRIPT_DIR}/output/ipdemo" ] || { echo "ipdemo binary not found"; exit 1; }
"${SCRIPT_DIR}/ipdemo/output/ipdemo.x86_64"
"${SCRIPT_DIR}/output/ipdemo"