mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2024-11-21 04:50:16 -08:00
135 lines
3.1 KiB
Bash
135 lines
3.1 KiB
Bash
#!/bin/bash
|
|
pm3Dir=/pm3
|
|
copyDir=/builds
|
|
buildDir=/tmp
|
|
mingwDir=/mingw64
|
|
|
|
function check_requirements {
|
|
pacman -Q p7zip 1> /dev/null
|
|
if [[ $? != 0 ]]; then
|
|
pacman --noconfirm -S p7zip
|
|
fi
|
|
}
|
|
|
|
function copy_shell {
|
|
DEPLIST=(
|
|
"/usr/bin/bash.exe"
|
|
"/usr/bin/dirname.exe"
|
|
"/usr/bin/basename.exe"
|
|
"/usr/bin/uname.exe"
|
|
"/usr/bin/awk.exe"
|
|
"/usr/bin/grep.exe"
|
|
"/usr/bin/sleep.exe"
|
|
)
|
|
mkdir -p "$dstDir/client/libs/shell"
|
|
for dep in ${DEPLIST[*]}; do
|
|
ldd $dep | grep "=> /usr" | awk '{print $3}' | xargs -I '{}' cp -v '{}' "$dstDir/client/libs/shell"
|
|
cp $dep "$dstDir/client/libs/shell"
|
|
done
|
|
|
|
#tmp dir required for bash
|
|
mkdir -p "$dstDir/client/tmp"
|
|
}
|
|
|
|
function copy_common {
|
|
rm -rf "$dstDir"
|
|
mkdir -p "$copyDir/$buildName/"
|
|
mkdir -p "$dstDir/client"
|
|
mkdir -p "$dstDir/client/libs"
|
|
mkdir -p "$dstDir/recovery"
|
|
mkdir -p "$dstDir/Windows Driver (not required for Windows 10)"
|
|
|
|
#Copy required libraries to client/libs
|
|
ldd "$srcDir/client/proxmark3.exe" | grep "=> /mingw" | awk '{print $3}' | xargs -I '{}' cp -v '{}' "$dstDir/client/libs"
|
|
#Copy qt5 platform dll
|
|
cp "$mingwDir/share/qt5/plugins/platforms/qwindows.dll" "$dstDir/client/libs"
|
|
#Copy firmware
|
|
cp "$srcDir/armsrc/obj/fullimage.elf" "$dstDir/client"
|
|
cp "$srcDir/bootrom/obj/bootrom.elf" "$dstDir/client"
|
|
#Copy recovery
|
|
cp $srcDir/recovery/{bootrom.bin,fullimage.bin,proxmark3_recovery.bin} "$dstDir/recovery"
|
|
#Copy driver
|
|
cp "$srcDir/driver/proxmark3.inf" "$dstDir/Windows Driver (not required for Windows 10)"
|
|
}
|
|
|
|
function check_for_updates {
|
|
git fetch
|
|
git pull --ff-only
|
|
hash=$(git rev-parse HEAD)
|
|
|
|
if ls $copyDir/$buildName/*-$hash.7z 1> /dev/null 2>&1; then
|
|
return 1 #build exist
|
|
else
|
|
return 0 #build doesn't exist
|
|
fi
|
|
}
|
|
|
|
function zip_folder {
|
|
date=$(date +%Y%m%d)
|
|
7z a -r -mx9 $copyDir/$buildName/$buildName-$date-$hash.7z $dstDir/*
|
|
}
|
|
|
|
function build_rrg {
|
|
make clean
|
|
#Running python scripts outside ProxSpace is a bad idea
|
|
make SKIPPYTHON=1 -j
|
|
if [ $? -eq 0 ]; then
|
|
copy_common
|
|
copy_shell
|
|
|
|
#Copy contents of the autobuild folder
|
|
cp -r /setup/autobuild/rrg/* "$dstDir"
|
|
|
|
#Copy the client and additional files
|
|
cp -r $srcDir/client/{proxmark3.exe,lualibs,luascripts,cmdscripts,dictionaries,resources} "$dstDir/client"
|
|
|
|
#Copy the pm3 scripts
|
|
cp -r $srcDir/{pm3,pm3-flash,pm3-flash-all,pm3-flash-bootrom,pm3-flash-fullimage} "$dstDir/client"
|
|
|
|
zip_folder
|
|
fi
|
|
}
|
|
|
|
function build_official {
|
|
make clean
|
|
make
|
|
if [ $? -eq 0 ]; then
|
|
copy_common
|
|
|
|
#Copy contents of the autobuild folder
|
|
cp -r /setup/autobuild/official/* "$dstDir"
|
|
|
|
#Copy the client and additional files
|
|
cp -r $srcDir/client/{proxmark3.exe,flasher.exe,*.dic,lualibs,scripts,hardnested} "$dstDir/client"
|
|
|
|
#Remove accidentally copied .h/.c files from hardnested folder
|
|
rm $dstDir/client/hardnested/{*.h,*.c}
|
|
|
|
zip_folder
|
|
fi
|
|
}
|
|
|
|
|
|
function loop_folders {
|
|
for i in $( ls -d */ ); do
|
|
buildName=${i%%/}
|
|
srcDir=$pm3Dir/$buildName
|
|
dstDir=$buildDir/$buildName
|
|
echo Processing: $srcDir
|
|
cd $srcDir
|
|
|
|
if check_for_updates; then
|
|
#Build rrg
|
|
if [ -f "pm3" ]; then
|
|
build_rrg
|
|
else
|
|
build_official
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
check_requirements
|
|
cd $pm3Dir
|
|
loop_folders
|
|
|