Core has been implemented.
This commit is contained in:
commit
cbfa04a9e8
|
@ -0,0 +1,2 @@
|
|||
winbuild/
|
||||
*.swp
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
CHECKSUM="7e086cbfc9d1641733037ef384f984da30679acbfeea760a81e22e6811690409e6dd76a4d38ef24878cc73fbb3959928cd32678df9c0e6525051ea778f028aa2"
|
||||
URL="https://ftp.iotib.net/Programs/7za/24.03/amd64/7za.exe"
|
||||
WORKDIR="$TEMP/winbuild/7zip"
|
||||
mkdir -p "$WORKDIR"
|
||||
. ./functions.sh
|
||||
|
||||
# Download
|
||||
download "$URL" "$WORKDIR/7z.exe" "$CHECKSUM"
|
||||
|
||||
# Install
|
||||
cp "$WORKDIR/7z.exe" "../../winbuild/bin/7z.exe" || {
|
||||
echo "Failed to copy 7z.exe to bin folder."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo "Done."
|
|
@ -0,0 +1,48 @@
|
|||
@echo off
|
||||
setlocal
|
||||
set "CHECKSUM=46d149c729331895487042290f99445c0f0a8188ba2eda1e0208f451e47663fbec1cb2f70188646626cb8d2b4a9c19dd100e2a5b3cc0a9a55826fc40aba35aec"
|
||||
set URL="https://frippery.org/files/busybox/busybox-w64u-FRP-5301-gda71f7c57.exe"
|
||||
set WORKDIR="%TEMP%\winbuild\coreutils"
|
||||
|
||||
:: Download
|
||||
if not exist "..\..\winbuild\bin" (
|
||||
mkdir ..\..\winbuild\bin || (
|
||||
echo Failed to make winbuild prefix. Aborting.
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
rmdir /S /Q "%WORKDIR%"
|
||||
mkdir "%WORKDIR%" || (
|
||||
echo Failed to make the work directory. Aborting.
|
||||
exit /b 1
|
||||
)
|
||||
curl -o "%WORKDIR%\busybox.exe" -fL "%URL%" || (
|
||||
echo Failed to download busybox. Aborting.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Check download
|
||||
echo Recorded Checksum: %CHECKSUM%
|
||||
certutil -hashfile "%WORKDIR%\busybox.exe" sha512 | find /v "hash" > "%WORKDIR%\busybox.sha512"
|
||||
set /p DOWNLOADED_CHECKSUM=<"%WORKDIR%\busybox.sha512"
|
||||
echo Downloaded Checksum: %DOWNLOADED_CHECKSUM%
|
||||
if not %CHECKSUM% == %DOWNLOADED_CHECKSUM% (
|
||||
echo Checksums do not match. Aborting.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
:: Install
|
||||
copy "%WORKDIR%\busybox.exe" "..\..\winbuild\bin\busybox.exe"
|
||||
"..\..\winbuild\bin\busybox.exe" --install ..\..\winbuild\bin || (
|
||||
echo Failed to install busybox. Aborting.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
|
||||
:: Cleanup
|
||||
rmdir /Q /S "%WORKDIR%"
|
||||
|
||||
|
||||
endlocal
|
||||
echo Done.
|
||||
exit
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
CHECKSUM="51c54e851224c8e61990824e44faaff7c467023741e9488d5165502446c40fc2819ef3d03cd2af849b06b6be619a1206033ca4ed581e20edf2481e344a1ba232"
|
||||
URL="https://github.com/mozilla/sccache/releases/download/v0.7.7/sccache-v0.7.7-x86_64-pc-windows-msvc.zip"
|
||||
WORKDIR="$TEMP/winbuild/sccache"
|
||||
mkdir -p "$WORKDIR"
|
||||
. ./functions.sh
|
||||
|
||||
# Prep
|
||||
printf "Downloading... "
|
||||
download "$URL" "$WORKDIR/sccache.zip" "$CHECKSUM" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
# Extract and install
|
||||
printf "Extracting and installing... "
|
||||
'C:/Windows/System32/tar.exe' -C "$WORKDIR" --strip-components 1 -xf "$WORKDIR/sccache.zip"
|
||||
cp "$WORKDIR/sccache.exe" "../../winbuild/bin/sccache.exe"
|
||||
echo "Success!"
|
||||
|
||||
# Clean up
|
||||
echo "Cleaning up... "
|
||||
rm -rf "$WORKDIR" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
echo "Done."
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
PATH="../../winbuild/bin;$PATH"
|
||||
. ./functions.sh
|
||||
CHECKSUM="abc9d8df0580a3b5c18e412ff3986d2fa1f0af7738e41e806aa337d0bb9abe901b01fdc83ee090b14c93964f7bcbb6dbe8305a6b1c037a1b55e111d0fd17c8b2"
|
||||
URL="https://github.com/niXman/mingw-builds-binaries/releases/download/13.2.0-rt_v11-rev0/x86_64-13.2.0-release-win32-seh-msvcrt-rt_v11-rev0.7z"
|
||||
WORKDIR="$TEMP/winbuild/mingw64"
|
||||
mkdir -p "$WORKDIR"
|
||||
|
||||
# Download
|
||||
download "$URL" "$WORKDIR/mingw64.7z" "$CHECKSUM"
|
||||
|
||||
# Extract winlibs
|
||||
echo "Extracting mingw..."
|
||||
7z x -o"$WORKDIR/tmp" "$WORKDIR/mingw64.7z" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
printf "Moving files... "
|
||||
cp -r "$WORKDIR"/tmp/mingw64/* "../../winbuild" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
# Copy mingw32-make to gmake
|
||||
cp -v "../../winbuild/bin/mingw32-make.exe" "../../winbuild/bin/gmake.exe"
|
||||
|
||||
# Delete extra software
|
||||
printf "Deleting /opt... "
|
||||
rm -rf "../../winbuild/opt" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
# Cleanup
|
||||
echo Cleaning up work files...
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo Done!
|
|
@ -0,0 +1,31 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
PATH="../../winbuild:$PATH"
|
||||
|
||||
cd "$(dirname "$0")" || {
|
||||
echo "Failed to change directory. Aborting."
|
||||
exit 1
|
||||
}
|
||||
|
||||
. ./functions.sh
|
||||
|
||||
CHECKSUM="033b232bc134a5af738dbc69362c0d3376bd9b490d6346699731e3584606b3fcc5082649b0d6c8c5be138ef91c9d834414d23c4036a4ae59d82adda69f1c22c7"
|
||||
URL="https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-windows-x86_64.zip"
|
||||
WORKDIR="$TEMP/winbuild/cmake"
|
||||
mkdir -p "$WORKDIR"
|
||||
|
||||
# Download
|
||||
download "$URL" "$WORKDIR/cmake.zip" "$CHECKSUM"
|
||||
|
||||
printf "Installing cmake... "
|
||||
'C:/Windows/System32/tar.exe' -C '../../winbuild' --strip-components 1 -xf "$WORKDIR/cmake.zip" || {
|
||||
echo Failed.
|
||||
exit 1
|
||||
}
|
||||
echo Success!
|
||||
|
||||
# Cleanup
|
||||
echo Cleaning up work files...
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo Done.
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
set -eu
|
||||
PATH="../../winbuild/bin:$PATH"
|
||||
|
||||
cd "$(dirname "$0")" || {
|
||||
echo "Failed to change directory. Aborting."
|
||||
exit 1
|
||||
}
|
||||
|
||||
. ./functions.sh
|
||||
|
||||
CHECKSUM="30f269ff414c8e7796aba3b8703b98c581986e86b8ad205f553a014b2326a65def722a0cf9b496ec1e55f081c782f15952e54ce8d6df19acfc4f74ca8464cbf1"
|
||||
URL="https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2+20240224-x86_64-pc-windows-msvc-shared-install_only.tar.gz"
|
||||
WORKDIR="$TEMP/winbuild/python"
|
||||
mkdir -p "$WORKDIR"
|
||||
|
||||
# Download
|
||||
download "$URL" "$WORKDIR/pythoninst.tar.gz" "$CHECKSUM"
|
||||
|
||||
# Install
|
||||
mkdir -p '../../winbuild/opt/python3'
|
||||
printf "Installing python... "
|
||||
'C:/Windows/System32/tar.exe' -C '../../winbuild/opt/python3' --strip-components 1 -xf "$WORKDIR/pythoninst.tar.gz" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo Done.
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
set -eu
|
||||
PATH="../../winbuild/bin:../../winbuild/opt/python3:../../winbuild/opt/python3/Scripts:$PATH"
|
||||
cd "$(dirname "$0")" || {
|
||||
echo "Failed to change directory. Aborting."
|
||||
exit 1
|
||||
}
|
||||
|
||||
. ./functions.sh
|
||||
|
||||
CHECKSUM="bbff57368cfc59cd488bf942c53c83f857cdf60cf1beeffa0d4c8f04479d10536dda93f7e5abe94a7193d63b8a84ba646509eb684bf1b276233b79ae09371f3f"
|
||||
URL="https://bootstrap.pypa.io/get-pip.py"
|
||||
WORKDIR="$TEMP/pip"
|
||||
mkdir -p "$WORKDIR"
|
||||
|
||||
# Download
|
||||
download "$URL" "$WORKDIR/get-pip.py" "$CHECKSUM"
|
||||
|
||||
# Install
|
||||
python "$WORKDIR/get-pip.py"
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo "Done."
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
PATH="../../winbuild/bin:../../winbuild/opt/python3:../../winbuild/opt/python3/Scripts:$PATH"
|
||||
|
||||
# Install meson via pip
|
||||
pip install --force-reinstall -v "meson==1.4.0"
|
||||
|
||||
echo "Done."
|
|
@ -0,0 +1,34 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
PATH="$(realpath "../../winbuild/bin"):$PATH"
|
||||
CHECKSUM="b5101a1278968c7cdb01a8e6c14f0ddd2825e518f4792fa8879c1fa2e5ed4685b1df21216efc657143a9156335036117c3ee05db90f2c38a4ec67a0235fb96b2"
|
||||
URL="https://www.cpan.org/src/5.0/perl-5.38.2.tar.gz"
|
||||
WORKDIR="$TEMP/winbuild/perl"
|
||||
rm -rf "$WORKDIR" || true
|
||||
mkdir -p "$WORKDIR"
|
||||
. ./functions.sh
|
||||
|
||||
download "$URL" "$WORKDIR/perl.tar.gz" "$CHECKSUM"
|
||||
|
||||
# Extract
|
||||
printf "Extracting perl... "
|
||||
'C:/Windows/System32/tar.exe' -C "$WORKDIR" --strip-components 1 -xf "$WORKDIR/perl.tar.gz" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success!"
|
||||
|
||||
# Build
|
||||
mkdir -p "../../winbuild/opt/perl5"
|
||||
cmd /C mingw32-make -j"$(nproc)" -C "$(path_dos "$WORKDIR/win32")" INST_TOP="$(path_dos "../../winbuild/opt/perl5")" CCHOME="$(path_dos "../../winbuild")"
|
||||
cmd /C mingw32-make -j"$(nproc)" -C "$(path_dos "$WORKDIR/win32")" INST_TOP="$(path_dos "../../winbuild/opt/perl5")" CCHOME="$(path_dos "../../winbuild")" install
|
||||
|
||||
# Cleanup
|
||||
printf "Cleaning up... "
|
||||
rm -rf "$WORKDIR" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo "Success."
|
||||
|
||||
echo "Done."
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
CHECKSUM="1431a3d28310e6a427c81ce489b9f9aa9e4ec8af87e499b8561d7a00edd29de23e5e84f6dc8db21f35564d32f873cc4efa556e4e21b1367649fa91b77669460d"
|
||||
URL="https://github.com/git-for-windows/git/releases/download/v2.44.0.windows.1/MinGit-2.44.0-64-bit.zip"
|
||||
WORKDIR="$TEMP/winbuild/git"
|
||||
mkdir -p "$WORKDIR"
|
||||
. ./functions.sh
|
||||
|
||||
# Prep
|
||||
download "$URL" "$WORKDIR/git.zip" "$CHECKSUM"
|
||||
|
||||
# Install
|
||||
printf "Installing git... "
|
||||
mkdir -p "../../winbuild/opt/git"
|
||||
'C:/Windows/System32/tar.exe' -C "../../winbuild/opt/git" -xf "$WORKDIR/git.zip" || {
|
||||
echo "Failed."
|
||||
exit 1
|
||||
}
|
||||
echo Success!
|
||||
|
||||
# Cleanup
|
||||
echo "Cleaning up work files..."
|
||||
rm -rf "$WORKDIR"
|
||||
|
||||
echo "Done."
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "Removing documentation, as it's not needed..."
|
||||
rm -rf "../../winbuild/man"
|
||||
rm -rf "../../winbuild/doc"
|
||||
rm -rf "../../winbuild/licenses"
|
||||
|
||||
echo "Creating environment setup script."
|
||||
cat > "../../winbuild/env.cmd" <<EOF
|
||||
@echo off
|
||||
set "SCRIPT_DIR=%~dp0"
|
||||
set "PATH=%SCRIPT_DIR%\\bin;%SCRIPT_DIR%\\opt\\python3;%SCRIPT_DIR%\\opt\\python3\\Scripts;%SCRIPT_DIR%\\opt\\perl5\\bin;%SCRIPT_DIR%\\opt\\git\\cmd;%PATH%"
|
||||
echo Activated winbuild environment!
|
||||
EOF
|
||||
echo "Done! Just run env.cmd found in $(realpath "../../winbuild") to use winbuild =)"
|
|
@ -0,0 +1,20 @@
|
|||
@echo off
|
||||
setlocal
|
||||
set SCRIPT_DIR="%~dp0"
|
||||
call :getabsolute PREFIX "..\..\winbuild"
|
||||
cd "%SCRIPT_DIR%"
|
||||
|
||||
start "" /WAIT /B ".\00-coreutils.cmd"
|
||||
"%PREFIX%\bin\bash.exe" -c "for i in *.sh; do echo "$i"; ./"$i"; done" || (
|
||||
echo Failed.
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
endlocal
|
||||
echo Done bootstrapping!
|
||||
|
||||
exit /b 0
|
||||
|
||||
:getabsolute
|
||||
set "%1=%~f2"
|
||||
exit /b
|
|
@ -0,0 +1,49 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
path_dos() {
|
||||
printf "%s" "$(realpath "$1" | sed 's|/|\\|g')"
|
||||
}
|
||||
|
||||
check_hashes() {
|
||||
record="$1"
|
||||
file="$2"
|
||||
fileHash="$(sha512sum "$file" | awk '{ print $1 }')"
|
||||
printf "Checksums... "
|
||||
if [ ! "$record" = "$fileHash" ];
|
||||
then
|
||||
echo "Does not match."
|
||||
echo "Recorded: $record"
|
||||
echo "Downloaded: $fileHash"
|
||||
exit 1
|
||||
fi
|
||||
echo "Match!"
|
||||
return 0
|
||||
}
|
||||
|
||||
speen() {
|
||||
spin1='-'
|
||||
spin2='\'
|
||||
spin3='|'
|
||||
spin4='/'
|
||||
pid="$1"
|
||||
while kill -0 "$pid" 2>/dev/null;
|
||||
do
|
||||
for i in $spin1 $spin2 $spin3 $spin4;
|
||||
do
|
||||
printf "\b$i"
|
||||
sleep 0.1
|
||||
done
|
||||
done
|
||||
printf "\bDone!\n"
|
||||
}
|
||||
|
||||
download() {
|
||||
url="$1"
|
||||
output="$2"
|
||||
hash="$3"
|
||||
printf "Downloading $url... "
|
||||
curl -s -o "$output" -fL "$url" &
|
||||
speen "$!"
|
||||
check_hashes "$hash" "$output"
|
||||
}
|
Loading…
Reference in New Issue