Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
4ab2405
#139 bd issue demo
zhizhongpu Feb 28, 2026
0e6a79b
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris Mar 25, 2026
ac6d472
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris Mar 27, 2026
61c6ad4
v2.do bug
zhizhongpu Apr 2, 2026
e586b83
revert v2 bug source
zhizhongpu Apr 2, 2026
6ce5c64
scons don't break bug upon stata error
zhizhongpu Apr 2, 2026
e4f39ae
proposed fix
liaochris Apr 6, 2026
1952c11
#149 bd test raising stata error
zhizhongpu Apr 6, 2026
8bba674
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
jmshapir Apr 27, 2026
288af3c
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris May 11, 2026
788086e
Merge branch 'main' into stata-builder-bug-demo
liaochris May 11, 2026
4c53e87
Merge branch 'main' into stata-builder-bug-demo
liaochris May 13, 2026
ee9de78
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris May 13, 2026
8bb2eda
first implementation pass #139
May 20, 2026
79015a0
clean up scripts #139
liaochris May 21, 2026
62b6da2
comments on improvements #139
liaochris May 21, 2026
99f7116
rerun with bug fix and improvements #149
liaochris May 21, 2026
fdbe558
restore executables #149
liaochris May 21, 2026
5c9c22a
update naming #149
liaochris May 21, 2026
779d6e4
Merge branch 'stata-builder-bug-demo' into 139-sconscriptlog-does-not…
liaochris May 21, 2026
3fe2848
updates from test log removal #139
liaochris May 21, 2026
23ba203
improve naming in stata builder helpers #139
liaochris May 21, 2026
22b89b8
improve builders #139
liaochris May 21, 2026
74d4884
simplify builder log #139
liaochris May 21, 2026
ccc224a
clean up code #139
liaochris May 21, 2026
33e21b7
remove improvements doc #139
liaochris May 21, 2026
7e94017
update stata builder #139
liaochris May 21, 2026
096cd7a
add test for stata runtime #165
liaochris May 21, 2026
825f6da
Merge branch 'stata-builder-bug-demo' into 139-sconscriptlog-does-not…
liaochris May 21, 2026
f57d949
update github actions workflows #139
liaochris May 21, 2026
5bdec68
rename files #139
liaochris May 21, 2026
1ecefea
update log format #139
liaochris May 21, 2026
7b56576
improve logging #139
liaochris May 21, 2026
a85671b
remove traces of sconscript.log #139
liaochris May 21, 2026
09fc63c
Update build_stata.py
liaochris May 21, 2026
5750847
clean up #139
liaochris May 21, 2026
5ede002
confirm tests work #165
liaochris May 21, 2026
59745ac
Merge branch 'stata-builder-bug-demo' into 139-sconscriptlog-does-not…
liaochris May 21, 2026
a6eaa33
[run-actions-all] #165
liaochris May 21, 2026
802f819
[run-actions-all] #165
liaochris May 21, 2026
06e5294
refer log not found error to executable #165
liaochris May 21, 2026
2407ae0
recompile to eliminate log errors #165 [run-actions-all]
liaochris May 21, 2026
0780f42
git tracked run logs #139
liaochris May 21, 2026
98cc949
Merge branch 'stata-builder-bug-demo' into 139-sconscriptlog-does-not…
liaochris May 21, 2026
9a17116
fix matlab log + add start/end time #139
liaochris May 22, 2026
a68018e
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
simonessigaberg Jun 3, 2026
877f75c
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris Jun 8, 2026
34bc40d
rerun #139
liaochris Jun 8, 2026
a8fecab
Merge branch '139-sconscriptlog-does-not-capture-logs-from-multiple-s…
liaochris Jun 8, 2026
9198a1e
recompile scons #139
liaochris Jun 8, 2026
9a2940f
logs #139
liaochris Jun 8, 2026
06fce0e
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris Jun 8, 2026
b743675
#139 fix merge issues
liaochris Jun 8, 2026
5ac79a6
simplify failure detection #167
liaochris Jun 8, 2026
370073a
relocate log + update dependencies + add test for mid-crash + remove …
liaochris Jun 8, 2026
61f7c30
rerun #167
liaochris Jun 8, 2026
7c43186
test fix to save data import dir #167
liaochris Jun 8, 2026
c0ee146
fix import #167
liaochris Jun 8, 2026
ba71fec
[run-actions-all] #167 test
liaochris Jun 8, 2026
57b6c55
[run-actions-all] #167 anotoher save data test
liaochris Jun 8, 2026
16c4143
fix paths #167 [run-actions-all]
liaochris Jun 8, 2026
648f6f5
#139 error
zhizhongpu Jun 8, 2026
9b2c6f8
Revert "#139 error"
zhizhongpu Jun 8, 2026
3a2ad44
update log failures check #167 [run-actions-all]
liaochris Jun 8, 2026
7c9d7ee
Merge branch '139-sconscriptlog-does-not-capture-logs-from-multiple-s…
liaochris Jun 8, 2026
099bab2
Merge branch 'main' into 139-sconscriptlog-does-not-capture-logs-from…
liaochris Jun 9, 2026
f71e331
#139 cl extra space
zhizhongpu Jun 10, 2026
b52f9d9
#167 robustness for builder log #167
liaochris Jun 10, 2026
8ceda1c
Merge branch '139-sconscriptlog-does-not-capture-logs-from-multiple-s…
liaochris Jun 10, 2026
d343653
Update source/lib/JMSLab/builders/jmslab_builder.py
liaochris Jun 10, 2026
8a802e3
#167 lyx tex compilation docstrings #167
liaochris Jun 10, 2026
5a0d1d4
Merge branch '139-sconscriptlog-does-not-capture-logs-from-multiple-s…
liaochris Jun 10, 2026
e2c2cc2
build docstrings #167
liaochris Jun 10, 2026
3e71121
add logdir docstring for scripts #167
liaochris Jun 10, 2026
f61d18a
latest compile #167
liaochris Jun 10, 2026
ffe85cb
Log ignore for #167
jmshapir Jun 10, 2026
9d94a3b
#139 local run
zhizhongpu Jun 11, 2026
1805183
Revert "#139 local run"
zhizhongpu Jun 11, 2026
36ce29b
make filenames unique, update bibtex logging #167
liaochris Jun 11, 2026
ddc3265
killing terminal mid scons run returns failed script, not failed log …
liaochris Jun 11, 2026
1839fd9
make platform agnostic #167
liaochris Jun 11, 2026
a245bc4
update lyx to latest version #167
liaochris Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/checks/check_log_failures.py
Comment thread
jmshapir marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/usr/bin/env python3
import csv
import sys
from pathlib import Path

RUN_CSV = Path("output") / "run.csv"

def Main():
with open(RUN_CSV, newline="") as f:
rows = list(csv.DictReader(f))

script_failed = [row for row in rows if row["success"] != "1"]

sconstruct = Path("sconstruct.log").read_text()
scons_failed = (
Comment thread
liaochris marked this conversation as resolved.
"done building targets." not in sconstruct
or "errors occurred during build" in sconstruct
or "building terminated because of errors" in sconstruct
)

if not script_failed and not scons_failed:
print("All builds succeeded.")
return 0

print("Failed scripts:")
for row in script_failed:
print(" -", row["filename"])
if scons_failed:
print("SCons build failed. Check sconstruct.log for details.")
return 1

if __name__ == "__main__":
sys.exit(Main())
27 changes: 0 additions & 27 deletions .github/checks/check_sconscript_log.py

This file was deleted.

2 changes: 1 addition & 1 deletion .github/checks/checks.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
{"name": "SCons DAG", "command": "/run-actions-dag"},
{"name": "Newlines", "command": "/run-actions-newlines"},
{"name": "EPS data", "command": "/run-actions-eps"},
{"name": "Build log", "command": "/run-actions-log"}
{"name": "Log failures", "command": "/run-actions-log"}
]
8 changes: 4 additions & 4 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,13 @@ jobs:
display: EPS data

- id: check_scons_log
name: Check SCons build log for errors
if: contains(fromJSON(steps.parse_commands.outputs.run), 'Build log')
name: Check log files for failures
if: contains(fromJSON(steps.parse_commands.outputs.run), 'Log failures')
continue-on-error: true
uses: ./.github/actions/timed-check
with:
script: .github/checks/check_sconscript_log.py
display: Build log
script: .github/checks/check_log_failures.py
display: Log failures

- name: Post results
if: always()
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/drive
/datastore
/temp
/log
*.pyc
*.lyx~
*.lyx#
Expand Down
Binary file modified .sconsign.dblite
Comment thread
toogiii marked this conversation as resolved.
Binary file not shown.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ In addition, each project may use other specialized tools. For the working examp

- `temp/` is not under version control; create the folder after cloning the repository. `temp/` may used by scripts to store temporary or intermediate files (though some projects may not need it).

- `log/` is not under version control; SCons builders write full per-script build logs there, mirroring `source/`. The root `sconstruct.log` remains the top-level build log.

- _Issue folders_: When working on issue branches, you may create an issue folder at the top of the directory under version control (e.g. `./issue1_short_task_name`).

- Code and (small) deliverables related to the issue are organized inside the issue folder. See [this example](https://github.com/JMSLab/Template/blob/05337cfa4a50ecfeda56afbdd295378d8e071a39/issue10_readme).
Expand Down Expand Up @@ -87,6 +89,8 @@ env.Stata(target, source)

- `target` is a list with all of the files produced by the script.

- Build logs are not listed as SCons targets. Builder output is written automatically to `log/.../<script>.log`.

- `source` is a list with the script's name and all of the files used as input; the script _must_ be the first element of the list.

- `env.Stata` is the Stata builder provided in `source/lib/JMSLab/builders`; this is imported and saved as part of the `env` object in the `SConstruct` file at the root of the project.
Expand Down
2 changes: 2 additions & 0 deletions SConstruct
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ env.Decider('MD5-timestamp') # Only computes hash if time-stamp changed
Export('env', 'mode')

jms.start_log('develop', '')
jms.clean_orphaned_logs()
atexit.register(jms.write_run_csv_from_log_dir)

SConscript('source/derived/SConscript')
SConscript('source/analysis/SConscript')
Expand Down
Loading
Loading