mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-09-20 15:26:13 +08:00
mkversion.sh
: now regenerates version_pm3.c (and consequently the binaries) only when needed
and add --force to forcibly regenerate version_pm3.c and small fixes: * document mkversion.sh usage * remove call to mkversion.sh in client/experimental_lib/CMakeLists.txt on release * remove call to old `mkversion.pl` in bootrom/Makefile * just in case, mkversion.sh takes care of atomic write of the file
This commit is contained in:
parent
9dfc39dbbf
commit
cb72897b17
|
@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file.
|
||||||
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log...
|
||||||
|
|
||||||
## [unreleased][unreleased]
|
## [unreleased][unreleased]
|
||||||
|
- Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox)
|
||||||
- Updated ATR list (@iceman1001)
|
- Updated ATR list (@iceman1001)
|
||||||
- Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001)
|
- Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001)
|
||||||
- Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100)
|
- Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100)
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -370,10 +370,10 @@ release:
|
||||||
# - Tagging temporarily...
|
# - Tagging temporarily...
|
||||||
@git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION)
|
@git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION)
|
||||||
# - Changing default version information based on new tag
|
# - Changing default version information based on new tag
|
||||||
@$(SH) tools/mkversion.sh > common/default_version_pm3.c.tmp && $(MV) common/default_version_pm3.c.tmp common/default_version_pm3.c
|
@$(SH) tools/mkversion.sh common/default_version_pm3.c
|
||||||
# - Removing mkversion calls
|
# - Removing mkversion calls
|
||||||
@sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile
|
@sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile
|
||||||
@sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt
|
@sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt client/experimental_lib/CMakeLists.txt
|
||||||
# - Deleting tag...
|
# - Deleting tag...
|
||||||
@git tag -d $(VERSION)
|
@git tag -d $(VERSION)
|
||||||
# - Amending commit...
|
# - Amending commit...
|
||||||
|
|
|
@ -181,10 +181,10 @@ showinfo:
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
# version_pm3.c should be remade on every time fullimage.stage1.elf should be remade
|
# version_pm3.c should be checked on every time fullimage.stage1.elf should be remade
|
||||||
version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE
|
version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE
|
||||||
$(info [-] GEN $@)
|
$(info [-] CHECK $@)
|
||||||
$(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@
|
$(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@
|
||||||
|
|
||||||
fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR)
|
fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR)
|
||||||
$(info [-] GEN $@)
|
$(info [-] GEN $@)
|
||||||
|
|
|
@ -53,10 +53,10 @@ INSTALLFW = $(OBJDIR)/bootrom.elf
|
||||||
|
|
||||||
OBJS = $(OBJDIR)/bootrom.s19
|
OBJS = $(OBJDIR)/bootrom.s19
|
||||||
|
|
||||||
# version_pm3.c should be remade on every compilation
|
# version_pm3.c should be checked on every compilation
|
||||||
version_pm3.c: default_version_pm3.c .FORCE
|
version_pm3.c: default_version_pm3.c .FORCE
|
||||||
$(info [=] GEN $@)
|
$(info [=] CHECK $@)
|
||||||
$(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@
|
$(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@
|
||||||
|
|
||||||
all: showinfo $(OBJS)
|
all: showinfo $(OBJS)
|
||||||
|
|
||||||
|
|
|
@ -397,7 +397,7 @@ set (TARGET_SOURCES
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c
|
OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c
|
||||||
COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c
|
COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c
|
||||||
DEPENDS ${PM3_ROOT}/common/default_version_pm3.c
|
DEPENDS ${PM3_ROOT}/common/default_version_pm3.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -918,10 +918,10 @@ src/pm3_pywrap.c: pm3.i
|
||||||
|
|
||||||
.PHONY: all clean install uninstall tarbin .FORCE
|
.PHONY: all clean install uninstall tarbin .FORCE
|
||||||
|
|
||||||
# version_pm3.c should be remade on every compilation
|
# version_pm3.c should be checked on every compilation
|
||||||
src/version_pm3.c: default_version_pm3.c .FORCE
|
src/version_pm3.c: default_version_pm3.c .FORCE
|
||||||
$(info [=] GEN $@)
|
$(info [=] CHECK $@)
|
||||||
$(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@
|
$(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@
|
||||||
|
|
||||||
# easy printing of MAKE VARIABLES
|
# easy printing of MAKE VARIABLES
|
||||||
print-%: ; @echo $* = $($*)
|
print-%: ; @echo $* = $($*)
|
||||||
|
|
|
@ -397,7 +397,7 @@ set (TARGET_SOURCES
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c
|
OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c
|
||||||
COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c
|
COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c
|
||||||
DEPENDS ${PM3_ROOT}/common/default_version_pm3.c
|
DEPENDS ${PM3_ROOT}/common/default_version_pm3.c
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "" ]; then
|
||||||
|
echo "To report a short string about the current version:"
|
||||||
|
echo " $0 --short"
|
||||||
|
echo "To regenerate version_pm3.c if needed:"
|
||||||
|
echo " $0 [--force] [--undecided] path/to/version_pm3.c"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Output a version_pm3.c file that includes information about the current build
|
# Output a version_pm3.c file that includes information about the current build
|
||||||
# From mkversion.pl
|
# From mkversion.pl
|
||||||
# pure sh POSIX as now even on Windows we use WSL or ProxSpace with sh available
|
# pure sh POSIX as now even on Windows we use WSL or ProxSpace with sh available
|
||||||
|
@ -13,6 +21,27 @@ if [ "$1" = "--short" ]; then
|
||||||
SHORT=true
|
SHORT=true
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
FORCE=false
|
||||||
|
if [ "$1" = "--force" ]; then
|
||||||
|
FORCE=true
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
UNDECIDED=false
|
||||||
|
if [ "$1" = "--undecided" ]; then
|
||||||
|
UNDECIDED=true
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
VERSIONSRC="$1"
|
||||||
|
|
||||||
|
if ! $SHORT && [ "$VERSIONSRC" = "" ]; then
|
||||||
|
echo "Error: $0 is missing its destination filename"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $SHORT && [ "$VERSIONSRC" != "" ]; then
|
||||||
|
echo "Error: can't output a short string and generate file at the same time"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# if you are making your own fork, change this line to reflect your fork-name
|
# if you are making your own fork, change this line to reflect your fork-name
|
||||||
fullgitinfo="Iceman"
|
fullgitinfo="Iceman"
|
||||||
|
@ -27,7 +56,7 @@ if [ "$commandGIT" != "" ]; then
|
||||||
# now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case
|
# now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case
|
||||||
gitversion=$(git describe --dirty --always)
|
gitversion=$(git describe --dirty --always)
|
||||||
gitbranch=$(git rev-parse --abbrev-ref HEAD)
|
gitbranch=$(git rev-parse --abbrev-ref HEAD)
|
||||||
if [ "$1" != "--undecided" ]; then
|
if $UNDECIDED; then
|
||||||
if [ "$gitversion" != "${gitversion%-dirty}" ]; then
|
if [ "$gitversion" != "${gitversion%-dirty}" ]; then
|
||||||
clean=0
|
clean=0
|
||||||
else
|
else
|
||||||
|
@ -68,7 +97,21 @@ sha=$(
|
||||||
if [ "$sha" = "" ]; then
|
if [ "$sha" = "" ]; then
|
||||||
sha="no sha256"
|
sha="no sha256"
|
||||||
fi
|
fi
|
||||||
cat <<EOF
|
|
||||||
|
REDO=true
|
||||||
|
if ! $FORCE && [ -f "$VERSIONSRC" ]; then
|
||||||
|
# version src file exists, check if it needs to be updated
|
||||||
|
# file parser quite fragile, be careful if you edit VERSIONSRC template below...
|
||||||
|
oldclean=$(sed '13s/.*\([0-9]\+\).*/\1/;13!d' "$VERSIONSRC")
|
||||||
|
oldfullgitinfo=$(sed '14s/.*"\([^"]*\)".*/\1/;14!d' "$VERSIONSRC")
|
||||||
|
oldsha=$(sed '16s/.*"\([^"]*\)".*/\1/;16!d' "$VERSIONSRC")
|
||||||
|
if [ "$oldclean" = "$clean" ] && [ "$oldfullgitinfo" = "$fullgitinfo" ] && [ "$oldsha" = "$sha" ]; then
|
||||||
|
REDO=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if $REDO; then
|
||||||
|
# use a tmp file to avoid concurrent call to mkversion to parse a half-written file.
|
||||||
|
cat > "${VERSIONSRC}.tmp" <<EOF
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
/* Generated file, do not edit */
|
/* Generated file, do not edit */
|
||||||
#ifndef ON_DEVICE
|
#ifndef ON_DEVICE
|
||||||
|
@ -87,3 +130,5 @@ const struct version_information_t SECTVERSINFO g_version_information = {
|
||||||
"$sha"
|
"$sha"
|
||||||
};
|
};
|
||||||
EOF
|
EOF
|
||||||
|
mv "${VERSIONSRC}.tmp" "${VERSIONSRC}"
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in a new issue