| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
tool_wrapper: add mirror acceleration for pip/npm/gem/go/cargo Purpose: Automatically inject mirror environment variables for common package managers when running in epkg environment, accelerating downloads for users in regions like China, EU, etc. Solution: - Create wrapper scripts in $env_root/usr/local/bin/ that: 1. Read region-specific mirror config from ~/.config/epkg/tool/my_region/{tool}.yaml 2. Export mirror env vars if not already set 3. Execute the original tool binary - Setup symlinks on 'epkg self install': - ~/.config/epkg/tool/env_vars -> $EPKG_SRC/assets/tool/env_vars - ~/.config/epkg/tool/my_region -> {cn|eu|us} (based on country code) - Create wrappers on 'epkg install' after link_packages() - Skip wrapper if user config exists or env var already set Region mapping: - CN -> cn (China) - AT,BE,BG,HR,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK -> eu - US,JP,KR,AU,CA,NZ -> us Files: - assets/tool/env_vars/{cn}/*.yaml - mirror config for each region - assets/tool/wrappers/pip - Python wrapper (imports pip directly) - assets/tool/wrappers/npm - Node.js wrapper - assets/tool/wrappers/gem - Ruby wrapper - assets/tool/wrappers/shell-wrapper.sh - generic shell wrapper - assets/tool/wrappers/{go,cargo} -> shell-wrapper.sh - src/tool_wrapper.rs - Rust module with setup functions Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 5 个月前 | |
tool: fix CN gem mirror and wrapper key parsing; tests: add curl HTTPS smoke - Point assets/tool/env_vars/cn/gem.yaml at Tsinghua RubyGems mirror instead of gems.ruby-china.com (TLS hostname mismatch / bad cert on some paths). - Parse mirror YAML lines on first : (colon-space), not first :, so BUNDLE_MIRROR__HTTPS://RUBYGEMS__ORG/ is the full env var name in load_mirror_env_vars() for gem (Ruby), pip (Python), and shell-wrapper.sh. - Add tests/dev-projects/langs/curl.sh: install curl (+ ca-certificates-bundle on alpine), curl -fsSL -o /dev/null https://bing.com/ to exercise TLS inside the env. - Mention curl in tests/dev-projects/run.sh help. Fixes: - gem install json failed: SSL verification hostname mismatch (62) fetching https://gems.ruby-china.com/specs.4.8.gz - Mirror wrappers previously set wrong key (split at first : inside the Bundler var name) Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 4 个月前 | |
tool_wrapper: add mirror acceleration for pip/npm/gem/go/cargo Purpose: Automatically inject mirror environment variables for common package managers when running in epkg environment, accelerating downloads for users in regions like China, EU, etc. Solution: - Create wrapper scripts in $env_root/usr/local/bin/ that: 1. Read region-specific mirror config from ~/.config/epkg/tool/my_region/{tool}.yaml 2. Export mirror env vars if not already set 3. Execute the original tool binary - Setup symlinks on 'epkg self install': - ~/.config/epkg/tool/env_vars -> $EPKG_SRC/assets/tool/env_vars - ~/.config/epkg/tool/my_region -> {cn|eu|us} (based on country code) - Create wrappers on 'epkg install' after link_packages() - Skip wrapper if user config exists or env var already set Region mapping: - CN -> cn (China) - AT,BE,BG,HR,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK -> eu - US,JP,KR,AU,CA,NZ -> us Files: - assets/tool/env_vars/{cn}/*.yaml - mirror config for each region - assets/tool/wrappers/pip - Python wrapper (imports pip directly) - assets/tool/wrappers/npm - Node.js wrapper - assets/tool/wrappers/gem - Ruby wrapper - assets/tool/wrappers/shell-wrapper.sh - generic shell wrapper - assets/tool/wrappers/{go,cargo} -> shell-wrapper.sh - src/tool_wrapper.rs - Rust module with setup functions Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 5 个月前 | |
tool_wrapper: auto create tool config symlinks and fix npm/node cert issue Problem: - GOPROXY/npm mirror env vars not loaded because ~/.config/epkg/tool/ not created - Node.js HTTPS fails on Alpine with "unable to get local issuer certificate" Solution: - Call setup_tool_config_symlinks() in setup_tool_wrappers() to auto-create config - Simplify setup_tool_config_symlinks() to be idempotent and handle errors internally - Add is_symlink_to() helper to skip existing correct symlinks - Add NODE_EXTRA_CA_CERTS to npm/node/npx.yaml for Alpine SSL support - Add ca-certificates-bundle to go.sh test for HTTPS module download Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 4 个月前 | |
tool_wrapper: auto create tool config symlinks and fix npm/node cert issue Problem: - GOPROXY/npm mirror env vars not loaded because ~/.config/epkg/tool/ not created - Node.js HTTPS fails on Alpine with "unable to get local issuer certificate" Solution: - Call setup_tool_config_symlinks() in setup_tool_wrappers() to auto-create config - Simplify setup_tool_config_symlinks() to be idempotent and handle errors internally - Add is_symlink_to() helper to skip existing correct symlinks - Add NODE_EXTRA_CA_CERTS to npm/node/npx.yaml for Alpine SSL support - Add ca-certificates-bundle to go.sh test for HTTPS module download Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 4 个月前 | |
tool_wrapper: auto create tool config symlinks and fix npm/node cert issue Problem: - GOPROXY/npm mirror env vars not loaded because ~/.config/epkg/tool/ not created - Node.js HTTPS fails on Alpine with "unable to get local issuer certificate" Solution: - Call setup_tool_config_symlinks() in setup_tool_wrappers() to auto-create config - Simplify setup_tool_config_symlinks() to be idempotent and handle errors internally - Add is_symlink_to() helper to skip existing correct symlinks - Add NODE_EXTRA_CA_CERTS to npm/node/npx.yaml for Alpine SSL support - Add ca-certificates-bundle to go.sh test for HTTPS module download Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 4 个月前 | |
tool_wrapper: add mirror acceleration for pip/npm/gem/go/cargo Purpose: Automatically inject mirror environment variables for common package managers when running in epkg environment, accelerating downloads for users in regions like China, EU, etc. Solution: - Create wrapper scripts in $env_root/usr/local/bin/ that: 1. Read region-specific mirror config from ~/.config/epkg/tool/my_region/{tool}.yaml 2. Export mirror env vars if not already set 3. Execute the original tool binary - Setup symlinks on 'epkg self install': - ~/.config/epkg/tool/env_vars -> $EPKG_SRC/assets/tool/env_vars - ~/.config/epkg/tool/my_region -> {cn|eu|us} (based on country code) - Create wrappers on 'epkg install' after link_packages() - Skip wrapper if user config exists or env var already set Region mapping: - CN -> cn (China) - AT,BE,BG,HR,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK -> eu - US,JP,KR,AU,CA,NZ -> us Files: - assets/tool/env_vars/{cn}/*.yaml - mirror config for each region - assets/tool/wrappers/pip - Python wrapper (imports pip directly) - assets/tool/wrappers/npm - Node.js wrapper - assets/tool/wrappers/gem - Ruby wrapper - assets/tool/wrappers/shell-wrapper.sh - generic shell wrapper - assets/tool/wrappers/{go,cargo} -> shell-wrapper.sh - src/tool_wrapper.rs - Rust module with setup functions Signed-off-by: Wu Fengguang <wfg@mail.ustc.edu.cn> | 5 个月前 |