Skip to content

Commit 70e0864

Browse files
committed
Merge branch 'master' into bibtex-striping-extra-extensions
2 parents db4f3ac + 9cf4eb9 commit 70e0864

File tree

1,644 files changed

+7348
-15274
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,644 files changed

+7348
-15274
lines changed

.devin/wiki.json

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
{
2+
"repo_notes": [
3+
{
4+
"content": ""
5+
}
6+
],
7+
"pages": [
8+
{
9+
"title": "Overview",
10+
"purpose": "Introduce SCons as a software construction tool, explaining its purpose, key features, and high-level architecture",
11+
"page_notes": [
12+
{
13+
"content": ""
14+
}
15+
]
16+
},
17+
{
18+
"title": "Key Concepts",
19+
"purpose": "Explain fundamental SCons concepts like Environments, Builders, Nodes, and Actions",
20+
"parent": "Overview",
21+
"page_notes": [
22+
{
23+
"content": ""
24+
}
25+
]
26+
},
27+
{
28+
"title": "Architecture Overview",
29+
"purpose": "Provide a high-level view of SCons' internal architecture and component relationships",
30+
"parent": "Overview",
31+
"page_notes": [
32+
{
33+
"content": ""
34+
}
35+
]
36+
},
37+
{
38+
"title": "Core Build System",
39+
"purpose": "Explain the central build engine of SCons and how it orchestrates the build process",
40+
"page_notes": [
41+
{
42+
"content": ""
43+
}
44+
]
45+
},
46+
{
47+
"title": "Environment System",
48+
"purpose": "Detail how the Environment class manages construction variables and build configuration",
49+
"parent": "Core Build System",
50+
"page_notes": [
51+
{
52+
"content": ""
53+
}
54+
]
55+
},
56+
{
57+
"title": "Node System",
58+
"purpose": "Explain how the Node system represents files, directories, and dependencies",
59+
"parent": "Core Build System",
60+
"page_notes": [
61+
{
62+
"content": ""
63+
}
64+
]
65+
},
66+
{
67+
"title": "Taskmaster System",
68+
"purpose": "Explain how build jobs are scheduled and run",
69+
"parent": "Core Build System",
70+
"page_notes": [
71+
{
72+
"content": ""
73+
}
74+
]
75+
},
76+
{
77+
"title": "Signature Database",
78+
"purpose": "Describe how SCons tracks and stores file and build signatures and dependency information",
79+
"parent": "Core Build System",
80+
"page_notes": [
81+
{
82+
"content": ""
83+
}
84+
]
85+
},
86+
{
87+
"title": "Builders and Actions",
88+
"purpose": "Document how Builders define transformations and Actions execute commands",
89+
"parent": "Core Build System",
90+
"page_notes": [
91+
{
92+
"content": ""
93+
}
94+
]
95+
},
96+
{
97+
"title": "Dependency Management",
98+
"purpose": "Explain how SCons tracks and manages dependencies between files",
99+
"parent": "Core Build System",
100+
"page_notes": [
101+
{
102+
"content": ""
103+
}
104+
]
105+
},
106+
{
107+
"title": "Caching System",
108+
"purpose": "Detail how SCons caches built files to improve performance",
109+
"parent": "Core Build System",
110+
"page_notes": [
111+
{
112+
"content": ""
113+
}
114+
]
115+
},
116+
{
117+
"title": "Tool System",
118+
"purpose": "Explain SCons' pluggable tool architecture for integrating compilers and other utilities",
119+
"page_notes": [
120+
{
121+
"content": ""
122+
}
123+
]
124+
},
125+
{
126+
"title": "Microsoft Visual C++ Integration",
127+
"purpose": "Document the complex MSVC toolchain detection and configuration system",
128+
"parent": "Tool System",
129+
"page_notes": [
130+
{
131+
"content": ""
132+
}
133+
]
134+
},
135+
{
136+
"title": "Ninja Integration",
137+
"purpose": "Explain how SCons integrates with the Ninja build system for faster builds",
138+
"parent": "Tool System",
139+
"page_notes": [
140+
{
141+
"content": ""
142+
}
143+
]
144+
},
145+
{
146+
"title": "TeX and LaTeX Integration",
147+
"purpose": "Document SCons' support for TeX/LaTeX document processing",
148+
"parent": "Tool System",
149+
"page_notes": [
150+
{
151+
"content": ""
152+
}
153+
]
154+
},
155+
{
156+
"title": "Platform Support",
157+
"purpose": "Explain how SCons adapts to different operating systems and platforms",
158+
"parent": "Tool System",
159+
"page_notes": [
160+
{
161+
"content": ""
162+
}
163+
]
164+
},
165+
{
166+
"title": "SConstruct and SConscript",
167+
"purpose": "Explain the build script files that define SCons projects and configurations",
168+
"page_notes": [
169+
{
170+
"content": ""
171+
}
172+
]
173+
},
174+
{
175+
"title": "Construction Variables",
176+
"purpose": "Detail the configuration variables that control the build process",
177+
"parent": "SConstruct and SConscript",
178+
"page_notes": [
179+
{
180+
"content": ""
181+
}
182+
]
183+
},
184+
{
185+
"title": "Command-line Interface",
186+
"purpose": "Document SCons' command-line options and environment variables",
187+
"parent": "SConstruct and SConscript",
188+
"page_notes": [
189+
{
190+
"content": ""
191+
}
192+
]
193+
},
194+
{
195+
"title": "Testing Framework",
196+
"purpose": "Explain the comprehensive testing system used to validate SCons functionality",
197+
"page_notes": [
198+
{
199+
"content": ""
200+
}
201+
]
202+
},
203+
{
204+
"title": "TestCmd and TestSCons Classes",
205+
"purpose": "Document the testing classes used to write SCons tests",
206+
"parent": "Testing Framework",
207+
"page_notes": [
208+
{
209+
"content": ""
210+
}
211+
]
212+
},
213+
{
214+
"title": "CI/CD Pipeline",
215+
"purpose": "Explain the continuous integration and delivery system for SCons",
216+
"parent": "Testing Framework",
217+
"page_notes": [
218+
{
219+
"content": ""
220+
}
221+
]
222+
},
223+
{
224+
"title": "Documentation System",
225+
"purpose": "Detail how SCons' documentation is generated from XML sources",
226+
"page_notes": [
227+
{
228+
"content": ""
229+
}
230+
]
231+
},
232+
{
233+
"title": "XML Documentation Format",
234+
"purpose": "Explain the XML format used for documenting SCons features",
235+
"parent": "Documentation System",
236+
"page_notes": [
237+
{
238+
"content": ""
239+
}
240+
]
241+
},
242+
{
243+
"title": "Extending SCons",
244+
"purpose": "Provide guidance on extending SCons with custom Builders, Tools, and more",
245+
"page_notes": [
246+
{
247+
"content": ""
248+
}
249+
]
250+
}
251+
]
252+
}

.gemini/settings.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"context": {
3+
"fileName": ["AGENTS.md", "CONTEXT.md", "GEMINI.md"]
4+
}
5+
}

.git-blame-ignore-revs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
fbb026ef1145fe29e0ec3c1b66a3e99cac51e18d
55
# Black/Ruff'd test framework code.
66
c9d9fa58b796532320a2248ddc5be07b7280adf3
7+
# Purge vim/emac variable bloat
8+
ad7207090187a6cd2657cce00096cfc4bc9c3010

AGENTS.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# SCons - Software Construction Tool
2+
3+
## Project Overview
4+
SCons is an open-source software construction tool (build tool) implemented in Python. It is designed to be easier to use and more reliable than the traditional `make` utility. SCons configuration files are Python scripts, allowing users to use the full power of Python to solve build problems.
5+
6+
**Key Features:**
7+
* Configuration files are Python scripts.
8+
* Built-in support for C, C++, D, Java, Fortran, Yacc, Lex, Qt, SWIG, and TeX/LaTeX.
9+
* Reliable dependency analysis (implicit and explicit).
10+
* Support for parallel builds.
11+
* Cross-platform (Linux, POSIX, Windows, macOS).
12+
13+
## Building and Running
14+
15+
### Prerequisites
16+
* Python 3.7 or higher.
17+
* Development dependencies: `python -m pip install -r requirements-dev.txt`
18+
19+
### Running SCons (Development)
20+
You do not need to install SCons to run it from the source tree.
21+
22+
**Linux/macOS:**
23+
```bash
24+
python scripts/scons.py [arguments]
25+
```
26+
27+
**Windows:**
28+
```cmd
29+
py -3 scripts\scons.py [arguments]
30+
```
31+
32+
### Building SCons
33+
SCons uses itself to build its own packages.
34+
35+
**Full Build (Packages & Docs):**
36+
```bash
37+
python scripts/scons.py
38+
```
39+
This produces artifacts (wheels, tarballs, zips) in the `build/` directory.
40+
41+
**Build Documentation Only:**
42+
```bash
43+
python scripts/scons.py doc
44+
```
45+
46+
## Testing
47+
The project uses a custom test runner script, `runtest.py`.
48+
49+
**Run All Tests:**
50+
```bash
51+
python runtest.py -a
52+
```
53+
54+
**Run Specific Tests:**
55+
```bash
56+
python runtest.py SCons/BuilderTests.py # Unit test
57+
python runtest.py test/option/option-j.py # End-to-end test
58+
```
59+
60+
**Run Failed Tests (Retry):**
61+
```bash
62+
python runtest.py --retry
63+
```
64+
65+
**Test Types:**
66+
* **Unit Tests:** Located in `SCons/` alongside the source files (e.g., `SCons/Builder.py` -> `SCons/BuilderTests.py`).
67+
* **End-to-End Tests:** Located in the `test/` directory. These run SCons against sample projects.
68+
69+
## Development Conventions
70+
71+
* **Code Style:** Follows Python PEP 8 (mostly). The project includes a `.editorconfig` file.
72+
* **Version Control:** Git is used. Commits should be signed off (`git commit -s`).
73+
* **Debugging:**
74+
* Use `--debug=pdb` when running SCons to drop into the Python debugger.
75+
* Use `SCons.Debug.Trace()` for print debugging in a way that doesn't interfere with test output capturing.
76+
* **Directory Structure:**
77+
* `SCons/`: Core engine source code and unit tests.
78+
* `test/`: End-to-end system tests.
79+
* `scripts/`: Wrapper scripts (e.g., `scons.py`).
80+
* `bin/`: Development utilities.
81+
* `doc/`: Documentation source (DocBook/XML).
82+
* `template/`: Templates for file generation.
83+
* `testing/framework`: Test framework used by the end-to-end tests.
84+
85+
## AI Contribution Policy
86+
If contributing AI-generated code:
87+
1. You take full responsibility for the code quality and license.
88+
2. Disclose AI use in the commit message (e.g., `Assisted-by: ModelName`).

0 commit comments

Comments
 (0)