From 9ed075df688a22a6ab6215ea7f8f3cdca8932533 Mon Sep 17 00:00:00 2001 From: Atul R Date: Sat, 22 Feb 2020 23:50:16 +0100 Subject: [PATCH] Adds miniqt installation --- config/qt.cmake | 10 +++----- jest.config.js | 4 +-- package-lock.json | 35 ++++++++++++++++++++++++--- package.json | 2 ++ scripts/preinstall.js | 26 ++++++++++++-------- scripts/{config.js => qtConfig.js} | 3 ++- {config => scripts}/tests/setup.js | 0 {config => scripts}/tests/teardown.js | 0 8 files changed, 57 insertions(+), 23 deletions(-) rename scripts/{config.js => qtConfig.js} (90%) rename {config => scripts}/tests/setup.js (100%) rename {config => scripts}/tests/teardown.js (100%) diff --git a/config/qt.cmake b/config/qt.cmake index d3783c563..44aa1a223 100644 --- a/config/qt.cmake +++ b/config/qt.cmake @@ -6,18 +6,14 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) +set(QTCONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/../scripts/qtConfig.js) + macro(AddQtSupport addonName) - execute_process(COMMAND node -p "require('./scripts/config.js').qtCmakeDir" + execute_process(COMMAND node -p "require('${QTCONFIG_FILE}').qtCmakeDir" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE QT_CMAKE_HOME_DIR ) - # if(DEFINED ENV{QT_INSTALL_DIR}) - # # Allows to use custom Qt installation via QT_INSTALL_DIR env variable - # message(STATUS "Using Custom QT installation for ${addonName} QT_INSTALL_DIR:$ENV{QT_INSTALL_DIR}") - # set(QT_HOME_DIR "$ENV{QT_INSTALL_DIR}") - # endif() - string(REPLACE "\n" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}") string(REPLACE "\"" "" QT_CMAKE_HOME_DIR "${QT_CMAKE_HOME_DIR}") diff --git a/jest.config.js b/jest.config.js index f3d447550..cb84b9348 100644 --- a/jest.config.js +++ b/jest.config.js @@ -11,6 +11,6 @@ module.exports = { transform: { '^.+\\.tsx?$': 'ts-jest', }, - globalSetup: './config/tests/setup.js', - globalTeardown: './config/tests/teardown.js', + globalSetup: './scripts/tests/setup.js', + globalTeardown: './scripts/tests/teardown.js', }; diff --git a/package-lock.json b/package-lock.json index 78435b51a..ae35c1469 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,19 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "7zip-bin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.0.3.tgz", + "integrity": "sha512-GLyWIFBbGvpKPGo55JyRZAo4lVbnBiD52cKlw/0Vt+wnmKvWJkpZvsjVoaIolyBXDeAQKSicRtqFNPem9w0WYA==" + }, + "7zip-min": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/7zip-min/-/7zip-min-1.1.1.tgz", + "integrity": "sha512-GPTk3xycxB0NjRM1SKAUL7TWXjgFAyzwXkamkk5YgSLd6OneeWBw+fxULctrVr4XqPBBh+LyqpHlyj9ryfpqoQ==", + "requires": { + "7zip-bin": "^5.0.3" + } + }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", @@ -1107,6 +1120,19 @@ } } }, + "@nodegui/artifact-installer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nodegui/artifact-installer/-/artifact-installer-1.0.0.tgz", + "integrity": "sha512-qKtlsXgO/fNppgVfkuTkHmgALZQgppjvJ5XJg3+J90SeIQBri1KRk8H/3CgKL/MmXsDJkvWftQrX9BmZ9uKv+Q==", + "requires": { + "7zip-min": "^1.1.1", + "empty-dir": "^2.0.0", + "env-paths": "^2.2.0", + "make-dir": "^3.0.0", + "node-fetch": "^2.6.0", + "progress": "^2.0.3" + } + }, "@nodegui/qode": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@nodegui/qode/-/qode-2.0.3.tgz", @@ -2620,6 +2646,11 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "empty-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/empty-dir/-/empty-dir-2.0.0.tgz", + "integrity": "sha512-XAedXlNAQZxMmbllXY9cxuESlNVjZ8xd67bSIUZwbS7VoLyhlNehVN3Iy35yDTGFHKR1opBRgORkp3am0so+WQ==" + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -6965,7 +6996,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, "requires": { "semver": "^6.0.0" }, @@ -6973,8 +7003,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, diff --git a/package.json b/package.json index b6dc517c9..d6e46335c 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "private": false, "scripts": { "dev": "cross-env npm run build && qode dist/demo.js", + "preinstall": "node ./scripts/preinstall.js", "build": "cross-env tsc && npm run build:addon", "postinstall": "cross-env node ./scripts/skip.js || npm run prebuild:install || npm run build:addon", "build:addon": "cross-env CMAKE_BUILD_PARALLEL_LEVEL=8 cmake-js build", @@ -19,6 +20,7 @@ "docs": "cross-env typedoc && node ./website/docs/scripts/fixdocs.js" }, "dependencies": { + "@nodegui/artifact-installer": "^1.0.0", "@nodegui/qode": "^2.0.1", "cmake-js": "^6.0.0", "cross-env": "^7.0.0", diff --git a/scripts/preinstall.js b/scripts/preinstall.js index 1184f8ec8..ac0ab4457 100644 --- a/scripts/preinstall.js +++ b/scripts/preinstall.js @@ -1,14 +1,20 @@ #!/usr/bin/env node const { setupArtifact } = require('@nodegui/artifact-installer'); -const { miniQt } = require('./config'); +const { miniQt, useCustomQt, qtHome } = require('./qtConfig'); -setupArtifact({ - outDir: miniQt.setupDir, - id: 'nodegui-mini-qt', - displayName: `Minimal Qt ${miniQt.version} installation`, - downloadLink: miniQt.downloadLink, -}).catch(err => { - console.error(err); - process.exit(1); -}); +if (!useCustomQt) { + console.log(`Minimal Qt ${miniQt.version} setup:`); + + setupArtifact({ + outDir: miniQt.setupDir, + id: 'nodegui-mini-qt', + displayName: `Minimal Qt ${miniQt.version} installation`, + downloadLink: miniQt.downloadLink, + }).catch(err => { + console.error(err); + process.exit(1); + }); +} else { + console.log(`CustomQt detected at ${qtHome} . Hence, skipping Mini Qt installation...`); +} diff --git a/scripts/config.js b/scripts/qtConfig.js similarity index 90% rename from scripts/config.js rename to scripts/qtConfig.js index 1931e421d..e4a1f9066 100644 --- a/scripts/config.js +++ b/scripts/qtConfig.js @@ -28,10 +28,11 @@ switch (os.platform()) { } } -const qtHome = process.env.CUSTOM_QT_DIR ? process.env.CUSTOM_QT_DIR : miniQt.qtHome; +const qtHome = process.env.QT_INSTALL_DIR ? process.env.QT_INSTALL_DIR : miniQt.qtHome; module.exports = { qtHome, qtCmakeDir: path.resolve(qtHome, 'lib', 'cmake', 'Qt5'), miniQt, + useCustomQt: Boolean(process.env.QT_INSTALL_DIR), }; diff --git a/config/tests/setup.js b/scripts/tests/setup.js similarity index 100% rename from config/tests/setup.js rename to scripts/tests/setup.js diff --git a/config/tests/teardown.js b/scripts/tests/teardown.js similarity index 100% rename from config/tests/teardown.js rename to scripts/tests/teardown.js