thorium-reader
thorium-reader copied to clipboard
feature request: support for Apple Silicone (m1)
Please add arm64 binaries for the new Apple CPUs.
Not so easy, Thorium uses native C libraries binded with Node-API. But Leveldown and sqlite (DB) will be removed in the next major release (1.8). Let's see this at this moment.
As an alternative, R2 Swift Test App can be used on Apple Silicon.
I have no experience with Swift and how to compile this.
Any news of native arm64 for macOS?
Thorium is only distributed as a x86_64
Electron application, which runs fine on Apple Silicon (tested with MacBook Air M1). Rosetta emulation is automatically used under the hood, with very little performance impact. What problems are you facing with the Intel / AMD builds of Thorium?
Thorium can in fact be built for arm64
targets, especially with the upcoming v2 (currently in the develop
branch) which does not include LevelDown and SQLite3 native dependencies anymore. Explanation: a few versions back, the original complex DB backend was deprecated and replaced with a lightweight but adequately-efficient JSON-based persistent storage. Thorium v2 will mark the final removal of the PouchDB adapters, based on the assumption that by now most users will have had their data migrated to the new JSON store (by running previous Thorium releases which accessed the DB in read-only mode).
Development builds for Apple Silicon can quite easily be created from the develop
branch, but production builds include support for LCP protected-publications, necessitating the inclusion of a native lib which is not M1-ready yet.
Ok, I will try to compile it myself. Please be aware that for macOS Intel x86_64 is no longer the primary platform, in fact it is discontinued. Rosetta is just an emulation available for running old binaries. This is a very nice project, it would be nice to keep it up to date with the present.
+1 @danielweck @panaC I am unable to install rosetta2 due to security concerns and bugs I encountered. I is not removable, and therefore I did have to reset my machine to get it off my system.
A native version would be very much appreciated. Please take a further look into it if you can.
Hello @tobomobo
The Thorium dev team is tiny (less than 2 FTE software engineers) so we are currently reluctant to introduce another platform in our official build matrix (this is also why support for 32 bits Windows and Linux is not provided off-the-shelf).
What are the security concerns and bugs you encountered with Rosetta?
PS: building Thorium from this open source codebase is not too dificult, would you consider creating your own M1 / Apple Silicon build?
-
git clone https://github.com/edrlab/thorium-reader.git
-
cd thorium-reader
-
npm i --arch=arm64
-
npm run start
(this step is optional, you can skip to step (5) if you do not want to try compiling and launching the app first) -
npm run package:mac
(this creates the DMG MacOS installer)
@danielweck
Hey Daniel,
thanks for your prompt reply. I understand that your resources are more than limited and making a universal or native macOS build is not a priority right now.
I also thank you for the tutorial you wrote me on how to build my own native release. Unfortunately, the output was still non-native release, even though I triple checked my work to the best of my knowledge.
The npm i --arch=arm64
warned me about "30 vulnerabilities (18 moderate, 12 high)" and I even tried to fix them with the recommended npm audit fix
.
> [email protected] postinstall
> npm run pinCompromisedColorPackage && npm run electron-build
> [email protected] pinCompromisedColorPackage
> (npm ls colors || echo "NPM LS?") && rimraf node_modules/electron-rebuild/node_modules/colors && rimraf node_modules/dir-compare/node_modules/colors
[email protected] /Users/tg/thorium/thorium-reader
└─┬ [email protected]
└─┬ [email protected]
└─┬ @electron/[email protected]
└─┬ [email protected]
└── [email protected]
> [email protected] electron-build
> electron-rebuild --version=19.0.1 --disturl=https://electronjs.org/headers
✔ Rebuild Complete
up to date, audited 2351 packages in 9s
189 packages are looking for funding
run `npm fund` for details
30 vulnerabilities (18 moderate, 12 high)
To address issues that do not require attention, run:
npm audit fix
To address all issues possible (including breaking changes), run:
npm audit fix --force
Some issues need review, and may require choosing
a different dependency.
Run `npm audit` for details.
Nevertheless, the output of the 5th command npm run package:mac
was an intel binary.
npm run package:mac > [email protected] prepackage:mac > npm run package:build > [email protected] prepackage:build > npm run clean > [email protected] clean > rimraf dist && rimraf release > [email protected] package:build > cross-env PACKAGING=1 npm run build:prod > [email protected] build:prod > npm run lint && npm run build > [email protected] lint > npm run lint:editorconfig && npm run lint:ts && npm run lint:css > [email protected] lint:editorconfig > eclint check '**/*' '!**/package-lock.json' '!changelogs/**/*' '!.vscode/**/*' '!.git/**/*' '!node_modules/**/*' '!resources/**/*' '!src/renderer/assets/**/*' '!dist/**/*' '!release/**/*' '!**/.DS_Store' '!src/typings/en.translation.d.*' '!src/main/w3c/**' '!src/resources/**/*' '!src/**/*.bcmap' '!src/**/*.svg' > [email protected] lint:ts > eslint "src/**/*.{ts,tsx}" > [email protected] lint:css > stylelint "src/renderer/assets/styles/**/*.css" > [email protected] build > cross-env NODE_ENV=production webpack --config webpack.config.js && ncp src/package.json dist/package.json PREPROCESSOR nodeEnv: production MAIN nodeEnv: production WEBPACK externals (MAIN): -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "bindings": "bindings", "fsevents": "fsevents", "electron-devtools-installer": "electron-devtools-installer", "remote-redux-devtools": "remote-redux-devtools", "electron": "electron", "yargs": "yargs" } LIBRARY nodeEnv: production WEBPACK externals (LIBRARY): -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "bindings": "bindings", "fsevents": "fsevents", "electron-devtools-installer": "electron-devtools-installer", "remote-redux-devtools": "remote-redux-devtools", "electron": "electron", "yargs": "yargs" } READER nodeEnv: production WEBPACK externals (READER): -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "bindings": "bindings", "fsevents": "fsevents", "electron-devtools-installer": "electron-devtools-installer", "remote-redux-devtools": "remote-redux-devtools", "electron": "electron", "yargs": "yargs" } PDF nodeEnv: production WEBPACK externals (PDF): -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- { "bindings": "bindings", "fsevents": "fsevents", "electron-devtools-installer": "electron-devtools-installer", "remote-redux-devtools": "remote-redux-devtools", "electron": "electron", "yargs": "yargs" } PRELOAD nodeEnv: production -------------------- LIBRARY config: { entry: './src/renderer/library/index_library.ts', name: 'renderer index app', output: { filename: 'index_library.js', path: '/Users/tg/thorium/thorium-reader/dist', libraryTarget: 'commonjs2' }, target: 'electron-renderer', mode: 'production', externalsPresets: { node: true }, externals: { bindings: 'bindings', fsevents: 'fsevents', 'electron-devtools-installer': 'electron-devtools-installer', 'remote-redux-devtools': 'remote-redux-devtools', electron: 'electron', yargs: 'yargs' }, externalsType: 'commonjs', experiments: { outputModule: false }, resolve: { extensions: [ '.ts', '.tsx', '.js', '.jsx' ], alias: { 'readium-desktop': '/Users/tg/thorium/thorium-reader/src', '@r2-utils-js': 'r2-utils-js/dist/es8-es2017/src', '@r2-lcp-js': 'r2-lcp-js/dist/es8-es2017/src', '@r2-opds-js': 'r2-opds-js/dist/es8-es2017/src', '@r2-shared-js': 'r2-shared-js/dist/es8-es2017/src', '@r2-streamer-js': 'r2-streamer-js/dist/es8-es2017/src', '@r2-navigator-js': 'r2-navigator-js/dist/es8-es2017/src' } }, stats: {}, module: { rules: [ { test: /\.(jsx?|tsx?)$/, use: [ { loader: '/Users/tg/thorium/thorium-reader/scripts/webpack-loader-scope-checker.js', options: { forbid: 'reader' } } ] }, { test: /\.tsx$/, loader: 'ts-loader', options: { transpileOnly: true } }, { test: /\.ts$/, use: [ { loader: 'babel-loader', options: { presets: [], plugins: [ 'macros' ] } }, { loader: 'ts-loader', options: { transpileOnly: true } } ] }, { test: /\.(png|jpe?g|gif|ico)$/, type: 'asset/resource', generator: { filename: 'assets/[name].[md5:hash].[ext]' } }, { exclude: /node_modules/, loader: 'svg-sprite-loader', test: /\.svg$/ }, { exclude: /src/, test: /\.(woff|woff2|ttf|eot|svg)$/, type: 'asset/resource', generator: { filename: 'assets/[name].[md5:hash].[ext]' } }, { exclude: /node_modules/, test: /\.md$/, use: [ { loader: 'html-loader' }, { loader: 'markdown-loader' } ] }, { test: /\.css$/, use: [ { loader: '/Users/tg/thorium/thorium-reader/node_modules/mini-css-extract-plugin/dist/loader.js', options: { esModule: false } }, { loader: 'css-loader', options: { import: { filter: [Function: filter] }, importLoaders: 1, modules: { localIdentName: '[local]' }, esModule: false } }, 'postcss-loader' ] } ] }, devServer: { static: { directory: '/Users/tg/thorium/thorium-reader', publicPath: '/', watch: { ignored: [ /dist/, /docs/, /scripts/, /test/, /node_modules/, /external-assets/ ] } }, devMiddleware: { publicPath: '/' }, hot: true }, plugins: [ BundleAnalyzerPlugin { opts: { analyzerMode: 'disabled', analyzerHost: '127.0.0.1', reportFilename: null, reportTitle: [Function (anonymous)], defaultSizes: 'stat', openAnalyzer: false, generateStatsFile: true, statsFilename: 'stats_renderer-library.json', statsOptions: null, excludeAssets: null, logLevel: 'info', startAnalyzer: true, analyzerPort: 8888 }, server: null, logger: Logger { activeLevels: Set(4) { 'info', 'warn', 'error', 'silent' } } }, HtmlWebpackPlugin { userOptions: { template: './src/renderer/library/index_library.ejs', filename: 'index_library.html' }, version: 5 }, DefinePlugin { definitions: { __APP_VERSION__: '"2.1.0-alpha.1"', __APP_NAME__: '"Thorium"', __GIT_BRANCH__: '"develop"', __GIT_DATE__: '"2022-06-08T16:40:27.000Z"', __GIT_SHORT__: '"fec61ed"', __NODE_ENV__: '"production"', __VSCODE_LAUNCH__: '"false"', __NODE_MODULE_RELATIVE_URL__: '"node_modules"', __DIST_RELATIVE_URL__: '"dist"', __PACKAGING__: '"1"', __RENDERER_LIBRARY_BASE_URL__: '"file://"', __RENDERER_READER_BASE_URL__: '"file://"', __RENDERER_PDF_WEBVIEW_BASE_URL__: '"file://"', __CONTINUOUS_INTEGRATION_DEPLOY__: 'false' } }, ForkTsCheckerWebpackPlugin, MiniCssExtractPlugin { _sortedModulesCache: WeakMap { <items unknown> }, options: { filename: 'styles_library.css', ignoreOrder: false, experimentalUseImportModule: undefined, runtime: true, chunkFilename: '[id].styles_library.css' }, runtimeOptions: { insert: undefined, linkType: 'text/css', attributes: undefined } }, IgnorePlugin { options: { resourceRegExp: /^devtron$/ }, checkIgnore: [Function: bound checkIgnore] }, IgnorePlugin { options: { resourceRegExp: /^react-axe$/ }, checkIgnore: [Function: bound checkIgnore] } ], optimization: { minimize: true, minimizer: [ TerserPlugin { options: { test: /\.[cm]?js(\?.*)?$/i, extractComments: false, parallel: true, include: undefined, exclude: /MathJax/, minimizer: { implementation: [AsyncFunction: terserMinify] { getMinimizerVersion: [Function (anonymous)] }, options: { compress: false, mangle: false, output: { comments: false } } } } } ] } } Webpack Bundle Analyzer saved stats file to /Users/tg/thorium/thorium-reader/dist/stats_renderer-pdf.json POSTCSS IMPORT? =====> ./partials/variables.css false POSTCSS IMPORT? =====> ./partials/mixins.css true POSTCSS IMPORT? =====> ../partials/mixins.css true POSTCSS IMPORT? =====> ../partials/mixins.css true POSTCSS IMPORT? =====> ./partials/focus.css false css-loader IMPORT (LIBRARY): ./partials/variables.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/global.css css-loader IMPORT (LIBRARY): ./partials/focus.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/global.css POSTCSS IMPORT? =====> ./focus-mixin.css true POSTCSS IMPORT? =====> ./focus.css false POSTCSS IMPORT? =====> ./variable.css false css-loader IMPORT (READER): ./focus.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/reader-app.css css-loader IMPORT (READER): ./variable.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/reader-app.css POSTCSS IMPORT? =====> ./partials/variables.css false POSTCSS IMPORT? =====> ./partials/mixins.css true POSTCSS IMPORT? =====> ../partials/mixins.css true POSTCSS IMPORT? =====> ./partials/mixins.css true POSTCSS IMPORT? =====> ./partials/focus.css false css-loader IMPORT (READER): ./partials/variables.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/global.css css-loader IMPORT (READER): ./partials/focus.css undefined /Users/tg/thorium/thorium-reader/src/renderer/assets/styles/global.css POSTCSS IMPORT? =====> ../partials/mixins.css true POSTCSS IMPORT? =====> ./mixins.css true Webpack Bundle Analyzer saved stats file to /Users/tg/thorium/thorium-reader/dist/stats_renderer-preload.json POSTCSS IMPORT? =====> ./focus-mixin.css true POSTCSS IMPORT? =====> ./mixins.css true Webpack Bundle Analyzer saved stats file to /Users/tg/thorium/thorium-reader/dist/stats_renderer-library.json Webpack Bundle Analyzer saved stats file to /Users/tg/thorium/thorium-reader/dist/stats_renderer-reader.json Webpack Bundle Analyzer saved stats file to /Users/tg/thorium/thorium-reader/dist/stats_main.json main: assets by path assets/ 10.4 MiB 256 assets assets by path MathJax/ 23 MiB assets by path MathJax/es5/ 23 MiB 106 assets asset MathJax/LICENSE 11.1 KiB [emitted] [from: node_modules/mathjax/LICENSE] [copied] asset MathJax/README.md 9.65 KiB [emitted] [from: node_modules/mathjax/README.md] [copied] asset MathJax/package.json 2.71 KiB [emitted] [from: node_modules/mathjax/package.json] [copied] assets by path ReadiumCSS/ 404 KiB 18 assets assets by path *.js 6.66 MiB asset main.js 6.65 MiB [emitted] [minimized] (name: main) asset 713.main.js 6.74 KiB [emitted] [minimized] asset external-assets/README.md 41 bytes [emitted] [from: external-assets/README.md] [copied] orphan modules 1.32 MiB [orphan] 756 modules runtime modules 3.88 KiB 10 modules javascript modules 8.98 MiB modules by path ./node_modules/ 7.74 MiB 1316 modules modules by path ./src/ 1.24 MiB modules by path ./src/main/ 23.1 KiB 2 modules + 2 modules + 26 modules json modules 500 KiB modules by path ./node_modules/har-schema/lib/ 6.93 KiB 18 modules modules by path ./node_modules/iconv-lite/ 86.7 KiB 8 modules modules by path ./node_modules/ajv/lib/ 5.58 KiB 3 modules modules by path ./node_modules/jsdom/ 7.38 KiB 2 modules modules by path ./node_modules/whatwg-encoding/lib/ 5.54 KiB 2 modules + 5 modules WARNING in ./node_modules/ws/lib/buffer-util.js 103:21-42 Module not found: Error: Can't resolve 'bufferutil' in '/Users/tg/thorium/thorium-reader/node_modules/ws/lib' @ ./node_modules/ws/lib/sender.js 12:38-62 @ ./node_modules/ws/index.js 8:19-42 @ ./node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js 7:18-31 @ ./node_modules/jsdom/lib/jsdom/browser/Window.js 21:22-83 @ ./node_modules/jsdom/lib/api.js 13:25-61 @ ./src/main/w3c/audiobooks/entry.ts 2:0-30 33:14-19 @ ./src/main/redux/sagas/api/publication/packager/packageLink.ts 8:0-101 201:50-90 @ ./src/main/redux/sagas/api/publication/import/importFromString.ts 3:0-68 7:34-59 @ ./src/main/redux/sagas/api/publication/import/index.ts 10:0-61 54:48-71 @ ./src/main/redux/sagas/api/publication/index.ts 7:0-74 19:2-14 20:2-16 21:2-18 @ ./src/main/redux/sagas/api/index.ts 1:0-30 1:0-30 @ ./src/main/di.ts 25:0-67 27:0-46 114:65-79 116:60-69 117:65-79 @ ./src/main/start.ts 2:0-52 9:35-44 15:16-33 @ ./src/main.ts 9:0-37 25:2-7 WARNING in ./node_modules/ws/lib/validation.js 109:22-47 Module not found: Error: Can't resolve 'utf-8-validate' in '/Users/tg/thorium/thorium-reader/node_modules/ws/lib' @ ./node_modules/ws/lib/sender.js 11:30-53 @ ./node_modules/ws/index.js 8:19-42 @ ./node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js 7:18-31 @ ./node_modules/jsdom/lib/jsdom/browser/Window.js 21:22-83 @ ./node_modules/jsdom/lib/api.js 13:25-61 @ ./src/main/w3c/audiobooks/entry.ts 2:0-30 33:14-19 @ ./src/main/redux/sagas/api/publication/packager/packageLink.ts 8:0-101 201:50-90 @ ./src/main/redux/sagas/api/publication/import/importFromString.ts 3:0-68 7:34-59 @ ./src/main/redux/sagas/api/publication/import/index.ts 10:0-61 54:48-71 @ ./src/main/redux/sagas/api/publication/index.ts 7:0-74 19:2-14 20:2-16 21:2-18 @ ./src/main/redux/sagas/api/index.ts 1:0-30 1:0-30 @ ./src/main/di.ts 25:0-67 27:0-46 114:65-79 116:60-69 117:65-79 @ ./src/main/start.ts 2:0-52 9:35-44 15:16-33 @ ./src/main.ts 9:0-37 25:2-7 2 warnings have detailed information that is not shown. Use 'stats.errorDetails: true' resp. '--stats-error-details' to show it. main (webpack 5.73.0) compiled with 2 warnings in 18429 ms renderer index app: asset index_library.js 1.7 MiB [emitted] [minimized] (name: main) asset styles_library.css 51.8 KiB [emitted] (name: main) asset index_library.html 353 bytes [emitted] Entrypoint main 1.75 MiB = styles_library.css 51.8 KiB index_library.js 1.7 MiB orphan modules 1.55 MiB [orphan] 841 modules runtime modules 2.15 KiB 6 modules built modules 2.72 MiB (javascript) 51.8 KiB (css/mini-extract) [built] modules by path ./node_modules/ 1.41 MiB 230 modules modules by path ./src/renderer/ 1.31 MiB (javascript) 51.8 KiB (css/mini-extract) modules by path ./src/renderer/assets/styles/components/*.css 5.15 KiB (javascript) 36 KiB (css/mini-extract) 24 modules modules by path ./src/renderer/assets/styles/*.css 2.33 KiB (javascript) 14.1 KiB (css/mini-extract) 12 modules modules by path ./src/renderer/assets/styles/partials/*.css 1.62 KiB css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[7].use[1]!./node_modules/postcss-loader/dist/cjs.js!./src/renderer/assets/styles/partials/variables.css 391 bytes [built] [code generated] css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[7].use[1]!./node_modules/postcss-loader/dist/cjs.js!./src/renderer/assets/styles/partials/focus.css 1.24 KiB [built] [code generated] ./src/renderer/library/index_library.ts + 626 modules 1.3 MiB [not cacheable] [built] [code generated] external "util" 42 bytes [built] [code generated] external "path" 42 bytes [built] [code generated] external "tty" 42 bytes [built] [code generated] external "querystring" 42 bytes [built] [code generated] renderer index app (webpack 5.73.0) compiled successfully in 14575 ms renderer index reader: asset index_reader.js 2.64 MiB [emitted] [minimized] (name: main) asset styles_reader.css 66.3 KiB [emitted] (name: main) asset index_reader.html 350 bytes [emitted] Entrypoint main 2.71 MiB = styles_reader.css 66.3 KiB index_reader.js 2.64 MiB orphan modules 3.14 MiB [orphan] 856 modules runtime modules 2.49 KiB 7 modules built modules 4.69 MiB (javascript) 66.3 KiB (css/mini-extract) [built] modules by path ./node_modules/ 1.81 MiB 257 modules modules by path ./src/renderer/ 2.88 MiB (javascript) 66.3 KiB (css/mini-extract) modules by path ./src/renderer/assets/styles/ 8.96 KiB (javascript) 66.3 KiB (css/mini-extract) 28 modules modules by path ./src/renderer/reader/ 2.88 MiB ./src/renderer/reader/index_reader.ts + 643 modules 2.88 MiB [not cacheable] [built] [code generated] ./src/renderer/reader/pdf/common/eventBus.ts 829 bytes [built] [code generated] external "electron" 42 bytes [built] [code generated] external "path" 42 bytes [built] [code generated] external "util" 42 bytes [built] [code generated] external "url" 42 bytes [built] [code generated] external "querystring" 42 bytes [built] [code generated] external "tty" 42 bytes [built] [code generated] renderer index reader (webpack 5.73.0) compiled successfully in 15717 ms renderer pdf webview index: asset index_pdf.js 19.9 KiB [emitted] [minimized] (name: main) runtime modules 1.25 KiB 5 modules orphan modules 4.59 KiB [orphan] 4 modules built modules 28.7 KiB [built] modules by path ./node_modules/ 16.8 KiB modules by path ./node_modules/debug/src/*.js 12 KiB ./node_modules/debug/src/browser.js 5.87 KiB [built] [code generated] ./node_modules/debug/src/common.js 6.14 KiB [built] [code generated] ./node_modules/debounce/index.js 1.8 KiB [built] [code generated] ./node_modules/ms/index.js 2.95 KiB [built] [code generated] modules by path ./src/renderer/reader/pdf/ 12 KiB ./src/renderer/reader/pdf/webview/index_pdf.ts + 4 modules 11.2 KiB [not cacheable] [built] [code generated] ./src/renderer/reader/pdf/common/eventBus.ts 829 bytes [built] [code generated] renderer pdf webview index (webpack 5.73.0) compiled successfully in 8608 ms renderer webview preload: asset preload.js 372 KiB [emitted] [minimized] (name: main) runtime modules 670 bytes 3 modules cacheable modules 562 KiB modules by path ./node_modules/r2-navigator-js/dist/es8-es2017/src/electron/ 377 KiB 27 modules modules by path ./node_modules/sentence-splitter/lib/ 31.1 KiB 10 modules modules by path ./node_modules/@xmldom/xmldom/lib/*.js 84.6 KiB 6 modules modules by path ./node_modules/debug/src/*.js 16.6 KiB 3 modules modules by path ./node_modules/structured-source/lib/*.js 12.5 KiB 2 modules + 9 modules external "electron" 42 bytes [built] [code generated] external "path" 42 bytes [built] [code generated] external "crypto" 42 bytes [built] [code generated] external "util" 42 bytes [built] [code generated] external "tty" 42 bytes [built] [code generated] external "querystring" 42 bytes [built] [code generated] renderer webview preload (webpack 5.73.0) compiled successfully in 8571 ms > [email protected] package:mac > cross-env DEBUG=* electron-builder --mac --x64 --publish never • electron-builder version=23.0.3 os=21.5.0 • loaded configuration file=package.json ("build" field) • effective config config=directories: output: release buildResources: resources app: dist productName: Thorium appId: io.github.edrlab.thorium protocols: name: thorium schemes: - thorium - opds afterSign: scripts/notarize.js dmg: sign: false contents: - x: 410 'y': 150 type: link path: /Applications - x: 130 'y': 150 type: file files: - filter: - node_modules/ - external-assets/ - assets/ - ReadiumCSS/ - MathJax/ - index_pdf.js - index_library.html - index_library.js - index_reader.html - index_reader.js - styles_library.css - styles_reader.css - preload.js - main.js - package.json - fonts asarUnpack: - '**/*.node' - '**/lcp.node' fileAssociations: - ext: epub role: Viewer mimeType: application/epub+zip - ext: epub3 role: Viewer mimeType: application/epub+zip - ext: daisy role: Viewer mimeType: application/daisy+zip - ext: lcpl role: Viewer mimeType: application/vnd.readium.lcp.license.v1.0+json - ext: audiobook role: Viewer mimeType: application/audiobook+zip - ext: webpub role: Viewer mimeType: application/webpub+zip - ext: lcpa role: Viewer mimeType: application/audiobook+lcp - ext: lcpaudiobook role: Viewer mimeType: application/audiobook+lcp - ext: lcpdf role: Viewer mimeType: application/pdf+lcp win: target: - appx - nsis icon: dist/assets/icons/icon.ico linux: target: - deb - AppImage desktop: MimeType: application/epub+zip executableName: thorium category: Office mac: category: public.app-category.developer-tools target: dmg type: distribution hardenedRuntime: true gatekeeperAssess: false entitlements: ./scripts/entitlements.mac.plist entitlementsInherit: ./scripts/entitlements.mac.plist appx: displayName: Thorium Reader publisher: CN=C91F86A8-45E6-48E0-8015-8A5BF2B38BD4 • two package.json structure is used devPackageFile=/Users/tg/thorium/thorium-reader/package.json appPackageFile=/Users/tg/thorium/thorium-reader/dist/package.json • writing effective config file=release/builder-effective-config.yaml • installing production dependencies platform=darwin arch=x64 appDir=/Users/tg/thorium/thorium-reader/dist • spawning command=/opt/homebrew/Cellar/node/18.3.0/bin/node /opt/homebrew/lib/node_modules/npm/bin/npm-cli.js install --production --prefer-offline cwd=/Users/tg/thorium/thorium-reader/dist npm WARN config production Use `--omit=dev` instead. agentkeepalive sock[0#registry.npmjs.org:443::::::::true:::::::::::::] create, timeout 300001ms +0ms agentkeepalive sock[0#registry.npmjs.org:443::::::::true:::::::::::::](requests: 1, finished: 1) free +461ms > [email protected] postinstall > npm run pinCompromisedColorPackage && npm run electron-build > [email protected] pinCompromisedColorPackage > (npm ls colors || echo "NPM LS?") && rimraf node_modules/electron-rebuild/node_modules/colors && rimraf node_modules/dir-compare/node_modules/colors [email protected] /Users/tg/thorium/thorium-reader/dist └── (empty) NPM LS? > [email protected] electron-build > electron-rebuild --version=19.0.1 --disturl=https://electronjs.org/headers ⠋ Searching dependency tree electron-rebuild rebuilding with args: [Arguments] { '0': { buildPath: '/Users/tg/thorium/thorium-reader/dist', electronVersion: '19.0.1', arch: 'arm64', extraModules: [], onlyModules: null, force: undefined, headerURL: undefined, types: [ 'prod', 'optional' ], mode: undefined, debug: undefined, prebuildTagPrefix: 'v', forceABI: undefined, useElectronClang: false, disablePreGypCopy: false, projectRootPath: '/Users/tg/thorium/thorium-reader/dist' } } +0ms electron-rebuild rebuilding with args: /Users/tg/thorium/thorium-reader/dist 19.0.1 arm64 Set(0) {} false https://www.electronjs.org/headers [ 'prod', 'optional' ] false +1ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/bindings +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/mathjax +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/yargs +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/file-uri-to-path +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/cliui +1ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/escalade +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/get-caller-file +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/require-directory +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/string-width +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/y18n +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/yargs-parser +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/strip-ansi +1ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/wrap-ansi +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/emoji-regex +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/is-fullwidth-code-point +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/ansi-regex +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/ansi-styles +0ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/color-convert +1ms electron-rebuild exploring /Users/tg/thorium/thorium-reader/dist/node_modules/color-name +0ms electron-rebuild identified prod deps: Set(0) { bindings: true, mathjax: true, yargs: true, 'file-uri-to-path': true, cliui: true, escalade: true, 'get-caller-file': true, 'require-directory': true, 'string-width': true, y18n: true, 'yargs-parser': true, 'strip-ansi': true, 'wrap-ansi': true, 'emoji-regex': true, 'is-fullwidth-code-point': true, 'ansi-regex': true, 'ansi-styles': true, 'color-convert': true, 'color-name': true } +0ms electron-rebuild scanning: /Users/tg/thorium/thorium-reader/dist/node_modules +1ms ✔ Rebuild Complete added 19 packages, and audited 20 packages in 1s 2 packages are looking for funding run `npm fund` for details found 0 vulnerabilities • exited command=node code=0 pid=12521 • packaging platform=darwin arch=x64 electron=19.0.3 appOutDir=release/mac • spawning command=/Users/tg/thorium/thorium-reader/node_modules/app-builder-bin/mac/app-builder_arm64 unpack-electron --configuration [{"platform":"darwin","arch":"x64","version":"19.0.3"}] --output /Users/tg/thorium/thorium-reader/release/mac --distMacOsAppName Electron.app • map async taskCount=2 • map async taskCount=1 • map async taskCount=257 • exited command=app-builder_arm64 code=0 pid=12607 • spawning command=/Users/tg/thorium/thorium-reader/node_modules/app-builder-bin/mac/app-builder_arm64 node-dep-tree --dir /Users/tg/thorium/thorium-reader/dist • unresolved deps unresolved=string-widthstrip-ansi nodeModuleDir=/Users/tg/thorium/thorium-reader/node_modules round=0 • unresolved deps unresolved=string-widthstrip-ansi nodeModuleDir=/Users/tg/thorium/thorium-reader/node_modules round=0 • unresolved deps unresolved=emoji-regexis-fullwidth-code-point nodeModuleDir=/Users/tg/thorium/thorium-reader/node_modules round=0 • exited command=app-builder_arm64 code=0 pid=12612 out=[{"dir":"/Users/tg/thorium/thorium-reader/node_modules","deps":[{"name":"ansi-regex","version":"5.0.1"},{"name":"emoji-regex","version":"7.0.3"},{"name":"is-fullwidth-code-point","version":"2.0.0"},{"name":"string-width","version":"3.1.0"},{"name":"strip-ansi","version":"6.0.1"}]},{"dir":"/Users/tg/thorium/thorium-reader/dist/node_modules","deps":[{"name":"ansi-regex","version":"5.0.1"},{"name":"ansi-styles","version":"4.3.0"},{"name":"bindings","version":"1.5.0"},{"name":"cliui","version":"7.0.4"},{"name":"color-convert","version":"2.0.1"},{"name":"color-name","version":"1.1.4"},{"name":"emoji-regex","version":"8.0.0"},{"name":"escalade","version":"3.1.1"},{"name":"file-uri-to-path","version":"1.0.0"},{"name":"get-caller-file","version":"2.0.5"},{"name":"is-fullwidth-code-point","version":"3.0.0"},{"name":"mathjax","version":"3.2.2"},{"name":"require-directory","version":"2.1.1"},{"name":"string-width","version":"4.2.3"},{"name":"strip-ansi","version":"6.0.1"},{"name":"wrap-ansi","version":"7.0.0"},{"name":"y18n","version":"5.0.8"},{"name":"yargs","version":"17.5.1"},{"name":"yargs-parser","version":"21.0.1"}]},{"dir":"/Users/tg/thorium/thorium-reader/node_modules/string-width/node_modules","deps":[{"name":"ansi-regex","version":"4.1.1"},{"name":"strip-ansi","version":"5.2.0"}]}] • spawning command=/Users/tg/thorium/thorium-reader/node_modules/app-builder-bin/mac/app-builder_arm64 decode-plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper (Renderer).app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper (Plugin).app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Frameworks/Electron Helper (GPU).app/Contents/Info.plist -f /Users/tg/thorium/thorium-reader/release/mac/Electron.app/Contents/Library/LoginItems/Electron Login Helper.app/Contents/Info.plist • map async taskCount=8 • exited command=app-builder_arm64 code=0 pid=12613 out=[{"CFBundleExecutable":"Electron","CFBundleVersion":"19.0.3","LSApplicationCategoryType":"public.app-category.developer-tools","NSCameraUsageDescription":"This app needs access to the camera","CFBundleShortVersionString":"19.0.3","CFBundleName":"Electron","CFBundlePackageType":"APPL","DTCompiler":"com.apple.compilers.llvm.clang.1_0","LSEnvironment":{"MallocNanoZone":"0"},"NSPrincipalClass":"AtomApplication","CFBundleIdentifier":"com.github.Electron","NSHighResolutionCapable":true,"NSMicrophoneUsageDescription":"This app needs access to the microphone","CFBundleIconFile":"electron.icns","DTSDKBuild":"12.3","CFBundleDisplayName":"Electron","CFBundleInfoDictionaryVersion":"6.0","DTSDKName":"macosx12.3","DTXcodeBuild":"13E500a","NSBluetoothPeripheralUsageDescription":"This app needs access to Bluetooth","DTXcode":"1331","NSMainNibFile":"MainMenu","NSSupportsAutomaticGraphicsSwitching":true,"ElectronAsarIntegrity":{"Resources/default_app.asar":{"algorithm":"SHA256","hash":"c00bfa33b880e123a142938265ae353080b82dd45507be18421064e49440fa39"}},"LSMinimumSystemVersion":"10.11.0","NSAppTransportSecurity":{"NSAllowsArbitraryLoads":true},"NSBluetoothAlwaysUsageDescription":"This app needs access to Bluetooth","NSQuitAlwaysKeepsWindows":false,"NSRequiresAquaSystemAppearance":false},{"CFBundlePackageType":"APPL","DTSDKBuild":"12.3","DTXcodeBuild":"13E500a","LSEnvironment":{"MallocNanoZone":"0"},"LSUIElement":true,"CFBundleIdentifier":"com.github.Electron.helper","CFBundleName":"Electron Helper","DTCompiler":"com.apple.compilers.llvm.clang.1_0","DTSDKName":"macosx12.3","DTXcode":"1331","NSSupportsAutomaticGraphicsSwitching":true},null,null,{"CFBundleName":"Electron Helper (Renderer)","CFBundlePackageType":"APPL","DTSDKName":"macosx12.3","DTXcode":"1331","LSUIElement":true,"NSSupportsAutomaticGraphicsSwitching":true,"CFBundleIdentifier":"com.github.Electron.helper","DTCompiler":"com.apple.compilers.llvm.clang.1_0","DTSDKBuild":"12.3","DTXcodeBuild":"13E500a","LSEnvironment":{"MallocNanoZone":"0"}},{"DTCompiler":"com.apple.compilers.llvm.clang.1_0","DTSDKName":"macosx12.3","NSSupportsAutomaticGraphicsSwitching":true,"CFBundleIdentifier":"com.github.Electron.helper","CFBundleName":"Electron Helper (Plugin)","CFBundlePackageType":"APPL","DTSDKBuild":"12.3","DTXcode":"1331","DTXcodeBuild":"13E500a","LSEnvironment":{"MallocNanoZone":"0"},"LSUIElement":true},{"DTSDKBuild":"12.3","DTXcodeBuild":"13E500a","LSEnvironment":{"MallocNanoZone":"0"},"NSSupportsAutomaticGraphicsSwitching":true,"CFBundleIdentifier":"com.github.Electron.helper","CFBundleName":"Electron Helper (GPU)","CFBundlePackageType":"APPL","DTCompiler":"com.apple.compilers.llvm.clang.1_0","DTSDKName":"macosx12.3","DTXcode":"1331","LSUIElement":true},null] • spawning command=/Users/tg/thorium/thorium-reader/node_modules/app-builder-bin/mac/app-builder_arm64 icon --format icns --root /Users/tg/thorium/thorium-reader/resources --root /Users/tg/thorium/thorium-reader --out /Users/tg/thorium/thorium-reader/release/.icon-icns • path resolved path=/Users/tg/thorium/thorium-reader/resources/icon.icns outputFormat=icns • exited command=app-builder_arm64 code=0 pid=12614 out={"icons":[{"file":"/Users/tg/thorium/thorium-reader/resources/icon.icns","size":0}],"isFallback":false} • spawning command=/Users/tg/thorium/thorium-reader/node_modules/app-builder-bin/mac/app-builder_arm64 encode-plist • map async taskCount=5 • exited command=app-builder_arm64 code=0 pid=12615 • getPublishConfigsForUpdateInfo: no publishConfigs, detect using repository info electron-builder:publish getPublishConfigsForUpdateInfo: { electron-builder:publish "domain": "github.com", electron-builder:publish "type": "github", electron-builder:publish "user": "edrlab", electron-builder:publish "project": "readium-desktop" electron-builder:publish } +0ms • calling getInfo reason=owner or project is not specified explicitly provider=github owner=undefined project=undefined electron-builder:publish getPublishConfigsForUpdateInfo: resolve to publish config { electron-builder:publish "owner": "edrlab", electron-builder:publish "repo": "readium-desktop", electron-builder:publish "provider": "github" electron-builder:publish } +1ms • executing file=security args=find-identity -v • executing file=security args=find-identity -v -p 7af95cecdd0c3f541bcc912b113c3ed21ed9e4c7c32f40b73a00e2b19a9500f5 (sha256 hash) • executed file=security stdout= 0 valid identities found • executed file=security stdout= 0 valid identities found • executing file=security args=find-identity • executed file=security stdout= Policy: X.509 Basic Matching identities 0 identities found Valid identities only 0 valid identities found • skipped macOS application code signing reason=cannot find valid "Developer ID Application" identity or custom non-Apple code signing certificate, it could cause some undefined behaviour, e.g. macOS localized description not visible, see https://electron.build/code-signing allIdentities= 0 identities found Valid identities only 0 valid identities found electron-builder Error: Cannot find module 'scripts/notarize.js' electron-builder Require stack: electron-builder - /Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/out/platformPackager.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/out/electron/ElectronFramework.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/out/packager.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/out/index.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/electron-builder/out/builder.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/electron-builder/out/cli/cli.js electron-builder - /Users/tg/thorium/thorium-reader/node_modules/electron-builder/cli.js electron-builder at Function.Module._resolveFilename (node:internal/modules/cjs/loader:939:15) electron-builder at Function.resolve (node:internal/modules/cjs/helpers:108:19) electron-builder at resolveFunction (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/platformPackager.ts:759:17) electron-builder at MacPackager.doSignAfterPack (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/platformPackager.ts:330:23) electron-builder at MacPackager.doPack (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/platformPackager.ts:314:7) electron-builder at MacPackager.pack (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/macPackager.ts:179:7) electron-builder at Packager.doBuild (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/packager.ts:441:9) electron-builder at Object.executeFinally (/Users/tg/thorium/thorium-reader/node_modules/builder-util/src/promise.ts:12:14) electron-builder at Packager._build (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/packager.ts:376:31) electron-builder at Packager.build (/Users/tg/thorium/thorium-reader/node_modules/app-builder-lib/src/packager.ts:337:12) electron-builder at Object.executeFinally (/Users/tg/thorium/thorium-reader/node_modules/builder-util/src/promise.ts:12:14) +0ms electron-notarize notarizing using the legacy notarization system, this will be slow +0ms electron-notarize:legacy starting notarize process for app: /Users/tg/thorium/thorium-reader/release/mac/Thorium.app +0ms electron-notarize:helpers doing work inside temp dir: /var/folders/86/9gg3ppgn4gsdwq3fh0w37hvc0000gn/T/electron-notarize-rXbHUx +0ms electron-notarize:legacy zipping application to: /var/folders/86/9gg3ppgn4gsdwq3fh0w37hvc0000gn/T/electron-notarize-rXbHUx/Thorium.zip +1ms electron-notarize:spawn spawning cmd: ditto args: [ '-c', '-k', '--sequesterRsrc', '--keepParent', 'Thorium.app', '/var/folders/86/9gg3ppgn4gsdwq3fh0w37hvc0000gn/T/electron-notarize-rXbHUx/Thorium.zip' ] opts: { cwd: '/Users/tg/thorium/thorium-reader/release/mac' } +0ms electron-notarize:spawn cmd ditto terminated with code: 0 +8s electron-notarize:legacy zip succeeded, attempting to upload to Apple +8s electron-notarize:helpers work failed +8s ⨯ No authentication properties provided (e.g. appleId, appleApiKey) failedTask=build stackTrace=Error: No authentication properties provided (e.g. appleId, appleApiKey) at Object.validateLegacyAuthorizationArgs (/Users/tg/thorium/thorium-reader/node_modules/electron-notarize/src/validate-args.ts:59:9) at authorizationArgs (/Users/tg/thorium/thorium-reader/node_modules/electron-notarize/src/legacy.ts:17:16) at Object.<anonymous> (/Users/tg/thorium/thorium-reader/node_modules/electron-notarize/src/legacy.ts:58:10) at Generator.next (<anonymous>) at fulfilled (/Users/tg/thorium/thorium-reader/node_modules/electron-notarize/lib/legacy.js:4:58) at processTicksAndRejections (node:internal/process/task_queues:95:5) ´´´
![Screenshot 2022-06-10 at 08 26 28](https://user-images.githubusercontent.com/57799306/173004047-63297862-68eb-4d31-b11f-8188c824794c.png)
Me being a programming rookie is no secret, and therefore it is perfectly plausible that I made a mistake. I would very much appreciate If someone could take the time and point me in the right direction.
FYI: The bugs I encountered in rosetta2 have nothing to do with your software. I experienced a phantom power drain and therefore a hotter machine with much shorter battery life. We are talking 5 hours with only a browser open or 8 hours on idle on a base 14 inch MBP.
I couldn't point a finger at it when looking at the activity monitor, and all my apps were running native except some random system processes at times. Since I reinstalled my system without explicitly installing rosetta2, these issues don't occur anymore. All programs I used then and still have open now vs are identical.
TLDR: Problems with Rosetta2 are Bugs on Apple's side, not yours and they make rosetta2 unusable for me.
Sorry to be blunt, but if supporting macOS at all and only one platform, I just don't see the reason to support an old platform, the present and the future of macOS is arm64 not x86_64, x86_64 is dead from a macOS point of view.
the present and the future of macOS is arm64 not x86_64, x86_64 is dead from a macOS point of view.
Bold statement :)
I use both M1 and x86 Mac computers. I love the former (performance + battery life) and it is indeed the future. However Intel arch required for my x86 hardware-accelerated virtual machines, so far from obsolete (yet) PS: I was a PowerBook user shortly before Apple moved from its own "silicon" (PowerPC G4) to Intel !! ;)
Moving to a "discussion" (not an actionable issue right now, need to discuss ramifications with our native C/C++ lib)...