Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: remove premake5 executable from repo #345

Merged
merged 6 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 7 additions & 20 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,15 @@ on:
branches:
- "main"

env:
PREMAKE_VERSION: "5.0.0-beta2"

jobs:
build-test-linux:
env:
PREMAKE_CONFIG: gmake2
runs-on: ubuntu-latest
container: ubuntu:24.04
steps:
- name: Install g++ and multilib
run: |
apt-get update
apt-get install -y git make gcc-13 g++-13 gcc-13-multilib g++-13-multilib
apt-get install -y wget tar git make gcc-13 g++-13 gcc-13-multilib g++-13-multilib
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13
update-alternatives --set gcc /usr/bin/gcc-13
Expand All @@ -32,14 +27,11 @@ jobs:
with:
submodules: recursive

- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}

- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
env:
PREMAKE_NO_PROMPT: 1
run: ./generate.sh

- name: Build
working-directory: ${{ github.workspace }}
Expand All @@ -56,8 +48,6 @@ jobs:
./ZoneCommonTests

build-test-windows:
env:
PREMAKE_CONFIG: vs2022
runs-on: windows-latest
steps:
- name: Checkout repository
Expand All @@ -68,14 +58,11 @@ jobs:
- name: Add MSBuild to PATH
uses: microsoft/[email protected]

- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}

- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
env:
PREMAKE_NO_PROMPT: 1
run: ./generate.bat

- name: Build
working-directory: ${{ github.workspace }}
Expand Down
35 changes: 11 additions & 24 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,15 @@ on:
tags:
- "v*.*.*"

env:
PREMAKE_VERSION: "5.0.0-beta2"

jobs:
build-release-linux:
env:
PREMAKE_CONFIG: gmake2
runs-on: ubuntu-latest
container: ubuntu:24.04
steps:
- name: Install g++ and multilib
run: |
apt-get update
apt-get install -y git make gcc-13 g++-13 gcc-13-multilib g++-13-multilib
apt-get install -y wget tar git make gcc-13 g++-13 gcc-13-multilib g++-13-multilib
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13
update-alternatives --set gcc /usr/bin/gcc-13
Expand All @@ -29,14 +24,11 @@ jobs:
with:
submodules: recursive

- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}

- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
env:
PREMAKE_NO_PROMPT: 1
run: ./generate.sh

- name: Build
working-directory: ${{ github.workspace }}
Expand All @@ -50,8 +42,6 @@ jobs:
${{ github.workspace }}/build/bin/Release_x86

build-release-windows:
env:
PREMAKE_CONFIG: vs2022
runs-on: windows-latest
steps:
- name: Checkout repository
Expand All @@ -62,28 +52,25 @@ jobs:
- name: Add MSBuild to PATH
uses: microsoft/[email protected]

- name: Setup premake
uses: abel0b/[email protected]
with:
version: ${{ env.PREMAKE_VERSION }}

- name: Premake generate
working-directory: ${{ github.workspace }}
run: premake5 ${{ env.PREMAKE_CONFIG }}
env:
PREMAKE_NO_PROMPT: 1
run: ./generate.bat

- name: Build
working-directory: ${{ github.workspace }}
run: msbuild /m /p:Configuration=Release /p:Platform=Win32 build

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: oat-windows
path: |
${{ github.workspace }}/build/bin/Release_x86

release:
needs:
needs:
- build-release-linux
- build-release-windows
runs-on: ubuntu-latest
Expand All @@ -106,4 +93,4 @@ jobs:
allowUpdates: true
draft: true
omitBodyDuringUpdate: true
omitDraftDuringUpdate: true
omitDraftDuringUpdate: true
82 changes: 81 additions & 1 deletion generate.bat
Original file line number Diff line number Diff line change
@@ -1,6 +1,86 @@
@echo off

set PREMAKE_URL="https://github.com/premake/premake-core/releases/download/v5.0.0-beta4/premake-5.0.0-beta4-windows.zip"
set PREMAKE_HASH="12d741d3b70445b025c03e26148e2d129801041fa5ddde61b4ac888a76017395"

@REM The following variables can be set:
@REM PREMAKE_NO_GLOBAL - Ignore premake5 executable from path
@REM PREMAKE_NO_PROMPT - Download premake5 without prompting

goto start

:downloadpremake

if not exist "build" mkdir "build"

where /q "pwsh"
IF NOT ERRORLEVEL 1 (
set POWERSHELL_BIN="pwsh"
) else (
set POWERSHELL_BIN="powershell"
)

echo Downloading...
%POWERSHELL_BIN% -NoProfile -NonInteractive -Command "Invoke-WebRequest %PREMAKE_URL% -OutFile build/premake.zip"
IF ERRORLEVEL 1 (
echo Download failed >&2
exit 2
)

echo Extracting...
%POWERSHELL_BIN% -NoProfile -NonInteractive -Command "Expand-Archive -LiteralPath build/premake.zip -DestinationPath build"
IF ERRORLEVEL 1 (
echo Extraction failed >&2
exit 2
)

rm build/premake.zip

echo Verifying hash...
%POWERSHELL_BIN% -NoProfile -NonInteractive -Command "if ((Get-FileHash -LiteralPath build/premake5.exe -Algorithm SHA256).Hash -eq \"%PREMAKE_HASH%\") { exit 0 } else { exit 1 }"
IF ERRORLEVEL 1 (
echo Hash verification failed >&2
rm build/premake5.exe
exit 2
)

exit /B 0

cd %~dp0

:start

IF "%PREMAKE_NO_GLOBAL%" EQU "" (
where /Q "premake5.exe"
IF NOT ERRORLEVEL 1 (
echo success
set PREMAKE_BIN="premake5.exe"
goto runpremake
)
)

IF EXIST build/premake5.exe (
set PREMAKE_BIN="build/premake5.exe"
goto runpremake
)

if "%PREMAKE_NO_PROMPT%" NEQ "" (
call:downloadpremake
set PREMAKE_BIN="build/premake5.exe"
goto runpremake
)

echo Could not find premake5. You can either install it yourself or this script download it for you.
set /p choice="Do you wish to download it automatically? [y/N]> "
if /i "%choice%" == "y" (
call:downloadpremake
set PREMAKE_BIN="build/premake5.exe"
goto runpremake
)

echo Please install premake5 and try again
exit 1

:runpremake
git submodule update --init --recursive
tools\premake5.exe %* vs2022
%PREMAKE_BIN% %* vs2022
70 changes: 69 additions & 1 deletion generate.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,75 @@
#!/bin/bash

PREMAKE_URL='https://github.com/premake/premake-core/releases/download/v5.0.0-beta4/premake-5.0.0-beta4-linux.tar.gz'
PREMAKE_HASH='4356ab7cdec6085183d68fb240089376eacdc2fb751ffbd8063d797ae43abeb3'

# The following variables can be set:
# PREMAKE_NO_GLOBAL - Ignore premake5 executable from path
# PREMAKE_NO_PROMPT - Download premake5 without prompting

function install_premake {
if [[ ! -x "$(command -v wget)" ]]; then
echo "Failed: Installation requires wget" >&2
exit 2
fi
if [[ ! -x "$(command -v tar)" ]]; then
echo "Failed: Installation requires tar" >&2
exit 2
fi
if [[ ! -x "$(command -v sha256sum)" ]]; then
echo "Failed: Installation requires sha256sum" >&2
exit 2
fi

mkdir -p build
wget -nd -O build/premake.tar.gz "$PREMAKE_URL"
if [[ $? -ne 0 ]]; then
echo "Download failed" >&2
exit 2
fi

tar -xf build/premake.tar.gz -C build
if [[ $? -ne 0 ]]; then
echo "Extraction failed" >&2
exit 2
fi

rm build/premake.tar.gz

echo "${PREMAKE_HASH} build/premake5" | sha256sum -c
if [[ $? -ne 0 ]]; then
echo "Hash verification failed" >&2
rm build/premake5
exit 2
fi

chmod +x build/premake5
}

# Go to repository root
cd "$(dirname "$0")" || exit 2

if [[ ! -d ".git" ]]; then
echo "You must clone the OpenAssetTools repository using 'git clone'. Please read README.md." >&2
exit 1
fi

PREMAKE_BIN=''
if [[ -z "$PREMAKE_NO_GLOBAL" ]] && [[ -x "$(command -v premake5)" ]]; then
PREMAKE_BIN='premake5'
elif [[ -x "$(command -v build/premake5)" ]]; then
PREMAKE_BIN='build/premake5'
else
echo "Could not find premake5. You can either install it yourself or this script download it for you."
if [[ ! -z "$PREMAKE_NO_PROMPT" ]] || [[ "$(read -e -p 'Do you wish to download it automatically? [y/N]> '; echo $REPLY)" == [Yy]* ]]; then
echo "Installing premake"
install_premake
PREMAKE_BIN='build/premake5'
else
echo "Please install premake5 and try again"
exit 1
fi
fi

git submodule update --init --recursive
tools/premake5 $@ gmake2
$PREMAKE_BIN $@ gmake2
6 changes: 3 additions & 3 deletions premake5.lua
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require("premake", ">=5.0.0-beta4")

include "tools/scripts/folders.lua"
include "tools/scripts/including.lua"
include "tools/scripts/linking.lua"
Expand Down Expand Up @@ -56,9 +58,7 @@ workspace "OpenAssetTools"
defines "NDEBUG"
optimize "Full"
symbols "Off"
flags {
"FatalWarnings"
}
fatalwarnings { "All" }
filter {}

defines {
Expand Down
Binary file removed tools/premake5
Binary file not shown.
Binary file removed tools/premake5.exe
Binary file not shown.
Loading