mirror of
https://github.com/YosysHQ/yosys
synced 2025-06-19 20:33:39 +00:00
Merge branch 'YosysHQ:main' into main
This commit is contained in:
commit
9ba609a7b0
4 changed files with 46 additions and 8 deletions
33
.github/workflows/source-vendor.yml
vendored
Normal file
33
.github/workflows/source-vendor.yml
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
name: Create source archive with vendored dependencies
|
||||||
|
|
||||||
|
on: [push, workflow_dispatch]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
vendor-sources:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository with submodules
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
|
- name: Create clean tarball
|
||||||
|
run: |
|
||||||
|
git archive --format=tar HEAD -o yosys-src-vendored.tar
|
||||||
|
git submodule foreach '
|
||||||
|
git archive --format=tar --prefix="${sm_path}/" HEAD --output=${toplevel}/vendor-${name}.tar
|
||||||
|
'
|
||||||
|
|
||||||
|
# 2008 bug https://lists.gnu.org/archive/html/bug-tar/2008-08/msg00002.html
|
||||||
|
for file in vendor-*.tar; do
|
||||||
|
tar --concatenate --file=yosys-src-vendored.tar "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
gzip yosys-src-vendored.tar
|
||||||
|
|
||||||
|
- name: Store tarball artifact
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: vendored-sources
|
||||||
|
path: yosys-src-vendored.tar.gz
|
||||||
|
retention-days: 1
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -7,6 +7,7 @@
|
||||||
[submodule "abc"]
|
[submodule "abc"]
|
||||||
path = abc
|
path = abc
|
||||||
url = https://github.com/YosysHQ/abc
|
url = https://github.com/YosysHQ/abc
|
||||||
[submodule "libs/cxxopts"]
|
# Don't use paths as names to avoid git archive problems
|
||||||
|
[submodule "cxxopts"]
|
||||||
path = libs/cxxopts
|
path = libs/cxxopts
|
||||||
url = https://github.com/jarro2783/cxxopts
|
url = https://github.com/jarro2783/cxxopts
|
||||||
|
|
|
@ -33,6 +33,9 @@ Yosys is free software licensed under the ISC license (a GPL
|
||||||
compatible license that is similar in terms to the MIT license
|
compatible license that is similar in terms to the MIT license
|
||||||
or the 2-clause BSD license).
|
or the 2-clause BSD license).
|
||||||
|
|
||||||
|
Third-party software distributed alongside this software
|
||||||
|
is licensed under compatible licenses.
|
||||||
|
Please refer to `abc` and `libs` subdirectories for their license terms.
|
||||||
|
|
||||||
Web Site and Other Resources
|
Web Site and Other Resources
|
||||||
============================
|
============================
|
||||||
|
|
|
@ -222,7 +222,7 @@ int main(int argc, char **argv)
|
||||||
#endif // YOSYS_ENABLE_TCL
|
#endif // YOSYS_ENABLE_TCL
|
||||||
#ifdef WITH_PYTHON
|
#ifdef WITH_PYTHON
|
||||||
("y,py-scriptfile", "execute the Python <script>",
|
("y,py-scriptfile", "execute the Python <script>",
|
||||||
cxxopts::value<std::vector<std::string>>(), "<script>")
|
cxxopts::value<std::string>(), "<script>")
|
||||||
#endif // WITH_PYTHON
|
#endif // WITH_PYTHON
|
||||||
("p,commands", "execute <commands> (to chain commands, separate them with semicolon + whitespace: 'cmd1; cmd2')",
|
("p,commands", "execute <commands> (to chain commands, separate them with semicolon + whitespace: 'cmd1; cmd2')",
|
||||||
cxxopts::value<std::vector<std::string>>(), "<commands>")
|
cxxopts::value<std::vector<std::string>>(), "<commands>")
|
||||||
|
@ -530,11 +530,11 @@ int main(int argc, char **argv)
|
||||||
if (!scriptfile.empty()) {
|
if (!scriptfile.empty()) {
|
||||||
if (scriptfile_tcl) {
|
if (scriptfile_tcl) {
|
||||||
#ifdef YOSYS_ENABLE_TCL
|
#ifdef YOSYS_ENABLE_TCL
|
||||||
int tcl_argc = argc - optind;
|
int tcl_argc = special_args.size();
|
||||||
std::vector<Tcl_Obj*> script_args;
|
std::vector<Tcl_Obj*> script_args;
|
||||||
Tcl_Interp *interp = yosys_get_tcl_interp();
|
Tcl_Interp *interp = yosys_get_tcl_interp();
|
||||||
for (int i = optind; i < argc; ++i)
|
for (auto arg : special_args)
|
||||||
script_args.push_back(Tcl_NewStringObj(argv[i], strlen(argv[i])));
|
script_args.push_back(Tcl_NewStringObj(arg.c_str(), arg.length()));
|
||||||
|
|
||||||
Tcl_ObjSetVar2(interp, Tcl_NewStringObj("argc", 4), NULL, Tcl_NewIntObj(tcl_argc), 0);
|
Tcl_ObjSetVar2(interp, Tcl_NewStringObj("argc", 4), NULL, Tcl_NewIntObj(tcl_argc), 0);
|
||||||
Tcl_ObjSetVar2(interp, Tcl_NewStringObj("argv", 4), NULL, Tcl_NewListObj(tcl_argc, script_args.data()), 0);
|
Tcl_ObjSetVar2(interp, Tcl_NewStringObj("argv", 4), NULL, Tcl_NewListObj(tcl_argc, script_args.data()), 0);
|
||||||
|
@ -548,10 +548,11 @@ int main(int argc, char **argv)
|
||||||
} else if (scriptfile_python) {
|
} else if (scriptfile_python) {
|
||||||
#ifdef WITH_PYTHON
|
#ifdef WITH_PYTHON
|
||||||
PyObject *sys = PyImport_ImportModule("sys");
|
PyObject *sys = PyImport_ImportModule("sys");
|
||||||
PyObject *new_argv = PyList_New(argc - optind + 1);
|
int py_argc = special_args.size() + 1;
|
||||||
|
PyObject *new_argv = PyList_New(py_argc);
|
||||||
PyList_SetItem(new_argv, 0, PyUnicode_FromString(scriptfile.c_str()));
|
PyList_SetItem(new_argv, 0, PyUnicode_FromString(scriptfile.c_str()));
|
||||||
for (int i = optind; i < argc; ++i)
|
for (int i = 1; i < py_argc; ++i)
|
||||||
PyList_SetItem(new_argv, i - optind + 1, PyUnicode_FromString(argv[i]));
|
PyList_SetItem(new_argv, i, PyUnicode_FromString(special_args[i - 1].c_str()));
|
||||||
|
|
||||||
PyObject *old_argv = PyObject_GetAttrString(sys, "argv");
|
PyObject *old_argv = PyObject_GetAttrString(sys, "argv");
|
||||||
PyObject_SetAttrString(sys, "argv", new_argv);
|
PyObject_SetAttrString(sys, "argv", new_argv);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue