Read the statement by Michael Teeuw here.
electron-rebuild and MagicMirror v2.18 (and more)
-
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
modulebugsounet@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 - Last
-
Wow, thanks for sharing this!!!
Now, I’m back on track again :-) -
@bugsounet Thanks for this lib. Integrated it into two of my modules yesterday because I couldn’t get them compiled with electron-rebuild.
-
If it can help, it’s perfect ;)
I have do the same too for rebuild modulesbut don’t forget to delete
"electron-rebuild": "v.xxx",
from for package.json file ;)
because this old package is not needed now -
@hedmik : i just share (one of) my own library ;)
-
@bugsounet thank you very much, for weeks I am looking for a solution to finally be able to add an essential function to the mirror :thumbs_up:
-
@bugsounet THANK YOU! This saved me a lot of headaches. I went ahead and updated to 2.18 and got the exact error you reference in the exact same module. A quick search and I found your very helpful solution. Thank you for sharing.
-
I get an error when " ~/node_modules $ ~/.bin/MagicMirror-rebuild"
error=(an unhandled error occurred inside electron-rebuild)
unable to find electron’s version number of MagicMirror etc -
@lhops
Can or has anyone written code for an new MMM-PIR-Sensor module that will work will the new version of MagicMirror. If not is that something that your can do? I wish I knew more about the code I would do it myself. -
@lhops said in electron-rebuild and MagicMirror v2.18 (and more):
I get an error when " ~/node_modules $ ~/.bin/MagicMirror-rebuild"
execute
./node_modules/.bin/MagicMirror-rebuild
INSIDE the module directory ;)not inside other directory ;)
Note :- every module in MagicMirror is there:
cd ~/MagicMirror/modules
- After change again the directory to your wanted module,
forMMM-PIR-Sensor
module (for example):
cd MMM-PIR-Sensor
- after install
magicmirror-rebuild
npm i magicmirror-rebuild
- execute
MagicMirror-rebuild
program
./node_modules/.bin/MagicMirror-rebuild
-
you will see
MagicMirror Rebuild Complete
-
it’s done ;)