osmith has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42580?usp=email )
Change subject: contrib/jenkins: add SKIP_FIRMWARE_CLEAN argument
......................................................................
contrib/jenkins: add SKIP_FIRMWARE_CLEAN argument
If this is set, then don't clean the firmware at the end. This is needed
to store the built firmware as artifact in jenkins, for passing it along
to another job.
Related: SYS#7963
Change-Id: I9e2342b8111645ef5d3b7bf4ac364ca592aa600b
---
M contrib/jenkins.sh
1 file changed, 5 insertions(+), 3 deletions(-)
Approvals:
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
index 9462cc3..bd90e45 100755
--- a/contrib/jenkins.sh
+++ b/contrib/jenkins.sh
@@ -99,6 +99,8 @@
fi
fi
-echo
-echo "=============== FIRMWARE CLEAN =============="
-make clean
+if [ -z "$SKIP_FIRMWARE_CLEAN" ]; then
+ echo
+ echo "=============== FIRMWARE CLEAN =============="
+ make clean
+fi
--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/42580?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I9e2342b8111645ef5d3b7bf4ac364ca592aa600b
Gerrit-Change-Number: 42580
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/42554?usp=email )
Change subject: filesystem: JsonEditor: offer interactive retry on error
......................................................................
filesystem: JsonEditor: offer interactive retry on error
When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'. If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.
Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
---
M pySim/filesystem.py
1 file changed, 13 insertions(+), 5 deletions(-)
Approvals:
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
dexter: Looks good to me, approved
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index e273361..95fae36 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -609,16 +609,24 @@
def __enter__(self) -> object:
"""Write JSON + examples to a temp file, run the editor, return parsed result.
- The temp file is kept on JSONDecodeError so the user can correct and
- re-open it manually. It is removed by __exit__() on success."""
+ On JSONDecodeError the user is offered the option to re-open the file
+ and fix the mistake interactively. The temp file is removed by __exit__()
+ on success, or when the user declines to retry."""
self._file = tempfile.NamedTemporaryFile(prefix='pysim_', suffix='.json',
mode='w', delete=False)
json.dump(self._orig_json, self._file, indent=4, cls=JsonEncoder)
self._append_examples_as_comments(self._file)
self._file.close()
- self._cmd.run_editor(self._file.name)
- with open(self._file.name, 'r') as text_file:
- return json.loads(self._strip_comments(text_file.read()))
+ while True:
+ self._cmd.run_editor(self._file.name)
+ try:
+ with open(self._file.name, 'r') as f:
+ return json.loads(self._strip_comments(f.read()))
+ except json.JSONDecodeError as e:
+ self._cmd.perror(f'Invalid JSON: {e}')
+ answer = self._cmd.read_input('Re-open file for editing? [y]es/[n]o: ')
+ if answer not in ('y', 'yes'):
+ return self._orig_json
def __exit__(self, *args):
os.unlink(self._file.name)
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42554?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Gerrit-Change-Number: 42554
Gerrit-PatchSet: 6
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/42553?usp=email )
Change subject: filesystem: JsonEditor: use NamedTemporaryFile
......................................................................
filesystem: JsonEditor: use NamedTemporaryFile
A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it. Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.
Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
---
M pySim/filesystem.py
1 file changed, 14 insertions(+), 10 deletions(-)
Approvals:
dexter: Looks good to me, approved
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index 9cd2f23..e273361 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -30,6 +30,7 @@
import json
import abc
import inspect
+import os
import cmd2
from cmd2 import CommandSet, with_default_category
@@ -567,7 +568,7 @@
self._cmd = cmd
self._orig_json = orig_json
self._ef = ef
- self._tmpdir = None
+ self._file = None
@staticmethod
def _strip_comments(text: str) -> str:
@@ -606,18 +607,21 @@
text_file.write(f'// {line}\n')
def __enter__(self) -> object:
- """Write JSON + examples to a temp file, run the editor, return parsed result."""
- self._tmpdir = tempfile.TemporaryDirectory(prefix='pysim_')
- filename = '%s/file' % self._tmpdir.name
- with open(filename, 'w') as text_file:
- json.dump(self._orig_json, text_file, indent=4, cls=JsonEncoder)
- self._append_examples_as_comments(text_file)
- self._cmd.run_editor(filename)
- with open(filename, 'r') as text_file:
+ """Write JSON + examples to a temp file, run the editor, return parsed result.
+
+ The temp file is kept on JSONDecodeError so the user can correct and
+ re-open it manually. It is removed by __exit__() on success."""
+ self._file = tempfile.NamedTemporaryFile(prefix='pysim_', suffix='.json',
+ mode='w', delete=False)
+ json.dump(self._orig_json, self._file, indent=4, cls=JsonEncoder)
+ self._append_examples_as_comments(self._file)
+ self._file.close()
+ self._cmd.run_editor(self._file.name)
+ with open(self._file.name, 'r') as text_file:
return json.loads(self._strip_comments(text_file.read()))
def __exit__(self, *args):
- self._tmpdir.cleanup()
+ os.unlink(self._file.name)
class CardEF(CardFile):
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42553?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
Gerrit-Change-Number: 42553
Gerrit-PatchSet: 6
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>