summaryrefslogtreecommitdiff
path: root/src/libs/lvgl/scripts/release
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2021-02-23 21:25:43 +0100
committerJean-François Milants <jf@codingfield.com>2021-02-23 21:25:43 +0100
commit67c545b1fbd368b99b111a1822fe8da815468e76 (patch)
tree0bcb047f3e9d5c41c6d79b4dac6cbcdd3929136b /src/libs/lvgl/scripts/release
parent324c7dab326ea23a6c8502bbb8c6e9b9d87a839f (diff)
parentb11b20b0ac5c0adfbd1397cf42c322c873a736a8 (diff)
Merge branch 'joaquimorg-LVGL7' into develop
Diffstat (limited to 'src/libs/lvgl/scripts/release')
-rwxr-xr-xsrc/libs/lvgl/scripts/release/com.py110
-rwxr-xr-xsrc/libs/lvgl/scripts/release/dev.py72
-rwxr-xr-xsrc/libs/lvgl/scripts/release/main.py65
-rwxr-xr-xsrc/libs/lvgl/scripts/release/proj.py62
-rwxr-xr-xsrc/libs/lvgl/scripts/release/release.py173
5 files changed, 482 insertions, 0 deletions
diff --git a/src/libs/lvgl/scripts/release/com.py b/src/libs/lvgl/scripts/release/com.py
new file mode 100755
index 00000000..5b5300e9
--- /dev/null
+++ b/src/libs/lvgl/scripts/release/com.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+
+import sys
+import os.path
+from os import path
+import os, fnmatch
+import re
+import subprocess
+import com
+
+def cmd(c, ask_on_err = True):
+ print("\n" + c)
+ r = os.system(c)
+ if r:
+ print("### Error: " + str(r))
+ if ask_on_err:
+ input("Press Enter to continue execution...")
+
+def define_set(fn, name, value):
+ print("In " + fn + " set " + name + " to " + value)
+
+ new_content = ""
+ s = r'^ *# *define +' + str(name).rstrip() + ' +'
+
+ f = open(fn, "r")
+ for i in f.read().splitlines():
+ r = re.search(s, i)
+ if r:
+ d = i.split("define")
+ i = d[0] + "define " + name + " " + value
+ new_content += i + '\n'
+
+ f.close()
+
+ f = open(fn, "w")
+ f.write(new_content)
+ f.close()
+
+def ver_format(ver):
+ s = "v" + str(ver[0]) + "." + str(ver[1]) + "." + str(ver[2])
+ if(ver[3] != ""): s = s + "-" + ver[3]
+ return s
+
+def get_lvgl_version(br):
+ print("Get LVGL's version")
+
+ ver = [0, 0, 0, ""]
+
+ os.chdir("./lvgl")
+
+ com.cmd("git checkout " + br)
+
+ f = open("./lvgl.h", "r")
+
+ lastNum = re.compile(r'(?:[^\d]*(\d+)[^\d]*)+')
+ for i in f.read().splitlines():
+ r = re.search(r'^#define LVGL_VERSION_MAJOR ', i)
+ if r:
+ m = lastNum.search(i)
+ if m: ver[0] = m.group(1)
+
+ r = re.search(r'^#define LVGL_VERSION_MINOR ', i)
+ if r:
+ m = lastNum.search(i)
+ if m: ver[1] = m.group(1)
+
+ r = re.search(r'^#define LVGL_VERSION_PATCH ', i)
+ if r:
+ m = lastNum.search(i)
+ if m: ver[2] = m.group(1)
+
+ f.close()
+
+ com.cmd("git checkout master")
+
+ os.chdir("../")
+ return ver
+
+def push(c):
+ cmd("git push " + c)
+
+def update_version(ver):
+ ver_str = ver_format(ver)
+ ver_num = ver[0] + "." + ver[1] + "." + ver[2]
+
+ templ = fnmatch.filter(os.listdir('.'), '*_templ*.h')
+
+ if len(templ) > 0 and templ[0]:
+ print("Updating version in " + templ[0])
+ cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/"+ "v" + ver_num + "/' " + templ[0])
+
+ if os.path.exists("library.json"):
+ print("Updating version in library.json")
+ cmd("sed -i -r 's/[0-9]+\.[0-9]+\.[0-9]+/"+ ver_num +"/' library.json")
+
+ if path.exists("library.properties"):
+ print("Updating version in library.properties")
+ cmd("sed -i -r 's/version=[0-9]+\.[0-9]+\.[0-9]+/"+ "version=" + ver_num + "/' library.properties")
+
+ if path.exists("conf.py"):
+ cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/" + ver_str + "/' conf.py")
+
+ if path.exists("Kconfig"):
+ cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/" + ver_str + "/' Kconfig")
+
+ if path.exists("lvgl.h"):
+ define_set("./lvgl.h", "LVGL_VERSION_MAJOR", str(ver[0]))
+ define_set("./lvgl.h", "LVGL_VERSION_MINOR", str(ver[1]))
+ define_set("./lvgl.h", "LVGL_VERSION_PATCH", str(ver[2]))
+ define_set("./lvgl.h", "LVGL_VERSION_INFO", "\"" + ver[3] + "\"")
diff --git a/src/libs/lvgl/scripts/release/dev.py b/src/libs/lvgl/scripts/release/dev.py
new file mode 100755
index 00000000..7b53fe53
--- /dev/null
+++ b/src/libs/lvgl/scripts/release/dev.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+
+import re
+import os, fnmatch
+import os.path
+from os import path
+from datetime import date
+import com
+
+def lvgl_update_ver(ver, br):
+ os.chdir("./lvgl")
+
+ com.cmd("git checkout " + br)
+ com.update_version(ver)
+ com.cmd("git commit -am 'Update " + br + " version'")
+ com.push("origin " + br)
+ com.cmd("git checkout master")
+
+ os.chdir("../")
+
+def docs_update_ver(ver, br):
+ os.chdir("./docs")
+ com.cmd("git checkout " + br + " --")
+ com.update_version(ver)
+ com.cmd("git commit -am 'Update " + br + " version'")
+ com.push("origin " + br)
+ com.cmd("git checkout master --")
+
+ os.chdir("../")
+
+def merge_dev_to_master():
+ os.chdir("./lvgl")
+ com.cmd("git checkout master")
+ com.cmd("git merge dev")
+ com.push("origin master")
+ os.chdir("../")
+
+ os.chdir("./docs")
+ com.cmd("git checkout dev -- ") #'dev' sometimes is not recognized so switch to it first
+ com.cmd("git checkout latest --")
+ com.cmd("git merge dev -X theirs --no-edit;")
+ com.push("origin latest")
+ os.chdir("../")
+
+def make(mode):
+ if(mode == "bugfix"):
+ ver = com.get_lvgl_version("master")
+ ver[3] = "dev"
+ ver[2] = str(int(ver[2]) + 1)
+ lvgl_update_ver(ver, "master")
+ docs_update_ver(ver, "latest")
+ else:
+ ver = com.get_lvgl_version("dev")
+ ver[3] = "dev"
+ merge_dev_to_master()
+ if(mode == "major"):
+ ver[0] = str(int(ver[0]) + 1)
+ ver[1] = '0'
+ ver[2] = '0'
+ if(mode == "minor"):
+ ver[1] = str(int(ver[1]) + 1)
+ ver[2] = '0'
+
+ lvgl_update_ver(ver, "dev")
+ docs_update_ver(ver, "dev")
+
+if __name__ == '__main__':
+ if(len(sys.argv) != 2):
+ print("Missing argument. Usage ./dev.py major | minor | bugfix")
+ print("E.g. ./dev.py minor")
+ else:
+ make(sys.argv[1])
diff --git a/src/libs/lvgl/scripts/release/main.py b/src/libs/lvgl/scripts/release/main.py
new file mode 100755
index 00000000..ba9ab204
--- /dev/null
+++ b/src/libs/lvgl/scripts/release/main.py
@@ -0,0 +1,65 @@
+#!/usr/bin/env python
+
+import os.path
+from os import path
+from datetime import date
+import sys
+import com
+import release
+import dev
+import proj
+
+upstream_org_url = "https://github.com/lvgl/"
+workdir = "./release_tmp"
+proj_list = [ "lv_sim_eclipse_sdl", "lv_sim_emscripten"]
+
+def upstream(repo):
+ return upstream_org_url + repo + ".git"
+
+def clone(repo):
+ com.cmd("git clone --recurse-submodules " + upstream(repo))
+ os.chdir("./" + repo)
+ com.cmd("git checkout master")
+ com.cmd("git remote update origin --prune")
+ com.cmd("git pull origin --tags")
+ os.chdir("..")
+
+def clone_repos():
+ com.cmd("rm -fr " + workdir)
+ com.cmd("mkdir " + workdir)
+ os.chdir(workdir)
+ clone("lvgl")
+ clone("lv_examples")
+ clone("lv_drivers")
+ clone("docs")
+ clone("blog")
+
+ for p in proj_list:
+ clone(p)
+
+def cleanup():
+ os.chdir("../")
+ com.cmd("rm -fr " + workdir)
+
+if __name__ == '__main__':
+ prepare_type = ['major', 'minor', 'bugfix']
+ dev_prepare = 'minor'
+
+# if(len(sys.argv) != 2):
+# print("Missing argument. Usage ./release.py bugfix | minor | major")
+# print("Use minor by default")
+# else:
+# dev_prepare = sys.argv[1]
+
+ if not (dev_prepare in prepare_type):
+ print("Invalid argument. Usage ./release.py bugfix | minor | major")
+ exit(1)
+
+ #os.chdir(workdir)
+ clone_repos()
+ release.make()
+ for p in proj_list:
+ proj.make(p, True)
+
+ dev.make(dev_prepare)
+ #cleanup()
diff --git a/src/libs/lvgl/scripts/release/proj.py b/src/libs/lvgl/scripts/release/proj.py
new file mode 100755
index 00000000..c28fd320
--- /dev/null
+++ b/src/libs/lvgl/scripts/release/proj.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+
+import sys
+import os.path
+from os import path
+import re
+import subprocess
+import com
+
+def make(repo_path, auto_push = False):
+ os.chdir("./" + repo_path)
+ com.cmd('git checkout master')
+ print("Update lvgl");
+ os.chdir("./lvgl")
+ com.cmd("git checkout master")
+ com.cmd("git pull origin --tags")
+
+ out = subprocess.Popen(['git', 'tag', '--sort=-creatordate'],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ stdout,stderr = out.communicate()
+
+ ver_str = stdout.decode("utf-8").split('\n')[0]
+ release_br = ver_str[1:] #trim "v"
+ release_br = release_br.split('.')[0] # get the first number
+ release_br = "release/v" + release_br
+
+ com.cmd("git checkout " + release_br + "; git pull origin " + release_br)
+
+ os.chdir("..")
+
+ com.cmd("cp -f lvgl/lv_conf_template.h lv_conf.h")
+ com.cmd("sed -i -r 's/#if 0/#if 1/' lv_conf.h") # Enable lv_conf.h
+ with open("confdef.txt") as f:
+ for line in f:
+ (key, val) = line.rstrip().split('\t')
+ com.define_set("lv_conf.h", str(key), str(val))
+
+ if os.path.exists("lv_examples"):
+ print("Update lv_examples");
+ com.cmd("cd lv_examples; git co " + release_br + "; git pull origin " + release_br)
+
+ if os.path.exists("lv_drivers"):
+ print("update lv_drivers");
+ com.cmd("cd lv_drivers " + release_br + "; git pull origin " + release_br)
+
+ msg = 'Update to ' + ver_str
+ com.cmd("git add .")
+ com.cmd('git commit -am "' + msg + '"')
+ com.cmd("git tag -a " + ver_str + " -m '" + msg + "' " )
+ if auto_push:
+ com.push("origin --tags")
+ com.push("origin master")
+
+ os.chdir("../")
+
+if __name__ == '__main__':
+ if(len(sys.argv) != 2):
+ print("Missing argument. Usage ./projs_update.py repo_path")
+ print("E.g. ./projs_update.py ./lv_sim_eclipse_sdl")
+ else:
+ make(sys.argv[1], sys.argv[2])
diff --git a/src/libs/lvgl/scripts/release/release.py b/src/libs/lvgl/scripts/release/release.py
new file mode 100755
index 00000000..1e6037df
--- /dev/null
+++ b/src/libs/lvgl/scripts/release/release.py
@@ -0,0 +1,173 @@
+#!/usr/bin/env python
+
+import os.path
+from os import path
+from datetime import date
+import sys
+import com
+import re
+
+def update_release_branch(release_br, master_br = "master"):
+ com.cmd("git checkout " + release_br)
+ com.cmd("git pull origin " + release_br)
+ com.cmd("git merge "+ master_br +" -X ours");
+ com.push("origin " + release_br);
+ com.cmd("git checkout master");
+
+def lvgl_release(ver):
+ print("Release lvgl")
+
+ ver_str = com.ver_format(ver)
+ release_br = "release/v" + str(ver[0])
+
+ os.chdir("./lvgl")
+ com.define_set("./lvgl.h", "LVGL_VERSION_INFO", '\"\"')
+
+ # Run some scripts
+ os.chdir("./scripts")
+ com.cmd("./code-format.sh")
+ com.cmd("./lv_conf_checker.py")
+ com.cmd("doxygen")
+ os.chdir("../")
+
+ com.update_version(ver)
+
+ #update CHANGLELOG
+ new_content = ""
+ f = open("./CHANGELOG.md", "r")
+
+ release_note = ""
+ note_state = 0
+ for i in f.read().splitlines():
+ if note_state == 0:
+ r = re.search(r'^## ' + ver_str, i)
+ if r:
+ i = i.replace("planned on ", "")
+ note_state+=1
+
+ elif note_state == 1:
+ r = re.search(r'^## ', i)
+ if r:
+ note_state+=1
+ else:
+ release_note += i + '\n'
+
+ new_content += i + '\n'
+
+ f.close()
+
+ f = open("./CHANGELOG.md", "w")
+ f.write(new_content)
+ f.close()
+
+ com.cmd('git commit -am "Release ' + ver_str + '"')
+
+ com.cmd('git checkout dev')
+ com.cmd("git merge master -X ours")
+ com.cmd("git add .")
+ com.cmd("git commit -am 'Merge master'", False)
+ com.push('origin dev')
+ com.cmd('git checkout master')
+ com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
+ com.push('origin master')
+ com.push('origin --tags')
+
+ update_release_branch(release_br)
+
+ os.chdir("../")
+
+ return release_note
+
+def lv_examples_release(ver):
+ print("Release lv_examples")
+
+ os.chdir("./lv_examples")
+ release_br = "release/v" + str(ver[0])
+ ver_str = com.ver_format(ver)
+
+ com.update_version(ver)
+
+ com.cmd("sed -i -r 's/LV_VERSION_CHECK\([0-9]+, *[0-9]+, *[0-9]+\)/"+ "LV_VERSION_CHECK\(" + str(ver[0]) + ", " + str(ver[1]) + ", " + str(ver[2]) + ")/' lv_examples.h")
+
+ com.cmd('git commit -am "Release ' + ver_str + '"')
+ com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
+ com.push('origin master')
+ com.push('origin --tags')
+
+ update_release_branch(release_br)
+
+ os.chdir("../")
+
+def lv_drivers_release(ver):
+ print("Release lv_drivers")
+
+ os.chdir("./lv_drivers")
+ release_br = "release/v" + str(ver[0])
+ ver_str = com.ver_format(ver)
+
+ com.update_version(ver)
+
+ com.cmd('git commit -am "Release ' + ver_str + '"')
+ com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
+ com.push('origin master')
+ com.push('origin --tags')
+
+ update_release_branch(release_br)
+
+ os.chdir("../")
+
+def docs_release(ver):
+ print("Release docs")
+
+ os.chdir("./docs")
+ release_br = "release/v" + str(ver[0])
+ ver_str = com.ver_format(ver)
+
+ com.cmd("git co latest --")
+ com.cmd("rm -rf xml");
+ com.cmd("cp -r ../lvgl/docs/api_doc/xml .");
+ com.cmd("git add xml");
+
+ com.update_version(ver)
+
+ com.cmd('git commit -am "Release ' + ver_str + '"')
+ com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
+ com.push('origin master')
+ com.push('origin --tags')
+
+ update_release_branch(release_br, "latest")
+
+ os.chdir("../")
+
+def blog_release(ver, release_note):
+
+ os.chdir("./blog/_posts")
+
+ ver_str = com.ver_format(ver)
+
+ post = "---\nlayout: post\ntitle: " + ver_str + " is released\nauthor: \"kisvegabor\"\ncover: /assets/release_cover.png\n---\n\n"
+ post += release_note
+
+ today = date.today()
+ d = today.strftime("%Y-%m-%d")
+
+ f = open(d + "-release_" + ver_str + ".md", "w")
+ f.write(post)
+ f.close()
+
+ com.cmd("git add .")
+ com.cmd("git commit -am 'Add " + ver_str + " release post'")
+ com.push('origin master')
+
+ os.chdir("../../")
+
+def make():
+ ver = com.get_lvgl_version("master")
+ release_note = lvgl_release(ver)
+ lv_examples_release(ver)
+ lv_drivers_release(ver)
+ docs_release(ver)
+ blog_release(ver, release_note)
+
+if __name__ == '__main__':
+ make()