diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 1b1556707d..fb64c4d8fc 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -42,4 +42,19 @@ RUN apt-get clean autoclean RUN apt-get autoremove -y RUN rm -rf /var/lib/{apt,dpkg,cache,log}/* +# Create Python virtual environment and install packages +COPY requirements.txt /tmp/requirements.txt +RUN /usr/bin/python3 -m venv /opt/venv && \ + /opt/venv/bin/pip install -r /tmp/requirements.txt && \ + rm /tmp/requirements.txt +ENV PATH="/opt/venv/bin:$PATH" + +# Install npm packages globally in the container +COPY package.json package-lock.json /opt/node/ +RUN cd /opt/node && \ + /usr/bin/npm ci && \ + rm /opt/node/package.json /opt/node/package-lock.json +ENV NODE_PATH="/opt/node/node_modules" +ENV PATH="/opt/node/node_modules/.bin:$PATH" + WORKDIR /workspace diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5a1efad6eb..003d7c83b5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,6 @@ { "name": "RISC-V UnifiedDB Dev", - "build": { "dockerfile": "Dockerfile" }, + "build": { "dockerfile": "Dockerfile", "context": ".." }, "updateContentCommand": "${containerWorkspaceFolder}/.devcontainer/updateContentCommand.sh", "onCreateCommand": "${containerWorkspaceFolder}/.devcontainer/onCreateCommand.sh", "remoteEnv": { diff --git a/.devcontainer/onCreateCommand.sh b/.devcontainer/onCreateCommand.sh index d4ecba051b..0a7447970f 100755 --- a/.devcontainer/onCreateCommand.sh +++ b/.devcontainer/onCreateCommand.sh @@ -1,4 +1,3 @@ #!/bin/bash -npm i bundle install diff --git a/Rakefile b/Rakefile index 2f31bed1c9..52c6310961 100755 --- a/Rakefile +++ b/Rakefile @@ -119,7 +119,7 @@ namespace :test do # "Run the cross-validation against LLVM" task :llvm do begin - sh "#{$root}/.home/.venv/bin/python3 -m pytest ext/auto-inst/test_parsing.py -v" + sh "/opt/venv/bin/python3 -m pytest ext/auto-inst/test_parsing.py -v" rescue => e raise unless e.message.include?("status (5)") # don't fail on skipped tests end diff --git a/backends/cfg_html_doc/html_gen.rake b/backends/cfg_html_doc/html_gen.rake index d2ef39ca6f..73aba5c131 100644 --- a/backends/cfg_html_doc/html_gen.rake +++ b/backends/cfg_html_doc/html_gen.rake @@ -119,9 +119,9 @@ rule %r{#{$root}/gen/cfg_html_doc/.*/antora/playbook.yaml} => proc { |tname| snapshot: true supplemental_files: - path: css/vendor/tabs.css - contents: #{$root}/node_modules/@asciidoctor/tabs/dist/css/tabs.css + contents: /opt/node/node_modules/@asciidoctor/tabs/dist/css/tabs.css - path: js/vendor/tabs.js - contents: #{$root}/node_modules/@asciidoctor/tabs/dist/js/tabs.js + contents: /opt/node/node_modules/@asciidoctor/tabs/dist/js/tabs.js - path: partials/footer-scripts.hbs contents: | @@ -234,10 +234,9 @@ rule %r{#{$root}/\.stamps/html-gen-.*\.stamp} => proc { |tname| playbook_path = $root / "gen" / "cfg_html_doc" / config_name / "antora" / "playbook.yaml" Rake::Task[playbook_path].invoke - $logger.info "Running Antora under npm to create #{config_name}" - + $logger.info "Running Antora to create #{config_name}" sh [ - "npm exec -- antora", + "/opt/node/node_modules/.bin/antora", "--stacktrace", "generate", "--cache-dir=#{$root}/.home/.antora", @@ -247,7 +246,7 @@ rule %r{#{$root}/\.stamps/html-gen-.*\.stamp} => proc { |tname| playbook_path ].join(" ") - $logger.info "Done running Antora under npm to create #{config_name}" + $logger.info "Done running Antora to create #{config_name}" FileUtils.touch t.name end diff --git a/backends/ext_pdf_doc/tasks.rake b/backends/ext_pdf_doc/tasks.rake index 24c8edab95..a631f0ea51 100644 --- a/backends/ext_pdf_doc/tasks.rake +++ b/backends/ext_pdf_doc/tasks.rake @@ -34,7 +34,7 @@ rule %r{#{$resolver.gen_path}/ext_pdf_doc/.*/pdf/.*_extension\.pdf} => proc { |t "-a pdf-theme=#{ENV['THEME']}", "-a pdf-fontsdir=#{$root}/ext/docs-resources/fonts", "-a imagesdir=#{$root}/ext/docs-resources/images", - "-a wavedrom=#{$root}/node_modules/.bin/wavedrom-cli", + "-a wavedrom=/opt/node/node_modules/.bin/wavedrom-cli", "-r asciidoctor-diagram", "-r idl_highlighter", "-o #{t.name}", @@ -63,7 +63,7 @@ rule %r{#{$resolver.gen_path}/ext_pdf_doc/.*/html/.*_extension\.html} => proc { "-v", "-a toc", "-r asciidoctor-diagram", - "-a wavedrom=#{$root}/node_modules/.bin/wavedrom-cli", + "-a wavedrom=/opt/node/node_modules/.bin/wavedrom-cli", "-o #{t.name}", adoc_file ].join(" ") diff --git a/backends/generators/tasks.rake b/backends/generators/tasks.rake index 2049f8e4e9..fada200781 100644 --- a/backends/generators/tasks.rake +++ b/backends/generators/tasks.rake @@ -28,9 +28,9 @@ namespace :gen do inst_dir = cfg_arch.path / "inst" csr_dir = cfg_arch.path / "csr" - # Run the Go generator script using the same Python environment + # Run the Go generator script # Note: The script uses --output not --output-dir - sh "#{$root}/.home/.venv/bin/python3 #{$root}/backends/generators/Go/go_generator.py --inst-dir=#{inst_dir} --csr-dir=#{csr_dir} --output=#{output_dir}inst.go" + sh "/opt/venv/bin/python3 #{$root}/backends/generators/Go/go_generator.py --inst-dir=#{inst_dir} --csr-dir=#{csr_dir} --output=#{output_dir}inst.go" end desc <<~DESC @@ -79,9 +79,9 @@ namespace :gen do resolved_codes_file.flush begin - # Run the C header generator script using the same Python environment + # Run the C header generator script # The script generates encoding.h for inclusion in C programs - sh "#{$root}/.home/.venv/bin/python3 #{$root}/backends/generators/c_header/generate_encoding.py --inst-dir=#{inst_dir} --csr-dir=#{csr_dir} --ext-dir=#{ext_dir} --resolved-codes=#{resolved_codes_file.path} --output=#{output_dir}encoding.out.h --include-all" + sh "/opt/venv/bin/python3 #{$root}/backends/generators/c_header/generate_encoding.py --inst-dir=#{inst_dir} --csr-dir=#{csr_dir} --ext-dir=#{ext_dir} --resolved-codes=#{resolved_codes_file.path} --output=#{output_dir}encoding.out.h --include-all" ensure resolved_codes_file.close resolved_codes_file.unlink diff --git a/backends/instructions_appendix/all_instructions.golden.adoc b/backends/instructions_appendix/all_instructions.golden.adoc index cddee7d88c..3477142770 100644 --- a/backends/instructions_appendix/all_instructions.golden.adoc +++ b/backends/instructions_appendix/all_instructions.golden.adoc @@ -1,6 +1,6 @@ = Instruction Appendix :doctype: book -:wavedrom: /workspaces/riscv-unified-db/node_modules/.bin/wavedrom-cli +:wavedrom: /opt/node/node_modules/.bin/wavedrom-cli // Now the document header is complete and the wavedrom attribute is active. diff --git a/backends/instructions_appendix/templates/instructions.adoc.erb b/backends/instructions_appendix/templates/instructions.adoc.erb index c5e031c98a..d1e7c79142 100755 --- a/backends/instructions_appendix/templates/instructions.adoc.erb +++ b/backends/instructions_appendix/templates/instructions.adoc.erb @@ -1,6 +1,6 @@ = Instruction Appendix :doctype: book -:wavedrom: <%= $root %>/node_modules/.bin/wavedrom-cli +:wavedrom: /opt/node/node_modules/.bin/wavedrom-cli // Now the document header is complete and the wavedrom attribute is active. <% instructions.sort_by(&:name).each do |inst| %> diff --git a/backends/manual/tasks.rake b/backends/manual/tasks.rake index 82c5dde0ce..9d062bcc93 100644 --- a/backends/manual/tasks.rake +++ b/backends/manual/tasks.rake @@ -434,10 +434,10 @@ namespace :gen do playbook_path = MANUAL_GEN_DIR / ENV["MANUAL_NAME"] / "top" / output_hash / "antora" / "playbook" / "playbook.yml" Rake::Task[playbook_path].invoke - $logger.info "Running Antora under npm for HTML site to create '#{MANUAL_GEN_DIR / ENV['MANUAL_NAME'] / output_hash / 'html'}'" + $logger.info "Running Antora for HTML site to create '#{MANUAL_GEN_DIR / ENV['MANUAL_NAME'] / output_hash / 'html'}'" sh [ - "npm exec -- antora", + "/opt/node/node_modules/.bin/antora", "--stacktrace", "generate", "--cache-dir=#{$root}/.home/.antora", @@ -447,7 +447,7 @@ namespace :gen do playbook_path.to_s ].join(" ") - $logger.info "Done running Antora under npm for HTML site to create '#{MANUAL_GEN_DIR / ENV['MANUAL_NAME'] / output_hash / 'html'}'" + $logger.info "Done running Antora for HTML site to create '#{MANUAL_GEN_DIR / ENV['MANUAL_NAME'] / output_hash / 'html'}'" end end diff --git a/backends/manual/templates/playbook.yml.erb b/backends/manual/templates/playbook.yml.erb index 69ef66ab93..8015e86c0c 100644 --- a/backends/manual/templates/playbook.yml.erb +++ b/backends/manual/templates/playbook.yml.erb @@ -28,9 +28,9 @@ ui: snapshot: true supplemental_files: - path: css/vendor/tabs.css - contents: <%= $root %>/node_modules/@asciidoctor/tabs/dist/css/tabs.css + contents: /opt/node/node_modules/@asciidoctor/tabs/dist/css/tabs.css - path: js/vendor/tabs.js - contents: <%= $root %>/node_modules/@asciidoctor/tabs/dist/js/tabs.js + contents: /opt/node/node_modules/@asciidoctor/tabs/dist/js/tabs.js - path: partials/footer-scripts.hbs contents: | diff --git a/backends/portfolio/tasks.rake b/backends/portfolio/tasks.rake index cc226f2446..80b6818dda 100644 --- a/backends/portfolio/tasks.rake +++ b/backends/portfolio/tasks.rake @@ -99,7 +99,7 @@ def pf_adoc2pdf(adoc_file, target_pname) "-a pdf-theme=#{$root}/ext/docs-resources/themes/riscv-pdf.yml", "-a pdf-fontsdir=#{$root}/ext/docs-resources/fonts", "-a imagesdir=#{$root}/ext/docs-resources/images", - "-a bytefield-svg=#{$root}/node_modules/.bin/bytefield-svg", + "-a bytefield-svg=/opt/node/node_modules/.bin/bytefield-svg", "-r asciidoctor-diagram", "-r idl_highlighter", "-o #{target_pname}", @@ -135,7 +135,7 @@ def pf_adoc2html(adoc_file, target_pname) "-v", "-a toc", "-a imagesdir=#{$root}/ext/docs-resources/images", - "-a bytefield-svg=#{$root}/node_modules/.bin/bytefield-svg", + "-a bytefield-svg=/opt/node/node_modules/.bin/bytefield-svg", "-r asciidoctor-diagram", "-r idl_highlighter", "-o #{target_pname}", diff --git a/backends/portfolio/templates/beginning.adoc.erb b/backends/portfolio/templates/beginning.adoc.erb index 800ce1a35e..d300f340ee 100644 --- a/backends/portfolio/templates/beginning.adoc.erb +++ b/backends/portfolio/templates/beginning.adoc.erb @@ -13,7 +13,7 @@ // Settings :experimental: :reproducible: -:wavedrom: <%= $root %>/node_modules/.bin/wavedrom-cli +:wavedrom: /opt/node/node_modules/.bin/wavedrom-cli // TODO: needs to be changed :imagesoutdir: images :icons: font diff --git a/backends/prm_pdf/templates/prm_main.adoc.erb b/backends/prm_pdf/templates/prm_main.adoc.erb index 718c80d057..03b9ad448a 100644 --- a/backends/prm_pdf/templates/prm_main.adoc.erb +++ b/backends/prm_pdf/templates/prm_main.adoc.erb @@ -13,11 +13,11 @@ :pdf-themesdir: <%= @prm_pdf_dir / 'pdf-theme' %> :pdf-theme: custom :title-logo-image: image:<%= @prm_pdf_dir / 'pdf-theme' / 'logo.svg' %>[top=10%,align=left,pdfwidth=4in] -<%- wavedrom_path = @root_path / "node_modules/.bin/wavedrom-cli" -%> +<%- wavedrom_path = Pathname.new("/opt/node") / "node_modules/.bin/wavedrom-cli" -%> <%- if File.exist?(wavedrom_path) -%> :wavedrom: <%= wavedrom_path %> <%- end -%> -<%- bytefield_path = @root_path / "node_modules/.bin/bytefield-svg" -%> +<%- bytefield_path = Pathname.new("/opt/node") / "node_modules/.bin/bytefield-svg" -%> <%- if File.exist?(bytefield_path) -%> :bytefield-svg: <%= bytefield_path %> <%- end -%> diff --git a/bin/.container-tag b/bin/.container-tag index b63ba696b7..68c123cf10 100644 --- a/bin/.container-tag +++ b/bin/.container-tag @@ -1 +1 @@ -0.9 +0.10 diff --git a/bin/clobber b/bin/clobber index 95d31b8b1d..4b5edaf313 100755 --- a/bin/clobber +++ b/bin/clobber @@ -8,5 +8,4 @@ rm -rf \ ${ROOT}/.bundle \ ${ROOT}/.singularity \ ${ROOT}/gen \ - ${ROOT}/node_modules \ ${ROOT}/sorbet diff --git a/bin/pip b/bin/pip index b58e74ff12..cc6690717d 100755 --- a/bin/pip +++ b/bin/pip @@ -3,8 +3,4 @@ ROOT=$(dirname $(realpath ${BASH_SOURCE[0]})) source $ROOT/setup -if [ ! -v VIRTUAL_ENV ]; then - source ${ROOT}/.home/.venv/bin/activate -fi - $PIP "$@" diff --git a/bin/setup b/bin/setup index 67c793bebf..da59ae885a 100755 --- a/bin/setup +++ b/bin/setup @@ -197,16 +197,6 @@ if [ ! -f $ROOT/ext/rbi-central/README.md ]; then git submodule update --init ext/rbi-central fi -if [ ! -d $ROOT/.home/.venv ]; then - ${RUN} /usr/bin/python3 -m venv ${ROOT}/.home/.venv -fi - -source ${ROOT}/.home/.venv/bin/activate - -if [ ! -f ${ROOT}/.home/.venv/bin/pre-commit ]; then - ${RUN} ${ROOT}/.home/.venv/bin/pip install -r requirements.txt -fi - # if [ ! -f $ROOT/ext/riscv-opcodes/README.md ]; then # git submodule update --init ext/riscv-opcodes # fi @@ -219,10 +209,6 @@ if [[ ! -z "$DEVELOPMENT" && $DEVELOPMENT -eq 1 ]]; then fi fi -if [ ! -d ${ROOT}/node_modules ]; then - ${RUN} npm i -fi - if [ "${CONTAINER_TYPE}" == "devcontainer" ]; then BUNDLE="bundle" RUBY="bundle exec ruby" @@ -230,8 +216,8 @@ if [ "${CONTAINER_TYPE}" == "devcontainer" ]; then NPM="npm" NPX="npx" NODE="node" - PYTHON="${ROOT}/.home/.venv/bin/python3" - PIP="${ROOT}/.home/.venv/bin/pip" + PYTHON="/opt/venv/bin/python3" + PIP="/opt/venv/bin/pip" BASH="bash" GPP="g++" GDB="gdb" @@ -245,8 +231,8 @@ elif [ "${CONTAINER_TYPE}" == "docker" -o "${CONTAINER_TYPE}" == "podman" ]; the NPM="${CONTAINER_BASE} npm" NPX="${CONTAINER_BASE} npx" NODE="${CONTAINER_BASE} node" - PYTHON="${CONTAINER_BASE} ${ROOT}/.home/.venv/bin/python3" - PIP="${CONTAINER_BASE} ${ROOT}/.home/.venv/bin/pip" + PYTHON="${CONTAINER_BASE} /opt/venv/bin/python3" + PIP="${CONTAINER_BASE} /opt/venv/bin/pip" BASH="${CONTAINER_BASE} bash" GPP="${CONTAINER_BASE} g++" GDB="${CONTAINER_BASE} gdb" @@ -260,8 +246,8 @@ elif [ "${CONTAINER_TYPE}" == "singularity" ]; then NPM="singularity run ${HOME_OPT} ${CONTAINER_PATH} npm" NPX="singularity run ${HOME_OPT} ${CONTAINER_PATH} npx" NODE="singularity run ${HOME_OPT} ${CONTAINER_PATH} node" - PYTHON="singularity run ${HOME_OPT} ${CONTAINER_PATH} ${ROOT}/.home/.venv/bin/python3" - PIP="singularity run ${HOME_OPT} ${CONTAINER_PATH} ${ROOT}/.home/.venv/bin/pip" + PYTHON="singularity run ${HOME_OPT} ${CONTAINER_PATH} /opt/venv/bin/python3" + PIP="singularity run ${HOME_OPT} ${CONTAINER_PATH} /opt/venv/bin/pip" BASH="singularity run ${HOME_OPT} ${CONTAINER_PATH} bash" GPP="singularity run ${HOME_OPT} ${CONTAINER_PATH} g++" GDB="singularity run ${HOME_OPT} ${CONTAINER_PATH} gdb" diff --git a/container.def b/container.def index fbfb55c343..8091370c5d 100644 --- a/container.def +++ b/container.def @@ -1,10 +1,10 @@ Bootstrap: docker From: ubuntu:24.04 -# %files - -# Gemfile $HOME/ -# package.json $HOME/ +%files + requirements.txt /opt/requirements.txt + package.json /opt/node/package.json + package-lock.json /opt/node/package-lock.json %post export DEBIAN_FRONTEND=noninteractive @@ -46,8 +46,19 @@ From: ubuntu:24.04 apt-get autoremove -y rm -rf /var/lib/{apt, dpkg, cache, log} + # Create Python virtual environment and install packages + /usr/bin/python3 -m venv /opt/venv + /opt/venv/bin/pip install -r /opt/requirements.txt + rm /opt/requirements.txt + + # Install npm packages globally in the container + cd /opt/node + /usr/bin/npm ci + rm /opt/node/package.json /opt/node/package-lock.json + # cd $HOME # bundle install - # npm i wavedrom-cli - # npm i i -E @antora/cli@3.1 @antora/site-generator@3.1 @antora/lunr-extension asciidoctor-kroki +%environment + export PATH="/opt/venv/bin:/opt/node/node_modules/.bin:$PATH" + export NODE_PATH="/opt/node/node_modules" diff --git a/package-lock.json b/package-lock.json index 95fbf0dca3..e6d4c59923 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@commitlint/config-conventional": "19.8.0", "asciidoctor-kroki": "0.17.0", "asciidoctor-mathjax": "^0.0.5", + "bytefield-svg": "^1.8.0", "prettier": "3.4.2", "wavedrom-cli": "^3.1.1" } @@ -1310,6 +1311,14 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -1732,6 +1741,87 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -1926,6 +2016,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -2126,6 +2224,14 @@ "node": ">=6" } }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/esm": { "version": "3.2.25", "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", @@ -2241,6 +2347,17 @@ "node": ">=8" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/find-up": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", @@ -2545,6 +2662,14 @@ "uglify-js": "^3.1.4" } }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -3935,6 +4060,14 @@ "node": ">= 12.13.0" } }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "engines": { + "node": ">=6" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.11", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", @@ -4251,6 +4384,17 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/svg2img": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/svg2img/-/svg2img-1.0.0-beta.2.tgz", @@ -4265,6 +4409,36 @@ "node": ">= 10" } }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/text-extensions": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", @@ -4422,6 +4596,14 @@ "node": ">=14.17" } }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "engines": { + "node": ">=8" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -4701,6 +4883,26 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/tools/ruby-gems/udb/lib/udb/resolver.rb b/tools/ruby-gems/udb/lib/udb/resolver.rb index 39e6409578..ea6596d2d6 100644 --- a/tools/ruby-gems/udb/lib/udb/resolver.rb +++ b/tools/ruby-gems/udb/lib/udb/resolver.rb @@ -148,7 +148,7 @@ def initialize( @gen_path = gen_path_override || (@repo_root / "gen") @std_path = std_path_override || (@repo_root / "spec" / "std" / "isa") @custom_path = custom_path_override || (@repo_root / "spec" / "custom" / "isa") - @python_path = python_path_override || (@repo_root / ".home" / ".venv" / "bin" / "python3") + @python_path = python_path_override || Pathname.new("/opt") / "venv" / "bin" / "python3" # cache of config names @cfg_info = T.let({}, T::Hash[T.any(String, Pathname), ConfigInfo]) diff --git a/tools/ruby-gems/udb/test/test_yaml_loader.rb b/tools/ruby-gems/udb/test/test_yaml_loader.rb index cbba0ff0b9..94c6f4239d 100644 --- a/tools/ruby-gems/udb/test/test_yaml_loader.rb +++ b/tools/ruby-gems/udb/test/test_yaml_loader.rb @@ -26,7 +26,7 @@ def resolve_yaml(yaml) stdout, stderr, status = Dir.chdir(Udb.repo_root) do - Open3.capture3("/bin/bash -c \"source #{Udb.repo_root}/.home/.venv/bin/activate && #{Udb.repo_root}/.home/.venv/bin/python3 #{UDB_GEM_PATH}/python/yaml_resolver.py resolve --no-progress --no-checks #{arch_dir} #{resolved_dir}\"") + Open3.capture3("/opt/venv/bin/python3 #{UDB_GEM_PATH}/python/yaml_resolver.py resolve --no-progress --no-checks #{arch_dir} #{resolved_dir}") end # puts stdout # puts stderr @@ -53,7 +53,7 @@ def resolve_multi_yaml(*yamls) File.write(test_dir / "test#{i + 1}.yaml", yaml) end - system "/bin/bash -c \"source #{Udb.repo_root}/.home/.venv/bin/activate && #{Udb.repo_root}/.home/.venv/bin/python3 #{UDB_GEM_PATH}/python/yaml_resolver.py resolve --no-checks #{arch_dir} #{resolved_dir}\"" + system "/opt/venv/bin/python3 #{UDB_GEM_PATH}/python/yaml_resolver.py resolve --no-checks #{arch_dir} #{resolved_dir}" if $CHILD_STATUS == 0 YAML.load_file(resolved_dir / "test" / "test1.yaml")