Hi, because (sometime) i’m kind
I will offer you a tips for next release of MagicMirror (it’s comes 01/01/2022)
Some modules need library linked to MagicMirror and do electron-rebuild
step.
- Last
electron-rebuild
package is actually not really ready for MagicMirror using (install many package not used)
- Last package is not really ready for raspberry pi, and rebuild build will failed
- problems with SSL
- Problems with sub-dependencies (
lzma-native
can failed on build)
So ?
- I just write the new rebuild library dedicated to MagicMirror
- I will maintened it (For my modules and yours if you want)
- It will use exactly what MagicMirror needs (and ONLY that)
- it will replace the
electron-rebuild
package
What’s this new library ?
- This library is
magicmirror-rebuild
- You can use it directly in your
package.json
file
"dependencies": {
"magicmirror-rebuild": "^1.0.0",
....
}
- You can install it directly with this command in a module directory:
npm i magicmirror-rebuild
- you can ask the rebuild step of MagicMirror (electron) with this command (in a module root directory)
./node_modules/.bin/MagicMirror-rebuild
Sample with MagicMirror v2.18 and MMM-PIR-Sensor
module
bugsounet@debian:~/MagicMirror/modules/MMM-PIR-Sensor$ npm install
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
> epoll@4.0.1 install /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll
> node-gyp rebuild
make : on entre dans le répertoire « /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/build »
CXX(target) Release/obj.target/epoll/src/epoll.o
SOLINK_MODULE(target) Release/obj.target/epoll.node
COPY Release/epoll.node
make : on quitte le répertoire « /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/build »
> Magic-Mirror-Module-PIR-Sensor@1.1.0 postinstall /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor
> electron-rebuild -e ../../node_modules/electron
⠋ Searching dependency tree
An unhandled error occurred inside electron-rebuild
Could not detect abi for version 16.0.5 and runtime electron. Updating "node-abi" might help solve this issue if it is a new release of electron
Error: Could not detect abi for version 16.0.5 and runtime electron. Updating "node-abi" might help solve this issue if it is a new release of electron
at Object.getAbi (/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/node-abi/index.js:36:9)
at new Rebuilder (/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/electron-rebuild/lib/src/rebuild.js:126:48)
at rebuildWithOptions (/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/electron-rebuild/lib/src/rebuild.js:404:23)
at Object.doRebuild [as rebuild] (/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/electron-rebuild/lib/src/rebuild.js:427:16)
at /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/electron-rebuild/lib/src/cli.js:124:33
at Generator.next (<anonymous>)
at fulfilled (/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/electron-rebuild/lib/src/cli.js:6:58)
npm ERR! code ELIFECYCLE
npm ERR! errno 255
npm ERR! Magic-Mirror-Module-PIR-Sensor@1.1.0 postinstall: `electron-rebuild -e ../../node_modules/electron`
npm ERR! Exit status 255
npm ERR!
npm ERR! Failed at the Magic-Mirror-Module-PIR-Sensor@1.1.0 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/bugsounet/.npm/_logs/2021-12-23T12_20_03_436Z-debug.log
So the result is failed !
- Let’s install
magicmirror-rebuild
library
bugsounet@debian:~/MagicMirror/modules/MMM-PIR-Sensor$ npm i magicmirror-rebuild
npm notice created a lockfile as package-lock.json. You should commit this file.
+ magicmirror-rebuild@1.0.3
- Now try to execute
MagicMirror-rebuild
script for rebuild
bugsounet@debian:~/MagicMirror/modules/MMM-PIR-Sensor$ ./node_modules/.bin/MagicMirror-rebuild
⠼ MagicMirror Building module: epoll, Completed: 0gyp info find Python using Python version 3.9.2 found at "/usr/bin/python3"
⠴ MagicMirror Building module: epoll, Completed: 0gyp http GET https://www.electronjs.org/headers/v16.0.5/node-v16.0.5-headers.tar.gz
⠼ MagicMirror Building module: epoll, Completed: 0gyp http 200 https://www.electronjs.org/headers/v16.0.5/node-v16.0.5-headers.tar.gz
⠏ MagicMirror Building module: epoll, Completed: 0gyp http GET https://www.electronjs.org/headers/v16.0.5/SHASUMS256.txt
⠧ MagicMirror Building module: epoll, Completed: 0gyp http 200 https://www.electronjs.org/headers/v16.0.5/SHASUMS256.txt
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args '/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/magicmirror-rebuild/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/magicmirror-rebuild/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/16.0.5/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/16.0.5',
gyp info spawn args '-Dnode_gyp_dir=/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/magicmirror-rebuild/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/16.0.5/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
⠋ MagicMirror Building module: epoll, Completed: 0gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make : on entre dans le répertoire « /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/build »
CXX(target) Release/obj.target/epoll/src/epoll.o
⠸ MagicMirror Building module: epoll, Completed: 0 SOLINK_MODULE(target) Release/obj.target/epoll.node
⠼ MagicMirror Building module: epoll, Completed: 0 COPY Release/epoll.node
make : on quitte le répertoire « /home/bugsounet/MagicMirror/modules/MMM-PIR-Sensor/node_modules/epoll/build »
✔ MagicMirror Rebuild Complete
That you see MagicMirror Rebuild Complete
!
Your module is now installed correctly