From 910932b89d44c075d1248f5fa0845fed80105a59 Mon Sep 17 00:00:00 2001 From: Jonathan Challinger Date: Thu, 22 Jan 2015 18:05:55 -0800 Subject: [PATCH] Build: add git hashes to .px4 files --- Tools/scripts/add_git_hashes.py | 51 +++++++++++++++++++++++++++++++++ mk/px4_targets.mk | 3 ++ 2 files changed, 54 insertions(+) create mode 100755 Tools/scripts/add_git_hashes.py diff --git a/Tools/scripts/add_git_hashes.py b/Tools/scripts/add_git_hashes.py new file mode 100755 index 0000000000..dc17b583ca --- /dev/null +++ b/Tools/scripts/add_git_hashes.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +import json +import sys +import os +import subprocess +import argparse + +parser = argparse.ArgumentParser() + +parser.add_argument('input_file') +parser.add_argument('output_file') + +parser.add_argument('--ardupilot') +parser.add_argument('--px4') +parser.add_argument('--nuttx') +parser.add_argument('--uavcan') + +args = parser.parse_args() + +f = open(args.input_file,'r') +fw_json = json.load(f) +f.close() + +if args.ardupilot is not None: + try: + fw_json["ardupilot_git_hash"] = subprocess.check_output(["git", "--git-dir", os.path.join(args.ardupilot,".git"), "rev-parse", "HEAD"]).strip().decode('ascii') + except: + print("Failed to get apm hash") + +if args.px4 is not None: + try: + fw_json["px4_git_hash"] = subprocess.check_output(["git", "--git-dir", os.path.join(args.px4,".git"), "rev-parse", "HEAD"]).strip().decode('ascii') + except: + print("Failed to get px4 hash") + +if args.nuttx is not None: + try: + fw_json["nuttx_git_hash"] = subprocess.check_output(["git", "--git-dir", os.path.join(args.nuttx,".git"), "rev-parse", "HEAD"]).strip().decode('ascii') + except: + print("Failed to get nuttx hash") + +if args.uavcan is not None: + try: + fw_json["uavcan_git_hash"] = subprocess.check_output(["git", "--git-dir", os.path.join(args.uavcan,".git"), "rev-parse", "HEAD"]).strip().decode('ascii') + except: + print("Failed to get uavcan hash") + +f=open(args.output_file,'w') +json.dump(fw_json,f,indent=4) +f.truncate() +f.close() \ No newline at end of file diff --git a/mk/px4_targets.mk b/mk/px4_targets.mk index 857fc95978..9361315851 100644 --- a/mk/px4_targets.mk +++ b/mk/px4_targets.mk @@ -70,6 +70,7 @@ px4-v1: $(BUILDROOT)/make.flags $(PX4_ROOT)/Archives/px4fmu-v1.export $(SKETCHCP $(v) $(PX4_MAKE) px4fmu-v1_APM $(v) /bin/rm -f $(SKETCH)-v1.px4 $(v) cp $(PX4_ROOT)/Images/px4fmu-v1_APM.px4 $(SKETCH)-v1.px4 + $(v) $(SKETCHBOOK)/Tools/scripts/add_git_hashes.py --ardupilot $(SKETCHBOOK) --px4 $(PX4_ROOT) --nuttx $(NUTTX_SRC) --uavcan $(UAVCAN_DIR) $(SKETCH)-v2.px4 $(SKETCH)-v2.px4 $(v) echo "PX4 $(SKETCH) Firmware is in $(SKETCH)-v1.px4" px4-v2: $(BUILDROOT)/make.flags $(PX4_ROOT)/Archives/px4fmu-v2.export $(SKETCHCPP) module_mk px4-io-v2 @@ -79,6 +80,8 @@ px4-v2: $(BUILDROOT)/make.flags $(PX4_ROOT)/Archives/px4fmu-v2.export $(SKETCHCP $(PX4_MAKE) px4fmu-v2_APM $(v) /bin/rm -f $(SKETCH)-v2.px4 $(v) cp $(PX4_ROOT)/Images/px4fmu-v2_APM.px4 $(SKETCH)-v2.px4 + $(v) echo $(NUTTX_SRC) + $(v) $(SKETCHBOOK)/Tools/scripts/add_git_hashes.py --ardupilot $(SKETCHBOOK) --px4 $(PX4_ROOT) --nuttx $(NUTTX_SRC)/.. --uavcan $(UAVCAN_DIR) $(SKETCH)-v2.px4 $(SKETCH)-v2.px4 $(v) echo "PX4 $(SKETCH) Firmware is in $(SKETCH)-v2.px4" px4: px4-v1 px4-v2