From 52366b4cb53faf1bbe3ac2db19ce0f69cb03dbaa Mon Sep 17 00:00:00 2001 From: gator96100 Date: Mon, 18 Jan 2021 20:04:21 +0100 Subject: [PATCH] Autobuild improvements & fixes --- msys2/ps/autobuild.sh | 166 +++++++++++++----- msys2/ps/autobuild/Go.bat | 1 - .../autobuild/{ => official}/FLASH - All.bat | 7 +- .../{ => official}/FLASH - Bootrom.bat | 7 +- .../{ => official}/FLASH - fullimage.bat | 7 +- msys2/ps/autobuild/official/Go.bat | 3 + msys2/ps/autobuild/official/client/setup.bat | 6 + msys2/ps/autobuild/qt.conf | 2 - msys2/ps/autobuild/rrg/client/setup.bat | 6 + msys2/ps/autobuild/rrg/pm3-flash-all.bat | 5 + msys2/ps/autobuild/rrg/pm3-flash-bootrom.bat | 5 + .../ps/autobuild/rrg/pm3-flash-fullimage.bat | 5 + msys2/ps/autobuild/rrg/pm3.bat | 5 + 13 files changed, 164 insertions(+), 61 deletions(-) delete mode 100644 msys2/ps/autobuild/Go.bat rename msys2/ps/autobuild/{ => official}/FLASH - All.bat (92%) rename msys2/ps/autobuild/{ => official}/FLASH - Bootrom.bat (95%) rename msys2/ps/autobuild/{ => official}/FLASH - fullimage.bat (94%) create mode 100644 msys2/ps/autobuild/official/Go.bat create mode 100644 msys2/ps/autobuild/official/client/setup.bat delete mode 100644 msys2/ps/autobuild/qt.conf create mode 100644 msys2/ps/autobuild/rrg/client/setup.bat create mode 100644 msys2/ps/autobuild/rrg/pm3-flash-all.bat create mode 100644 msys2/ps/autobuild/rrg/pm3-flash-bootrom.bat create mode 100644 msys2/ps/autobuild/rrg/pm3-flash-fullimage.bat create mode 100644 msys2/ps/autobuild/rrg/pm3.bat diff --git a/msys2/ps/autobuild.sh b/msys2/ps/autobuild.sh index a3627158c..5e64152db 100644 --- a/msys2/ps/autobuild.sh +++ b/msys2/ps/autobuild.sh @@ -3,51 +3,131 @@ pm3Dir=/pm3 copyDir=/builds buildDir=/tmp mingwDir=/mingw64 -arch=64 -jobs=$(nproc) -pacman -Q p7zip 1> /dev/null -if [[ $? != 0 ]]; then - pacman --noconfirm -S p7zip -fi - -cd $pm3Dir -for i in $( ls -d */ ); do - echo Processing: ${i%%/}-$arch - cd $pm3Dir/${i%%/} - git fetch - git pull - hash=$(git rev-parse HEAD) - date=$(date +%Y%m%d) - if ! ls $copyDir/${i%%/}-$arch/*-$hash.7z 1> /dev/null 2>&1; then - - if [ ! -f "rdv40.txt" ]; then - jobs=1 +function check_requirements { + pacman -Q p7zip 1> /dev/null + if [[ $? != 0 ]]; then + pacman --noconfirm -S p7zip fi - - make clean - make all -j$jobs +} + +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" + ) + 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 - if [ $? -eq 0 ]; then - rm -rf $buildDir/${i%%/}/* - mkdir -p $copyDir/${i%%/}-$arch/ - mkdir -p $buildDir/${i%%/}/win$arch/platforms - mkdir -p $buildDir/${i%%/}/firmware_win/bootrom - mkdir -p "$buildDir/${i%%/}/firmware_win/JTAG Only" - mkdir -p "$buildDir/${i%%/}/Windows Driver" + #tmp dir required for bash + mkdir -p "$dstDir/client/tmp" +} - ldd $pm3Dir/${i%%/}/client/proxmark3.exe | grep "=> /mingw" | awk '{print $3}' | xargs -I '{}' cp -v '{}' $buildDir/${i%%/}/win$arch - cp -r /ps/autobuild/* $buildDir/${i%%/}/win$arch - cp -r $pm3Dir/${i%%/}/client/{proxmark3.exe,flasher.exe,*.dic,lualibs,scripts,pyscripts,luascripts,lualibs,hardnested,dictionaries,resources} $buildDir/${i%%/}/win$arch - cp $mingwDir/share/qt5/plugins/platforms/qwindows.dll $buildDir/${i%%/}/win$arch/platforms - cp $pm3Dir/${i%%/}/armsrc/obj/{fullimage.elf,fullimage.s19} $buildDir/${i%%/}/firmware_win - cp $pm3Dir/${i%%/}/bootrom/obj/{bootrom.elf,bootrom.s19} $buildDir/${i%%/}/firmware_win/bootrom - cp $pm3Dir/${i%%/}/recovery/{bootrom.bin,fullimage.bin,proxmark3_recovery.bin} "$buildDir/${i%%/}/firmware_win/JTAG Only" - cp $pm3Dir/${i%%/}/driver/proxmark3.inf "$buildDir/${i%%/}/Windows Driver" - rm $buildDir/${i%%/}/win$arch/hardnested/{*.h,*.c} - cd $buildDir/${i%%/} - 7z a -r -mx9 $copyDir/${i%%/}-$arch/${i%%/}-$arch-$date-$hash.7z ./* - echo done +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 - fi -done \ No newline at end of file +} + +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 /ps/autobuild/rrg/* "$dstDir" + + #Copy the client and additional files + cp -r $srcDir/client/{proxmark3.exe,lualibs,luascripts,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 /ps/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 "rdv40.txt" ]; then + build_rrg + else + build_official + fi + fi + done +} +check_requirements +cd $pm3Dir +loop_folders + diff --git a/msys2/ps/autobuild/Go.bat b/msys2/ps/autobuild/Go.bat deleted file mode 100644 index 859999157..000000000 --- a/msys2/ps/autobuild/Go.bat +++ /dev/null @@ -1 +0,0 @@ -proxmark3 COM5 \ No newline at end of file diff --git a/msys2/ps/autobuild/FLASH - All.bat b/msys2/ps/autobuild/official/FLASH - All.bat similarity index 92% rename from msys2/ps/autobuild/FLASH - All.bat rename to msys2/ps/autobuild/official/FLASH - All.bat index daf1e5f0d..030a206ec 100644 --- a/msys2/ps/autobuild/FLASH - All.bat +++ b/msys2/ps/autobuild/official/FLASH - All.bat @@ -28,11 +28,8 @@ echo FLASHING bootrom.elf + fullimage.elf, please wait... echo ==================================================== echo. -if exist flasher.exe ( - flasher.exe com5 -b ..\firmware_win\bootrom\bootrom.elf ..\firmware_win\fullimage.elf -) else ( - proxmark3.exe com5 --flash --unlock-bootloader --image ..\firmware_win\bootrom\bootrom.elf --image ..\firmware_win\fullimage.elf -) +call client\setup.bat +client\flasher.exe com5 -b client\bootrom.elf client\fullimage.elf pause. diff --git a/msys2/ps/autobuild/FLASH - Bootrom.bat b/msys2/ps/autobuild/official/FLASH - Bootrom.bat similarity index 95% rename from msys2/ps/autobuild/FLASH - Bootrom.bat rename to msys2/ps/autobuild/official/FLASH - Bootrom.bat index a102b37cb..0b35f3eae 100644 --- a/msys2/ps/autobuild/FLASH - Bootrom.bat +++ b/msys2/ps/autobuild/official/FLASH - Bootrom.bat @@ -41,11 +41,8 @@ echo FLASHING bootrom.elf, please wait... echo ==================================== echo. -if exist flasher.exe ( - flasher.exe com5 -b ..\firmware_win\bootrom\bootrom.elf -) else ( - proxmark3.exe com5 --flash --unlock-bootloader --image ..\firmware_win\bootrom\bootrom.elf -) +call client\setup.bat +client\flasher.exe com5 -b client\bootrom.elf pause. diff --git a/msys2/ps/autobuild/FLASH - fullimage.bat b/msys2/ps/autobuild/official/FLASH - fullimage.bat similarity index 94% rename from msys2/ps/autobuild/FLASH - fullimage.bat rename to msys2/ps/autobuild/official/FLASH - fullimage.bat index 666624130..5112ef189 100644 --- a/msys2/ps/autobuild/FLASH - fullimage.bat +++ b/msys2/ps/autobuild/official/FLASH - fullimage.bat @@ -27,11 +27,8 @@ echo FLASHING fullimage.elf, please wait... echo ====================================== echo. -if exist flasher.exe ( - flasher.exe com5 -b ..\firmware_win\fullimage.elf -) else ( - proxmark3.exe com5 --flash --unlock-bootloader --image ..\firmware_win\fullimage.elf -) +call client\setup.bat +client\flasher.exe com5 -b client\fullimage.elf pause. diff --git a/msys2/ps/autobuild/official/Go.bat b/msys2/ps/autobuild/official/Go.bat new file mode 100644 index 000000000..465a34f75 --- /dev/null +++ b/msys2/ps/autobuild/official/Go.bat @@ -0,0 +1,3 @@ +@echo off +call client\setup.bat +client\proxmark3 COM5 \ No newline at end of file diff --git a/msys2/ps/autobuild/official/client/setup.bat b/msys2/ps/autobuild/official/client/setup.bat new file mode 100644 index 000000000..890390a8a --- /dev/null +++ b/msys2/ps/autobuild/official/client/setup.bat @@ -0,0 +1,6 @@ +@echo off +set HOME=%~dp0 +set QT_PLUGIN_PATH=%HOME%\libs\ +set QT_QPA_PLATFORM_PLUGIN_PATH=%QT_PLUGIN_PATH% +set PATH=%QT_PLUGIN_PATH%;%PATH% +set MSYSTEM=MINGW64 \ No newline at end of file diff --git a/msys2/ps/autobuild/qt.conf b/msys2/ps/autobuild/qt.conf deleted file mode 100644 index 2775587ef..000000000 --- a/msys2/ps/autobuild/qt.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Paths] -Plugins=. \ No newline at end of file diff --git a/msys2/ps/autobuild/rrg/client/setup.bat b/msys2/ps/autobuild/rrg/client/setup.bat new file mode 100644 index 000000000..2c9aaa30e --- /dev/null +++ b/msys2/ps/autobuild/rrg/client/setup.bat @@ -0,0 +1,6 @@ +@echo off +set HOME=%~dp0 +set QT_PLUGIN_PATH=%HOME%\libs\ +set QT_QPA_PLATFORM_PLUGIN_PATH=%QT_PLUGIN_PATH% +set PATH=%QT_PLUGIN_PATH%;%QT_PLUGIN_PATH%shell\;%PATH% +set MSYSTEM=MINGW64 \ No newline at end of file diff --git a/msys2/ps/autobuild/rrg/pm3-flash-all.bat b/msys2/ps/autobuild/rrg/pm3-flash-all.bat new file mode 100644 index 000000000..448e49219 --- /dev/null +++ b/msys2/ps/autobuild/rrg/pm3-flash-all.bat @@ -0,0 +1,5 @@ +@echo off +cd client +call setup.bat +bash pm3-flash-all +pause \ No newline at end of file diff --git a/msys2/ps/autobuild/rrg/pm3-flash-bootrom.bat b/msys2/ps/autobuild/rrg/pm3-flash-bootrom.bat new file mode 100644 index 000000000..0f790e954 --- /dev/null +++ b/msys2/ps/autobuild/rrg/pm3-flash-bootrom.bat @@ -0,0 +1,5 @@ +@echo off +cd client +call setup.bat +bash pm3-flash-bootrom +pause \ No newline at end of file diff --git a/msys2/ps/autobuild/rrg/pm3-flash-fullimage.bat b/msys2/ps/autobuild/rrg/pm3-flash-fullimage.bat new file mode 100644 index 000000000..02a432334 --- /dev/null +++ b/msys2/ps/autobuild/rrg/pm3-flash-fullimage.bat @@ -0,0 +1,5 @@ +@echo off +cd client +call setup.bat +bash pm3-flash-fullimage +pause \ No newline at end of file diff --git a/msys2/ps/autobuild/rrg/pm3.bat b/msys2/ps/autobuild/rrg/pm3.bat new file mode 100644 index 000000000..a017275ea --- /dev/null +++ b/msys2/ps/autobuild/rrg/pm3.bat @@ -0,0 +1,5 @@ +@echo off +cd client +call setup.bat +bash pm3 +pause \ No newline at end of file