From f4f9ae2f2885ec0441ad20bd0601d953a4ed43c4 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Wed, 9 Oct 2024 03:19:31 -0700 Subject: [PATCH] fix LIB_NPM provider loading and euid --- archivebox/plugins_extractor/mercury/apps.py | 6 ++---- archivebox/plugins_pkg/npm/apps.py | 8 ++++---- archivebox/plugins_pkg/puppeteer/apps.py | 3 +++ archivebox/vendor/pydantic-pkgr | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/archivebox/plugins_extractor/mercury/apps.py b/archivebox/plugins_extractor/mercury/apps.py index 58b8c249..84caad28 100644 --- a/archivebox/plugins_extractor/mercury/apps.py +++ b/archivebox/plugins_extractor/mercury/apps.py @@ -2,7 +2,6 @@ __package__ = 'plugins_extractor.mercury' from typing import List, Optional, Dict from pathlib import Path -from subprocess import run from pydantic import InstanceOf, Field from pydantic_pkgr import BinProvider, BinName, BinProviderName, ProviderLookupDict, bin_abspath @@ -42,11 +41,10 @@ class MercuryBinary(BaseBinary): provider_overrides: Dict[BinProviderName, ProviderLookupDict] = { LIB_NPM_BINPROVIDER.name: { 'packages': lambda: ['@postlight/parser@^2.2.3'], - 'version': lambda: run([str(LIB_NPM_BINPROVIDER.INSTALLER_BIN_ABSPATH), f'--prefix={LIB_NPM_BINPROVIDER.npm_prefix}', 'info', '@postlight/parser', 'version'], text=True, capture_output=True).stdout.strip(), }, SYS_NPM_BINPROVIDER.name: { - 'packages': lambda: [], # never try to install things globally - 'version': lambda: run([str(SYS_NPM_BINPROVIDER.INSTALLER_BIN_ABSPATH), '-g', 'info', '@postlight/parser', 'version'], text=True, capture_output=True).stdout.strip(), + 'packages': lambda: ['@postlight/parser@^2.2.3'], + 'install': lambda: False, # never try to install things into global prefix }, env.name: { 'version': lambda: '999.999.999' if bin_abspath('postlight-parser', PATH=env.PATH) else None, diff --git a/archivebox/plugins_pkg/npm/apps.py b/archivebox/plugins_pkg/npm/apps.py index 4a0b555e..be343fc2 100644 --- a/archivebox/plugins_pkg/npm/apps.py +++ b/archivebox/plugins_pkg/npm/apps.py @@ -35,12 +35,12 @@ NPM_CONFIG = NpmDependencyConfigs(**DEFAULT_GLOBAL_CONFIG) OLD_NODE_BIN_PATH = DATA_DIR / 'node_modules' / '.bin' NEW_NODE_BIN_PATH = CONSTANTS.LIB_NPM_DIR / 'node_modules' / '.bin' -class SystemNpmProvider(NpmProvider, BaseBinProvider): +class SystemNpmBinProvider(NpmProvider, BaseBinProvider): name: BinProviderName = "sys_npm" npm_prefix: Optional[Path] = None -class LibNpmProvider(NpmProvider, BaseBinProvider): +class LibNpmBinProvider(NpmProvider, BaseBinProvider): name: BinProviderName = "lib_npm" PATH: PATHStr = f'{NEW_NODE_BIN_PATH}:{OLD_NODE_BIN_PATH}' @@ -52,8 +52,8 @@ class LibNpmProvider(NpmProvider, BaseBinProvider): return self -SYS_NPM_BINPROVIDER = SystemNpmProvider() -LIB_NPM_BINPROVIDER = LibNpmProvider() +SYS_NPM_BINPROVIDER = SystemNpmBinProvider() +LIB_NPM_BINPROVIDER = LibNpmBinProvider() npm = LIB_NPM_BINPROVIDER class NodeBinary(BaseBinary): diff --git a/archivebox/plugins_pkg/puppeteer/apps.py b/archivebox/plugins_pkg/puppeteer/apps.py index d8b63e25..15946e87 100644 --- a/archivebox/plugins_pkg/puppeteer/apps.py +++ b/archivebox/plugins_pkg/puppeteer/apps.py @@ -17,6 +17,7 @@ from pydantic_pkgr import ( ) from archivebox.config import CONSTANTS +from archivebox.config.permissions import ARCHIVEBOX_USER # Depends on other Django apps: from abx.archivebox.base_plugin import BasePlugin @@ -60,6 +61,8 @@ class PuppeteerBinProvider(BaseBinProvider): INSTALLER_BIN: BinName = "npx" PATH: PATHStr = str(CONSTANTS.LIB_BIN_DIR) + + euid: Optional[int] = ARCHIVEBOX_USER puppeteer_browsers_dir: Optional[Path] = LIB_DIR_BROWSERS puppeteer_install_args: List[str] = ["@puppeteer/browsers", "install", "--path", str(LIB_DIR_BROWSERS)] diff --git a/archivebox/vendor/pydantic-pkgr b/archivebox/vendor/pydantic-pkgr index 830b3738..ec4c2d5f 160000 --- a/archivebox/vendor/pydantic-pkgr +++ b/archivebox/vendor/pydantic-pkgr @@ -1 +1 @@ -Subproject commit 830b3738f49109a05c8068df12f1e2167901953f +Subproject commit ec4c2d5f5a034ea6c10a5337c3115fbe1504f52b