diff --git a/SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractCommandWrapper.java b/SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractCommandWrapper.java index 27152ed45..3b05a3d3c 100644 --- a/SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractCommandWrapper.java +++ b/SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/run/AbstractCommandWrapper.java @@ -117,7 +117,7 @@ public ProcessBuilder getProcessBuilder(List params) if (getWorkingDir() != null) { - getLogger().debug("using working directory: " + getWorkingDir().getPath()); + getLogger().log(_logLevel, "using working directory: " + getWorkingDir().getPath()); pb.directory(getWorkingDir()); } @@ -208,8 +208,8 @@ private void setPath(ProcessBuilder pb) if (_logPath) { - getLogger().debug("Existing PATH: " + path); - getLogger().debug("toolDir: " + toolDir); + getLogger().log(_logLevel, "Existing PATH: " + path); + getLogger().log(_logLevel, "toolDir: " + toolDir); } if (path == null) @@ -234,7 +234,7 @@ private void setPath(ProcessBuilder pb) if (_logPath) { - getLogger().debug("using path: " + path); + getLogger().log(_logLevel, "using path: " + path); } pb.environment().put("PATH", path); } @@ -275,7 +275,7 @@ public Logger getLogger() return _log; } - protected void setLogLevel(Level logLevel) + public void setLogLevel(Level logLevel) { _logLevel = logLevel; } diff --git a/jbrowse/package-lock.json b/jbrowse/package-lock.json index b2b8218e0..a5bc21e41 100644 --- a/jbrowse/package-lock.json +++ b/jbrowse/package-lock.json @@ -18,7 +18,7 @@ "@labkey/api": "^1.39.0", "@labkey/components": "^6.32.2", "@mui/x-data-grid": "^7.28.1", - "@yao-pkg/pkg": "^6.3.2", + "@yao-pkg/pkg": "^6.6.0", "assert": "^2.1.0", "browserify-zlib": "^0.2.0", "buffer": "^6.0.3", @@ -4518,14 +4518,15 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/@yao-pkg/pkg": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.3.2.tgz", - "integrity": "sha512-gd4fh8dVC5qnKQD8HTwQrVLvT8TyQqwE59ky3LHtnke+6fBcTTrWavtbsVOwdL09IWqY+eSB+2AGCrSUnZ4wwg==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.6.0.tgz", + "integrity": "sha512-3/oiaSm7fS0Fc7dzp22r9B7vFaguGhO9vERgEReRYj2EUzdi5ssyYhe1uYJG4ec/dmo2GG6RRHOUAT8savl79Q==", + "license": "MIT", "dependencies": { "@babel/generator": "^7.23.0", "@babel/parser": "^7.23.0", "@babel/types": "^7.23.0", - "@yao-pkg/pkg-fetch": "3.5.19", + "@yao-pkg/pkg-fetch": "3.5.24", "into-stream": "^6.0.0", "minimist": "^1.2.6", "multistream": "^4.1.0", @@ -4546,9 +4547,10 @@ } }, "node_modules/@yao-pkg/pkg-fetch": { - "version": "3.5.19", - "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.19.tgz", - "integrity": "sha512-EEURrS1Q5sSSAwaQ4zD0wZsquDiG8CroY3SCi7jYBoM0NG3eRA239mW6YMUYPNWUK4zCMhuK3bzFT5aIZP/rDg==", + "version": "3.5.24", + "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.24.tgz", + "integrity": "sha512-FPESCH1uXCYui6jeDp2aayWuFHR39w+uU1r88nI6JWRvPYOU64cHPUV/p6GSFoQdpna7ip92HnrZKbBC60l0gA==", + "license": "MIT", "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.6", @@ -4563,9 +4565,10 @@ } }, "node_modules/@yao-pkg/pkg-fetch/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -4644,6 +4647,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { "debug": "4" }, @@ -5576,6 +5580,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -7303,6 +7308,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -7755,6 +7761,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -8988,6 +8995,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -9802,6 +9810,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -10471,6 +10480,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11714,7 +11724,8 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/tree-dump": { "version": "1.0.2", @@ -12083,7 +12094,8 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/webpack": { "version": "5.99.7", @@ -12445,6 +12457,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -12493,6 +12506,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12566,6 +12580,7 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { "node": ">=10" } @@ -12587,6 +12602,7 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -12604,6 +12620,7 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", "engines": { "node": ">=10" } diff --git a/jbrowse/package.json b/jbrowse/package.json index 3807eef04..266d924af 100644 --- a/jbrowse/package.json +++ b/jbrowse/package.json @@ -11,7 +11,7 @@ "build-prod": "npm run clean && cross-env NODE_ENV=production PROD_SOURCE_MAP=source-map webpack --config ./config/prod.config.js --progress --profile", "clean": "rimraf resources/web/gen && rimraf resources/web/jbrowse/gen && rimraf resources/views/gen", "prepareCli": "rimraf ./buildCli && rimraf ./resources/external/jb-cli && npm install @jbrowse/cli@1.7.4 --prefix ./buildCli", - "jb-pkg": "npm run prepareCli && npx pkg --outdir=./resources/external/jb-cli ./buildCli/node_modules/@jbrowse/cli && rimraf ./buildCli" + "jb-pkg": "npm run prepareCli && npx pkg --public --outdir=./resources/external/jb-cli ./buildCli/node_modules/@jbrowse/cli && rimraf ./buildCli" }, "dependencies": { "@gmod/vcf": "^6.0.9", @@ -24,7 +24,7 @@ "@labkey/api": "^1.39.0", "@labkey/components": "^6.32.2", "@mui/x-data-grid": "^7.28.1", - "@yao-pkg/pkg": "^6.3.2", + "@yao-pkg/pkg": "^6.6.0", "assert": "^2.1.0", "browserify-zlib": "^0.2.0", "buffer": "^6.0.3", diff --git a/jbrowse/src/org/labkey/jbrowse/JBrowseManager.java b/jbrowse/src/org/labkey/jbrowse/JBrowseManager.java index c1039d844..7266437b6 100644 --- a/jbrowse/src/org/labkey/jbrowse/JBrowseManager.java +++ b/jbrowse/src/org/labkey/jbrowse/JBrowseManager.java @@ -17,6 +17,7 @@ package org.labkey.jbrowse; import org.apache.commons.lang3.SystemUtils; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.jetbrains.annotations.Nullable; @@ -42,6 +43,7 @@ import org.labkey.api.security.permissions.InsertPermission; import org.labkey.api.sequenceanalysis.SequenceAnalysisService; import org.labkey.api.sequenceanalysis.pipeline.ReferenceGenome; +import org.labkey.api.sequenceanalysis.run.AbstractCommandWrapper; import org.labkey.api.sequenceanalysis.run.SimpleScriptWrapper; import org.labkey.api.util.FileType; import org.labkey.api.util.FileUtil; @@ -237,16 +239,45 @@ public void testJBrowseCli() throws Exception { File exe = JBrowseManager.get().getJbrowseCli(); SimpleScriptWrapper wrapper = new SimpleScriptWrapper(_log); + wrapper.setLogLevel(Level.INFO); + wrapper.setLogPath(true); wrapper.setThrowNonZeroExits(false); + File node = AbstractCommandWrapper.resolveFileInPath("node", null, false); + if (node == null) + { + _log.info("Unable to find node in PATH, trying node.exe"); + node = AbstractCommandWrapper.resolveFileInPath("node.exe", null, false); + if (node == null) + { + _log.info("Unable to find node.exe in PATH"); + } + } + _log.info("node executable location: " + node); + String output = wrapper.executeWithOutput(Arrays.asList(exe.getPath(), "help")); if (wrapper.getLastReturnCode() != 0) { _log.error("Non-zero exit from testJBrowseCli: " + wrapper.getLastReturnCode()); wrapper.getCommandsExecuted().forEach(_log::error); + _log.error("NODE_PATH: " + System.getenv("NODE_PATH")); + _log.error("output: "); _log.error(output); + // Repeat without output going direct to the server log: + try + { + // NOTE: this is only useful if "npx pkg --debug" is used when building the executables + _log.info("Retrying without all output direct to the system log and DEBUG_PKG=1:"); + wrapper.addToEnvironment("DEBUG_PKG", "1"); + wrapper.execute(Arrays.asList(exe.getPath(), "help")); + } + catch (Exception e) + { + // Ignore + } + throw new RuntimeException("Non-zero exit running testJBrowseCli: " + wrapper.getLastReturnCode()); } @@ -264,11 +295,6 @@ public File getBaseDir(Container c, boolean doCreate) return null; } - if (fileRoot == null || !fileRoot.exists()) - { - return null; - } - File jbrowseDir = new File(fileRoot, ".jbrowse"); if (!jbrowseDir.exists()) {