Version Generator for PlatformIO Builds
This commit is contained in:
parent
4c2948a8e6
commit
8afd94ed3a
2 changed files with 65 additions and 2 deletions
57
PlatformIOAddons/generate_version_header_for_marlin
Executable file
57
PlatformIOAddons/generate_version_header_for_marlin
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#/usr/bin/env python -
|
||||||
|
from SCons.Script import DefaultEnvironment
|
||||||
|
|
||||||
|
env = DefaultEnvironment()
|
||||||
|
|
||||||
|
import os
|
||||||
|
import errno
|
||||||
|
|
||||||
|
def make_sure_path_exists(path):
|
||||||
|
try:
|
||||||
|
os.makedirs(path)
|
||||||
|
except OSError as exception:
|
||||||
|
if exception.errno != errno.EEXIST:
|
||||||
|
raise
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
make_sure_path_exists(env.subst('$BUILDSRC_DIR'))
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
import time
|
||||||
|
import string
|
||||||
|
import re
|
||||||
|
|
||||||
|
p = subprocess.Popen(['git', 'symbolic-ref', '-q', '--short', 'HEAD'], stdout=subprocess.PIPE)
|
||||||
|
BRANCH = p.stdout.readline().rstrip()
|
||||||
|
p = subprocess.Popen(['git', 'describe', '--tags', '--first-parent'], stdout=subprocess.PIPE)
|
||||||
|
RAW_VERSION = p.stdout.readline().rstrip()
|
||||||
|
s = re.search('(.*)(-.*)(-.*)',RAW_VERSION)
|
||||||
|
SHORT_VERSION = s.group(1)+' '+BRANCH
|
||||||
|
DETAILED_VERSION = string.replace(RAW_VERSION,'-',' '+BRANCH+'-',1)
|
||||||
|
p = subprocess.Popen(['git', 'config', '--local', '--get', 'remote.origin.url'], stdout=subprocess.PIPE)
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
s = re.search('(.*github.com:)(.*)', p.stdout.readline().rstrip())
|
||||||
|
URL = string.replace("https://github.com/"+s.group(2), ".git", "/")
|
||||||
|
|
||||||
|
url_text = """#define SOURCE_CODE_URL "%s"
|
||||||
|
// Deprecated URL definition
|
||||||
|
#define FIRMWARE_URL "%s"
|
||||||
|
""" % (URL, URL)
|
||||||
|
except Exception, e:
|
||||||
|
url_text = ""
|
||||||
|
|
||||||
|
version_header_text = """/* This file is automatically generated by a compile time hook
|
||||||
|
* Do not manually edit it
|
||||||
|
* It does not get committed to the repository
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BUILD_UNIX_DATETIME %s
|
||||||
|
#define STRING_DISTRIBUTION_DATE "%s"
|
||||||
|
#define SHORT_BUILD_VERSION "%s"
|
||||||
|
#define DETAILED_BUILD_VERSION "%s"
|
||||||
|
%s""" % (int(time.time()), datetime.now().strftime('%Y-%m-%d %H:%M'),SHORT_VERSION, DETAILED_VERSION, url_text)
|
||||||
|
|
||||||
|
open(env.subst('$BUILDSRC_DIR/_Version.h'), 'w').write(version_header_text)
|
|
@ -18,19 +18,24 @@ src_dir = ../Marlin
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
framework = arduino
|
framework = arduino
|
||||||
board = megaatmega2560
|
board = megaatmega2560
|
||||||
|
extra_script = ./generate_version_header_for_marlin
|
||||||
|
build_flags = -D USE_AUTOMATIC_VERSIONING -I $BUILDSRC_DIR
|
||||||
board_f_cpu = 16000000L
|
board_f_cpu = 16000000L
|
||||||
|
|
||||||
[env:mega1280]
|
[env:mega1280]
|
||||||
platform = atmelavr
|
platform = atmelavr
|
||||||
framework = arduino
|
framework = arduino
|
||||||
board = megaatmega1280
|
board = megaatmega1280
|
||||||
|
extra_script = ./generate_version_header_for_marlin
|
||||||
|
build_flags = -D USE_AUTOMATIC_VERSIONING -I $BUILDSRC_DIR
|
||||||
board_f_cpu = 16000000L
|
board_f_cpu = 16000000L
|
||||||
|
|
||||||
[env:printrboard]
|
[env:printrboard]
|
||||||
platform = teensy
|
platform = teensy
|
||||||
framework = arduino
|
framework = arduino
|
||||||
board = teensy20pp
|
board = teensy20pp
|
||||||
build_flags = -D MOTHERBOARD=BOARD_PRINTRBOARD
|
extra_script = ./generate_version_header_for_marlin
|
||||||
|
build_flags = -D USE_AUTOMATIC_VERSIONING -I $BUILDSRC_DIR -D MOTHERBOARD=BOARD_PRINTRBOARD
|
||||||
# Bug in arduino framework does not allow boards running at 20Mhz
|
# Bug in arduino framework does not allow boards running at 20Mhz
|
||||||
#board_f_cpu = 20000000L
|
#board_f_cpu = 20000000L
|
||||||
|
|
||||||
|
@ -38,4 +43,5 @@ build_flags = -D MOTHERBOARD=BOARD_PRINTRBOARD
|
||||||
platform = teensy
|
platform = teensy
|
||||||
framework = arduino
|
framework = arduino
|
||||||
board = teensy20pp
|
board = teensy20pp
|
||||||
build_flags = -D MOTHERBOARD=BOARD_BRAINWAVE_PRO -D AT90USBxx_TEENSYPP_ASSIGNMENTS
|
extra_script = ./generate_version_header_for_marlin
|
||||||
|
build_flags = -D USE_AUTOMATIC_VERSIONING -I $BUILDSRC_DIR -D MOTHERBOARD=BOARD_BRAINWAVE_PRO -D AT90USBxx_TEENSYPP_ASSIGNMENTS
|
||||||
|
|
Loading…
Reference in a new issue