Use splatting in old batch loader super() calls

I think ruby 3.0 removed automatic conversion of keyword arguments, so the splat is needed to convert from a hash to keywords.

Codecov Report

Merging #2739 (d5f10ab) into development (7986ac6) will decrease coverage by 23.05%.
The diff coverage is 33.33%.

@@               Coverage Diff                @@
##           development    #2739       +/-   ##
================================================
- Coverage        87.20%   64.14%   -23.06%
================================================
  Files             1874     1384      -490
  Lines            65729    38870    -26859
================================================
- Hits             57317    24932    -32385
- Misses            8412    13938     +5526

Impacted Files
Coverage Δ

...ad/import/collection_objects/castor_interpreter.rb
8.33% <0.00%> (ø)

...atch_load/import/taxon_names/castor_interpreter.rb
15.59% <0.00%> (ø)

lib/taxonworks/version.rb
100.00% <100.00%> (ø)

spec/support/concerns/random_token_methods.rb
2.63% <0.00%> (-97.37%)
:arrow_down:

spec/support/concerns/request/api.rb
11.11% <0.00%> (-88.89%)
:arrow_down:

app/models/identifier/global/issn.rb
14.28% <0.00%> (-85.72%)
:arrow_down:

app/models/identifier/global/isbn.rb
8.33% <0.00%> (-85.42%)
:arrow_down:

app/models/protonym/becomes.rb
16.43% <0.00%> (-79.46%)
:arrow_down:

lib/catalog/description_from_observation_matrix.rb
13.22% <0.00%> (-78.52%)
:arrow_down:

app/models/identifier/global/orcid.rb
22.22% <0.00%> (-77.78%)
:arrow_down:

... and 1017 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update efd4bda...d5f10ab. Read the comment docs.

I think ruby 3.0 removed automatic conversion of keyword arguments, so the splat is needed to convert from a hash to keywords.

Thanks @LordFlashmeow. That's correct, we fixed code in several places but it seems we didn't catch them all yet.


Clarify that delay times are measured in seconds

It's not too clear in the readme at the moment that delay times are in seconds.
Am I right that they are? Looks like that's the case from http://api.rubyonrails.org/classes/ActiveJob/Enqueuing.html

I think it shouldn't matter - we should recommend using rails time methods on Fixnum (ie. 5.seconds, etc), which makes it unambiguous. What do you think]

That's what I'm doing in my implementation and is what most people probably will want!
Perhaps state that it's number of seconds, and use the Rails Fixnum methods in the examples? (Probably with a clarifying comment.)
Sent from my iPhone

On 27 Jun 2015, at 16:20, Isaac Seymour<EMAIL_ADDRESS>wrote:
I think it shouldn't matter - we should recommend using rails time methods on Fixnum (ie. 5.seconds, etc), which makes it unambiguous. What do you think]
—
Reply to this email directly or view it on GitHub.

Yeah, my only worry with this is that by saying it's in seconds it won't be clear that that can be produced using 5.seconds etc (I didn't know that all those methods just returned a number of seconds!) Using the ActiveSupport methods in the examples clears that up though I think :+

@isaacseymour Done! Happy to merge?

:+1: :+1: :+1:


Cannot build numpy in specific situation

Describe the bug
When the number of characters for the parent file path for the mobile-forge repo is sufficiently low, the numpy build fails.
File<EMAIL_ADDRESS>line 548, in run
with Popen(*popenargs, **kwargs) as process:
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File<EMAIL_ADDRESS>line 1026, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File<EMAIL_ADDRESS>line 1955, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/Users/marko/Documents/Repos/mobileforge2/build/cp311/numpy/1.26.2/venv3.11-ios_13_0_arm64_iphoneos/cross/bin/ninja'

ERROR Backend subprocess exited when trying to invoke get_requires_for_build_wheel
--------------------------------------------------------------------------------
<<< Return code: 1
********************************************************************************
Failed build: numpy 1.26.2 for iphoneos 13.0 on arm64
********************************************************************************
Traceback (most recent call last):
  File "/Users/marko/Documents/Repos/mobileforge2/src/forge/build.py", line 296, in build
    self._build()
  File "/Users/marko/Documents/Repos/mobileforge2/src/forge/build.py", line 563, in _build
    self.cross_venv.run(
  File "/Users/marko/Documents/Repos/mobileforge2/src/forge/cross.py", line 375, in run
    return subprocess.run(logfile, *args, **self.cross_kwargs(kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/marko/Documents/Repos/mobileforge2/src/forge/subprocess.py", line 49, in run
    raise stdlib_subprocess.CalledProcessError(return_code, args)
subprocess.CalledProcessError: Command '(['python', '-m', 'build', '--no-isolation', '--wheel', '--outdir', '/Users/marko/Documents/Repos/mobileforge2/dist'],)' returned non-zero exit status 1.

Steps to reproduce
Clone mobile-forge in to /tmp and attempt to build numpy.
Expected behavior
Numpy can build regardless of where mobile-forge exists in the file system.
The underlying problem is the shebang that pip creates for ninja which is used by numpy's build system. Numpy invokes ninja with this file:
> cat mobile-forge/build/cp311/numpy/1.26.2/venv3.11-ios_13_0_arm64_iphoneos/cross/bin/ninja

#!/Users/user/github/beeware/mobile-forge/build/cp311/numpy/1.26.2/venv3.11-ios_13_0_arm64_iphoneos/cross/bin/python3.11
# -*- coding: utf-8 -*-
import re
import sys
from ninja import ninja
if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(ninja())

The problem here is that venv3.11-ios_13_0_arm64_iphoneos/cross/bin/python3.11 is not a binary; it is another python script that eventually calls os.execv() for venv3.11-ios_13_0_arm64_iphoneos/build/bin/python3.11....and this python3.11 is a binary.
pip creates this shebang when installing ninja. As you can see there, if the shebang is long enough, it creates a shebang that has /bin/sh run venv3.11-ios_13_0_arm64_iphoneos/build/bin/python3.11. This avoids this issue altogether.
pip does a lot of introspection to determine what to use for the shebang....and a lot of the possible values come from sysconfig. Given how much crossenv is messing with sysconfig, this could possibly be considered a bug in crossenv.
Screenshots
No response
Environment

Operating System: Sonoma
Python version: 3.11
Software versions:

mobile-forge: eb36d2787ed

Logs
numpy-1.26.2-cp311-ios_13_0_x86_64_iphonesimulator.log
numpy-1.26.2-cp311-ios_13_0_arm64_iphonesimulator.log
numpy-1.26.2-cp311-ios_13_0_arm64_iphoneos.log
Additional context
No response

Confirmed that I can reproduce this - and, interestingly, I also see the "forge failure causes shell exit" bug in the /tmp-based environment.

I've resolved the "forge failure causes shell exit" problem - but now I'm seeing this build numpy failure on every build... still trying to understand what is going on here. It appears to be a discrepancy between what happens when you invoke /path/to/ninja at a venv prompt, and what happens when you run subprocess.run(["/path/to/ninja"]) in a python shell in the same venv.

My thought was it's because subprocess.run() is assuming a binary at some point to invoke; it appears to respect the shebang when the first index of run() isn't a binary itself....but it doesn't then keep recursively reading the shebangs down this chain. For instance, I think if you add shell=true, then it will handle this non-binary shebang.

shell=True doesn't appear to work, because it assumes that the script being referenced is a shell script, so it breaks because the script content is actually Python code.
The problem appears to be a problem with the OS-level execv call, which is rejecting the initial binary because the shebang is script, not an actual binary... but I have no idea why this was working just 2 weeks ago. My only assumption is that some dependency in the chain that leads to ninja being installed has changed... but I can't work out what dependency that would be. pip, wheel and ninja itself have all been stable for ~2 months; the only package that has changes is setuptools... but setuptools shouldn't be involved in either building or installing ninja.

Perhaps just for my own edification, how do you know this wasn't happening two weeks ago? I guess more to the point, are you confident that testing was using a short enough parent file path to mobile-forge for the issue to have had a chance to present?
My impression is this has been a latent issue that I just happened to finally encounter.

I know it was working 2 weeks ago because I was able to publish numpy versions using this script; I'm now seeing this problem in every build, not just the /tmp ones.
However.... those builds were done prior to the cross rename... and the older name was considerably longer...

Yup. It's the path rewriting thing you flagged.
Prior to the cross rename, the code worked because I was building in /Users/rkm/beeware/mobile-forge/build/cp312/numpy/1.26.2/venv3.12-ios_13_0_arm64_iphoneos/venv3.12-ios_13_0_arm64_iphoneos/bin/python3.12 (138 chars); it now uses /Users/rkm/beeware/mobile-forge/build/cp312/numpy/1.26.2/venv3.12-ios_13_0_arm64_iphoneos/cross/bin/python3.12 (111 chars), so it no longer uses the exec shim, causing the build to fail.
/me swears extensively.
So - there's a fix needed in crossenv to ensure that the exec shim is always used; with an alternate (more permanent) fix upstream in pip as well.

(also, put another tally in the "RKM, just pay attention to what Russell Martin says, and your life will be a lot easier" column... :-) )

haha, careful! I can't vouch for everything I say... FWIW, I am still curious if this is a valid file path for crossenv to put in to sysconfig; while we've only seen an issue when the file path is put in to a shebang, perhaps other use cases also assume it to be directly executable or something.

The path that is in the shebang is the "host Python" - however, the "host Python" can't be an executable (at least, not easily), because it's a shell wrapper around the build Python. The only way that you could make it an actual executable is by writing a binary wrapper that does what a shell script does... which is possible, but not really nice to work with.
Given that the script works fine in every context except os.execv(), I think it's not an unreasonable value for the shebang.
I've pushed an update to my branch of crossenv that patches the problem. I'm working on a bug report and patch for distutils (which will eventually turn in to a vendored patch in pip).

A patch to enforce pip updates: beeware/mobile-forge#64

I've resolved the "forge failure causes shell exit" problem

Curious...what was the resolution here?

As soon as someone can confirm that numpy builds are working for them, I think this bug can be closed.

Builds in my VM now.

Calling set +e at the end of the setup script. Since that script is sourced, the set -e call persists into the new environment; so any failure in a tool being invoked in the new environment causes an exit of the shell.

I'm in the process of adding numpy to the CI system in #65, as that would have revealed this bug; but I'm hitting a C++ issue on x86 builds. I'll use that PR to close this one once I've worked out what is going on.


shader: can't use variables in for-loop condition

Code
func Fragment(position vec4, texCoord vec2) vec4 {
	v := texCoord
	someVariable := 4.0
	for i := 0; i < someVariable; i++ {
		v.x += 0.01
	}
	return texture0At(v)
}

Error
for-statement must follow this format: for (varname) := (constant); (varname) (op) (constant); (varname) (op) (constant) { ...

Unfortunately this is a specification (derived from GLSL ES)

See Appendix A 4 Control flow:
https://www.khronos.org/registry/OpenGL/specs/es/2.0/GLSL_ES_Specification_1.00.pdf

Cool. It seems I should be able to use an if-statement plus break to achieve the same behavior. I'll try it later


feat: add force_new_deployment variable

what

Added the force_new_deployment flag to force new task deployment of the service
Updated github configs

why

To make it possible to force a new deployment

/test readme

/test all

/test all


Add pylint to CI and improve dev infra

This PR addresses #153 by adding pylint to the development workflow and to the CI that runs on PRs. It also adds a makefile to define common development tasks (running black, linting, and tests) and clarifies the flake8 config.

This PR will not pass CI until all of the existing pylint violations are addressed. There are currently a lot of 'no-name-in-module' violations related to pyqt5 imports, in addition to the violations addressed by the bugfixes in #152.

@AhmetCanSolak do you want to merge this with broken CI and then address the pylint violations in a separate PR? I'm happy to help fix them but since most are related to pyqt5 you might know better than me how to best resolve them.

Details

I can address them in a separate PR, if you want everything in one PR and okay for me pushing to your branch I can do that within this PR  as well.

I can address them in a separate PR, if you want everything in one PR and okay for me pushing to your branch I can do that within this PR as well.

Up to you!

will do a separate PR


Integrate the trie

This PR just sets up the trie thread and state.
We still need all the prior logic against the btree to pre-validate transactions.
That btree will be replaced by a cache db (PublicKey -> Account).
We could remove pre-validated transaction requirement with an immutable trie::SnapshotBuilder that supported could rollback.
However, we would still need to prevent DoS with the cache db. Real hardware is very different from the zkVM, binary tries don't perform all that well on SSDs.
In the future we will also need to warm up the NodeHash -> TrieNode DB right before a txn hits the trie state thread. By cashing TrieNodes into ram we can move slow IO off that thread.
Next Steps after this PR:

Adding persistence with rocks
Adding a validating thread for testing against (like a mock contract for testing)
General testing txns (we can replicate what I did in the trie repo).

I'm going to merge the txn logic between the trie and btree-cache-db before this should be merged.

One requested change is to remove epoch locking - as we discussed during last deep dive - so we avoid accepted transactions that are unexpectedly failing because of batch end/limit.

I think I already did this in https://github.com/cspr-rad/kairos/pull/57/commits/74d04449271bfc89144bfcc5d947232391b93476.
I removed the my outdated comment about batch epoch.
Although I think we might still need an epoch for time expiring transactions.

What about TTL? It could be maximum timestamp, or maximum epoch.

Where I asked for more docs for types and functions, I was more in the hope of getting explanations of how the different datastructures are supposed to be used together, what caveats there are.

I added a bit more, but I'm not clear on what parts are confusing?
Are you looking for an overview of the trie logic or something else?


OWLS-87849 - scaleCluster.sh script to patch the 'replicas' attribute of the WLS cluster

OWLS-87849 - The scaleCluster.sh script is similar to the cluster stop/start scripts and it patches the replicas attribute for the cluster with the specified value. It performs validations to ensure that clusterName exists in domain topology and that the specified value of replica count is in the allowed range. If the cluster doesn't exist under .spec.clusters in the domain resource, it adds the cluster.
The PR also changes the logic for the cluster stop/start scripts to add the cluster under .spec.clusters in the domain resource if it doesn't exist.
Integration test run URL - https://build.weblogick8s.org:8443/job/weblogic-kubernetes-operator-kind-new/4171/

@tbarnes-us I have addressed the review comments, please let me know if I missed anything. I also ran the integration tests with the changes and test run passed - https://build.weblogick8s.org:8443/job/weblogic-kubernetes-operator-kind-new/4171 . Thanks.


python quit unexpectedly

From<EMAIL_ADDRESS>on 2014-02-22T07:44:55Z
Spyder Version:  2.2.5
Python Version:  2.7.6
Qt Version    :  4.7.4, PySide 1.1.2 on Darwin
pyflakes >=0.5.0:  0.7.3 (OK)
pep8 >=0.6      :  1.4.6 (OK)
IPython >=0.13  :  1.1.0 (OK)
rope >=0.9.2    :  0.9.4 (OK)
sphinx >=0.6.6  :  1.2.1 (OK)
matplotlib >=1.0:  1.3.1 (OK)
sympy >=0.7.0   :  <IP_ADDRESS> (OK)
pylint >=0.25   :  None (NOK)
What steps will reproduce the problem?

close spyder 2. 3. What is the expected output? What do you see instead? Process:         python [5772]
Path:            /Users/USER/*/python.app/Contents/MacOS/python
Identifier:      com.continuum.python
Version:         ???
Code Type:       X86-64 (Native)
Parent Process:  bash [5769]
Responsible:     Terminal [5766]
User ID:         501

Date/Time:       2014-02-22 13:42:01.729 +0100
OS Version:      Mac OS X 10.9.1 (13B3116)
Report Version:  11
Anonymous UUID:  BFE390F7-E1DE-5DB1-8702-C25E0773242C
Crashed Thread:  0  Dispatch queue: com.apple.main-thread
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000098
VM Regions Near 0x98:
-->
__TEXT<PHONE_NUMBER>000000-0000000100001000 [    4K] r-x/rwx SM=COW  /Users/USER/*/python.app/Contents/MacOS/python
Please provide any additional information below
.
Original issue: http://code.google.com/p/spyderlib/issues/detail?id=1737

From ccordoba12 on 2014-02-24T04:30:39Z
Thanks for reporting. This is a well known error that (unfortunately) doesn't have anything to do with Spyder but with the specific version of PySide (the Python/Qt bindings) used by Anaconda. This error appears with PySide 1.1.2 but not with the latest stable version, which is 1.2.1
Continuum guys have been informed about it several months ago. I don't know when they are going to fix it.
Status: WontFix


[sandboxie] Bug: updates leave old version shims

I'm submitting a ...

[x] bug report
[ ] feature request
[ ] support request

What is the current behavior?

The Chocolatey package leaves installer shims in C:\ProgramData\chocolatey\bin

If the current behavior is a bug, please provide the steps to reproduce the problem:

Install with choco
Update with choco
Check C:\ProgramData\chocolatey\bin - multiple exes will be there

What is the expected behavior?

Only one executable in that dir, for sandboxie, if any. Perhaps one for the main executable, defined by .gui file.

What is the motivation / use case for changing the behavior?

Avoid chaos in there, easier to call through CLI if without a version.

Please tell us about your environment:

Choco package name: sandboxie
Version: any

Shims aren't documented too well IMO, but here's what actually happens:

you're downloading installer to chocolatey\lib\sandboxie-plus.install kind of folder in chocolateyInstall.ps1
you're not deleting that installer after it finishes the job
Chocolatey automatically shims anything in that dir or subdirs after installer script finishes

Possible solutions:

download the installer somewhere else if it's needed later for any reason (e.g. is it required for uninstalling? no idea)
delete the installer at the end of install script if it's not needed, so Remove-Item $fileLocation

Oh, it's about shims for the installer. Installers in embedded packages are generally ignored by using a .ignore file (see: https://docs.chocolatey.org/en-us/features/shim#i-need-to-exclude-a-file-from-shimming)
I'll fix it, thanks for investigating this further.

I was a bit wrong, installers in embedded packages are actually removed but a .ignore file is added if the removal fails.


Ubi base image

UBI Change is simple enough, move to the new docker liberty base image (now ubi as of build 29), and also remember to add permission to the couch db init script to allow non-root users (but in root group) to invoke it (as when on openshift).
The test change is .. odd.
Apparently somehow the cert data we haven't changed in forever is now considered invalid. I'd like to say how, except all it will tell me is the date format for the cert expiry was incorrect. In this assessment, both Java and the openssl commandline tool agreed.
Rather than debug further I regenerated the cert & key using current openssl commandline tool, and updated the test suite code to use it. Also moved it off some deprecated jwt api usage while I was there, and added a comment re how to regen the cert if we're still looking at this in 10 years time.
Minikube/Docker need testing before this goes non-draft

This change is

Minikube/Helm/Istio tested OK

Docker tested OK


Upgrade Spring Boot to 2.0 SNAPSHOTs

As a developer, I'd like to upgrade Spring Boot version to 2.0.0.BUILD-SNAPSHOT.
Acceptance:

Document general findings
Capture breaking changes
Prepare for SCSt 2.0 branch and CI pipeline

This is complete now after creating 2.0.x branches in Core and binders and the Elmhurst.x branch.


Caused by android.app.ForegroundServiceStartNotAllowedException Service.startForeground() not allowed due to mAllowStartForeground false

Android 12.0 异常报错
Caused by android.app.ForegroundServiceStartNotAllowedException
Service.startForeground() not allowed due to mAllowStartForeground false:
12以后不能在后台开启前台服务了。老铁准备用workmanager实现后台下载么。

没兴趣，只是为了解决 https://github.com/lingochamp/FileDownloader/issues/1421


Add an 'all' convention which enables all codes at once

Resolves #397
This will make it easier to expose all codes via flake8-docstrings
Thanks for submitting a PR!
Please make sure to check for the following items:

[x] Add unit tests and integration tests where applicable.
If you've added an error code or changed an error code behavior,
you should probably add or change a test case file under tests/test_cases/ and add
it to the list under tests/test_definitions.py.
If you've added or changed a command line option,
you should probably add or change a test in tests/test_integration.py.
[x] Add a line to the release notes (docs/release_notes.rst) under "Current Development Version".
Make sure to include the PR number after you open and get one.

Please don't get discouraged as it may take a while to get a review.

see https://github.com/PyCQA/pydocstyle/issues/397#issuecomment-520514271


GEODE-6369 Cache-creation failure after a successful auto-reconnect causes subsequent NPE

If an error occurs while rebuilding the cache on auto-reconnect we can't
continue and should throw an exception to any thread waiting for the
reconnect to complete.
Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[x] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[x] Is your initial contribution a single, squashed commit?

[x] Does gradlew build run cleanly?

[x] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

closing this PR as it seems to be the wrong approach.  If cluster configuration can't be fetched, for instance, we should try again instead of giving up because the cluster configuration service can take a while to reboot after a Locator comes on line.


chore(deps): bump CLI to 9.1.2 and Metro to ^0.72.1

Summary

This PR bumps the dep version of Metro and the RN CLI to latest, and realigns them to avoid the issue we currently have in 0.70: https://github.com/facebook/react-native/issues/34714 (this commit will be cherry-picked there)
While at it, I gave a cleanup pass to the yarn.lock with yarn deduplicate.
Changelog

[General] [Changed] - bump CLI to 9.1.2 and Metro to ^0.72.1
Test Plan
CI is green

@robhogan @thymikee @motiz88 updated the PR with latest and all pinned. LMK if now it's good to go


[api] Adds serving support for some CV models

Description
Brief description of what this PR is about

If this change is a backward incompatible change, why must this change be made?
Interesting edge cases to note here

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 58.92%. Comparing base (b6656ed) to head (2c3487a).
Report is 6 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@              Coverage Diff              @@
##             master    #3499       +/-   ##
=============================================
- Coverage     72.52%   58.92%   -13.61%
+ Complexity     7394     5851     -1543
=============================================
  Files           672      674        +2
  Lines         32909    33021      +112
  Branches       3501     3516       +15
=============================================
- Hits          23868    19457     -4411
- Misses         7400    12082     +4682
+ Partials       1641     1482      -159

Flag
Coverage Δ

?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Missing comment of tables, views and functions

DDL is missing comments of table, views and functions. Will it be possible to preview and edit comments in next versions?
The application is great and I would like to use it in the future. Greetings.

Hi @kondrat-net , thanks for reporting that. We're currently working on this issue. We intend to add support to edit comments in all supported objects, as well shown it in objects DDL.

Closing this now.


Websocket clients can never send data? How do you subscribe to a channel on a websocket?

Hi. I don't see how you can ever send any data the way the node is designed if you only have a client connection.
As far as I am able to see the code that sends messages is this.
    WebSocketListenerNode.prototype.reply = function(id,data) {
        var session = this._clients[id];
        if (session) {
            try {
                session.send(data);
            }
            catch(e) { // swallow any errors
            }
        }
    }

So you need a session object from _clients.
_clients is set here:
        function handleConnection(/*socket*/socket) {
            var id = (1+Math.random()*4294967295).toString(16);
            if (node.isServer) { node._clients[id] = socket; node.emit('opened',Object.keys(node._clients).length); }
            socket.on('open',function() {
                if (!node.isServer) { node.emit('opened',''); }
            });
//...

node.isServer is a piece of regex
node.isServer = !/^ws{1,2}:\/\//i.test(node.path);
This returns false if you are a client connection.
Can you not send any messages if you are a client? What am I missing?

Hi,
It only uses the .reply function if the message came from another websocket node due to the check here:
https://github.com/node-red/node-red/blob/cb4f46decceaf39caf608838f1af01dcbbf5f51f/nodes/core/io/22-websocket.js#L250
In the case of a websocket outbound client, it will use the broadcast function which does have a code path for the !node.isServer case.
https://github.com/node-red/node-red/blob/cb4f46decceaf39caf608838f1af01dcbbf5f51f/nodes/core/io/22-websocket.js#L171


python310Packages.insightface: init at 0.7.3

Description of changes
Adds https://github.com/deepinsight/insightface, a state-of-the-art 2D and 3D face analysis library.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Rebased on master

The CLI apparently expects the onnxruntime package.
$ ./result/bin/insightface-cli
Traceback (most recent call last):
  File "/nix/store/l2j9xhb2zbl21id24xy5kgly0vb7mx74-python3.11-insightface-0.7.3/lib/python3.11/site-packages/insightface/__init__.py", line 8, in <module>
    import onnxruntime
ModuleNotFoundError: No module named 'onnxruntime'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/nix/store/l2j9xhb2zbl21id24xy5kgly0vb7mx74-python3.11-insightface-0.7.3/bin/.insightface-cli-wrapped", line 6, in <module>
    from insightface.commands.insightface_cli import main
  File "/nix/store/l2j9xhb2zbl21id24xy5kgly0vb7mx74-python3.11-insightface-0.7.3/lib/python3.11/site-packages/insightface/__init__.py", line 10, in <module>
    raise ImportError(
ImportError: Unable to import dependency onnxruntime.

Added small compatibility fix for mxnet (to support numpy >= 1.24), and addressed review comments.

The CLI apparently expects the onnxruntime package. Maybe we can add testers.testVersion to run the CLI as a further test.

Good idea. I've now added this test but since there is no "--version" for insightface, I've set version = "help" to verify at least the help output.

(Fixed accidentally deleted character 😅, package builds and runs now)

mxnet fails to build on darwin.

error: unknown warning option '-Werror=maybe-uninitialized'; did you mean '-Werror=uninitialized'? [-Werror,-Wunknown-warning-option]

Can you try the following? Copied from pkgs/tools/networking/tgt/default.nix.
env.NIX_CFLAGS_COMPILE = toString [
	# Needed with GCC 12
	"-Wno-error=maybe-uninitialized"
];

Well that was dumb.  I really need to start reading the actual error message.
The necessary change is
diff --git a/pkgs/applications/science/math/mxnet/default.nix b/pkgs/applications/science/math/mxnet/default.nix
index 1e7af371c50..d65de87d8eb 100644
--- a/pkgs/applications/science/math/mxnet/default.nix
+++ b/pkgs/applications/science/math/mxnet/default.nix
@@ -56,7 +56,6 @@ stdenv.mkDerivation rec {

   env.NIX_CFLAGS_COMPILE = toString [
     # Needed with GCC 12
-    "-Wno-error=maybe-uninitialized"
     "-Wno-error=uninitialized"
   ];

The necessary change is [...]

Adjusted, I just can't test darwin myself unfortunately :D

The change is needed on the native library, not the python library.

Guess I should also start to read comments properly 😅. Added as suggested now.

@ofborg build python311Packages.insightface

Builds for me on both darwin systems.


Support Python expressions in plot builders

Two major changes here:

RecentLines expects a list of y variables to plot on the same axes, instead of just one y variable.
Both RecentLines and Image accept any valid Python expression. The expression is evaluated in a namespace that contains the DataArrays in the primary stream (e.g. "motor"), the Datasets of the streams themselves (e.g. "primary", "baseline"), the run ("run"), and any user-provided tokens. It also includes all numpy objects like log and pi. The namespace can be extended by the user as illustrated below to inject custom functions or values. In this way, simple data transformations are easy --- `"log(I0)" --- and complex operations like interpolating between streams are possible. Because the input is text it is easy to image providing these expressions via GUI input. It's also interesting to consider "saving favorite plots" by writing these strings into a state store.

This enables usages like...
Plot a mathematical transformation of the columns using any object in numpy.
    >>> model = RecentLines(3, "abs(motor)", ["-log(det)"])
    >>> model = RecentLines(3, "abs(motor)", ["pi * det"])
    >>> model = RecentLines(3, "abs(motor)", ["sqrt(det)"])

Plot multiple lines.
    >>> model = RecentLines(3, "motor", ["log(I0/It)", "log(I0)", "log(It)"])

Plot every tenth point.
    >>> model = RecentLines(3, "motor", ["intesnity[::10]"])

Access data outside the "primary" stream, such as a stream name "baseline".
    >>> model = RecentLines(3, "motor", ["intensity/baseline['intensity'][0]"])

As shown, objects from numpy can be used in expressions. You may define
additional words, such as sg for a Savitzky-Golay smoothing filter,
by passing it a dict mapping the new word to the new object.
    >>> import scipy.signal
    >>> namespace = {"sg": scipy.signal.savgol_filter}
    >>> model = RecentLines(3, "motor", ["sg(intensity, 5, 2)"],
    ...                     namespace=namespace)

Custom, user-defined objects may be added in the same way.
    >>> def f(data):
    ...     ...
    ...
    >>> namespace = {"my_custom_function": f}
    >>> model = RecentLines(3, "motor", ["my_custom_function(intensity)"],
    ...                     namespace=namespace)

The same works on Images.
    >>> model = Images("my_filter(ccd)", namespace={"my_filter", f})

Nearly-useful example with real (public, CC0-licensed) data from BMM:
In [1]: from bluesky_widgets.models.plot_builders import RecentLines

In [2]: from bluesky_widgets.qt.figures import QtFigure

In [3]: import databroker

In [4]: run = databroker.catalog["BMM"][-1]

In [5]: model = RecentLines(3, "dcm_energy", ["log(I0/It)", "log(I0)", "log(It)"])

In [6]: view = QtFigure(model.figure)

In [7]: view.show()

TO DO:

[ ] Support pytest-like magical argument inspection, such that RecentLines(3, lambda It, I0: It/I0) is allowed.
[ ] When adding field names to the eval namespace, only add fields from the streams in needs_streams and treat it as a precedence order to resolve what to do when a field appears in multiple streams.
[ ] Take control of the AxesSpec title but do not touch with FigureSpec. Giving axes to RecentLines is giving it control of title / labels, but it should not mess with the figure that those axes are embedded in.

I intend to merge this (or ask someone to...) by the end of today to keep things rolling. Nothing is in stone.


Add readthedocs

The readthedocs for this repository should be the main documentation for AiiDA lab.

fixed by #109


Loading a pivot (not pivotUI) with Google Chart Renderer

I'm using this JS lib for 3 months, congrats to this outstanding job!
Now I'm trying to draw a pivot with a Google Chart Renderer, this is the code:
$(div).pivot($(source),
{rows: _rows,
cols: _cols,
renderer: $.pivotUtilities.gchart_renderers['Bar Chart']})
Any clue?

What happens when you run this code? What does it say in the javascript console?

I also try other approach but with the same outcome.
$.getJSON(_dataUrl, function(mps) {
$('#pivotDiv').pivot(mps, {
rows: _rows, cols: _cols,
renderer: $.pivotUtilities.gchart_renderers['Bar Chart'] });
});
I get this error:
TypeError: Cannot read property 'length' of undefined
at Object.makeGoogleChart [as renderer] (gchart_renderers.coffee:41)
at $.fn.pivot (pivot.coffee:543)
at Object.success (VM907 Reminders.aspx:229)
(...)

There was a bug, which I just fixed. Should work for you now.

Thanks!
On Mon, May 4, 2015 at 2:01 PM, Nicolas Kruchten<EMAIL_ADDRESS>wrote:

Closed #317 https://github.com/nicolaskruchten/pivottable/issues/317.
—
Reply to this email directly or view it on GitHub
https://github.com/nicolaskruchten/pivottable/issues/317#event-296215854
.

It's working like a charm. Thanks again!
On Mon, May 4, 2015 at 2:44 PM, Francisco Silva<EMAIL_ADDRESS>
wrote:

Thanks!
On Mon, May 4, 2015 at 2:01 PM, Nicolas Kruchten<EMAIL_ADDRESS>
wrote:

Closed #317 https://github.com/nicolaskruchten/pivottable/issues/317.
—
Reply to this email directly or view it on GitHub
https://github.com/nicolaskruchten/pivottable/issues/317#event-296215854
.


Problems Installing with Windows

Windows 10
Cuda Toolkit = 10.2
PyTorch = 8.1
VisualStudio = 2019
I'm trying to use this with the transformers library and carefully followed the instructions laid out by the transformers authors. I am using the gloo backend.
When using pip install deepspeed and trying to train, I get the following error:
    590         if not self.amp_enabled():
--> 591             self._broadcast_model()

c:\users\alexo\.conda\envs\gentext_005\lib\site-packages\deepspeed\runtime\engine.py in _broadcast_model(self)
    559                 dist.broadcast(p,
    560                                self.broadcast_src_rank,
--> 561                                group=self.data_parallel_group)

c:\users\alexo\.conda\envs\gentext_005\lib\site-packages\torch\distributed\distributed_c10d.py in broadcast(tensor, src, group, async_op)
   1045         return work
   1046     else:
-> 1047         work.wait()

RuntimeError: a leaf Variable that requires grad is being used in an in-place operation.

I am using these settings:
import os
os.environ['MASTER_ADDR'] = 'localhost'
os.environ['MASTER_PORT'] = '9994' # modify if RuntimeError: Address already in use
os.environ['RANK'] = "0"
os.environ['LOCAL_RANK'] = "0"
os.environ['WORLD_SIZE'] = "1"

When I run the report, it looks like none of the ops installed. As a reference, cmake is installed as is llvm. I don't understand why deepspeed wheel compiled w. ...... torch 1.7, cuda 10.1 when there is only one version of CUDA installed in both the environment and the system (10.2).
--------------------------------------------------
DeepSpeed C++/CUDA extension op report
--------------------------------------------------
NOTE: Ops not installed will be just-in-time (JIT) compiled at
      runtime if needed. Op compatibility means that your system
      meet the required dependencies to JIT install the op.
--------------------------------------------------
JIT compiled ops requires ninja
ninja .................. [OKAY]
--------------------------------------------------
op name ................ installed .. compatible
--------------------------------------------------
cpu_adam ............... [NO] ....... [OKAY]
fused_adam ............. [NO] ....... [OKAY]
fused_lamb ............. [NO] ....... [OKAY]
The system cannot find the file specified.
The system cannot find the file specified.
 [WARNING]  sparse_attn requires one of the following commands '['llvm-config', 'llvm-config-9']', but it does not exist!
The system cannot find the file specified.
 [WARNING]  sparse_attn requires the 'cmake' command, but it does not exist!
sparse_attn ............ [NO] ....... [NO]
transformer ............ [NO] ....... [OKAY]
stochastic_transformer . [NO] ....... [OKAY]
utils .................. [NO] ....... [OKAY]
 [WARNING]  async_io requires the libraries: ['libaio-dev'] but are missing.
async_io ............... [NO] ....... [NO]
--------------------------------------------------
DeepSpeed general environment info:
torch install path ............... ['C:\\Users\\alexo\\.conda\\envs\\gentext_005\\lib\\site-packages\\torch']
torch version .................... 1.8.1+cu102
torch cuda version ............... 10.2
nvcc version ..................... 10.2
deepspeed install path ........... ['C:\\Users\\alexo\\.conda\\envs\\gentext_005\\lib\\site-packages\\deepspeed']
deepspeed info ................... 0.3.16, unknown, unknown
deepspeed wheel compiled w. ...... torch 1.7, cuda 10.1

I've tried uninstalling and reinstalling multiple times with different versions of CUDA and PyTorch.
When building from source, I get the following error:
Complete output (21 lines):
    The system cannot find the file specified.
    The system cannot find the file specified.
    The system cannot find the file specified.
    The system cannot find the file specified.
    The system cannot find the file specified.
    The system cannot find the file specified.
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\alexo\AppData\Local\Temp\pip-req-build-93k76uvm\setup.py", line 147, in <module>
        create_dir_symlink('..\\..\\csrc', '.\\deepspeed\\ops\\csrc')
      File "C:\Users\alexo\AppData\Local\Temp\pip-req-build-93k76uvm\setup.py", line 141, in create_dir_symlink
        os.symlink(src, dest)
    OSError: symbolic link privilege not held
    DS_BUILD_OPS=1

@alexorona Did you figure it out?

deepspeed.init_distributed(dist_backend="nccl") Fixed this error

The original error with symlinks is likely due to not running with admin privilege. We are working on removing this requirement (by removing all symlinks): #4323

Please check out the latest version of DeepSpeed for Windows compatibility.


Create: 2002-maximum-product-of-the-length-of-two-palindromic-subsequences , 0179-largest-number

File(s) Modified:

2002-maximum-product-of-the-length-of-two-palindromic-subsequences

2002-maximum-product-of-the-length-of-two-palindromic-subsequences.rs,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.go,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.py,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.kt,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.java,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.c,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.cs,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.ts,
2002-maximum-product-of-the-length-of-two-palindromic-subsequences.js

0179-largest-number

0179-largest-number.py
0179-largest-number.c
0179-largest-number.rs
0179-largest-number.js
0179-largest-number.cs
0179-largest-number.go
0179-largest-number.swift
0179-largest-number.scala
0179-largest-number.rb

Language(s) Used: python,javascript,typescript,c,c#,java,kotlin,rust,go,scala,ruby
Submission URL:

2002:

python: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892118822/
js: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892129657/
c#: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892147493/
ts: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892153296/
java: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892154795/
kotlin: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892156524/
c: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892164555/
go: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892165887/
rust: https://leetcode.com/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/submissions/892180073/

0179:

python: https://leetcode.com/problems/largest-number/submissions/894092073/
js: https://leetcode.com/problems/largest-number/submissions/894104890/
c:https://leetcode.com/problems/largest-number/submissions/894109669/
c#:https://leetcode.com/problems/largest-number/submissions/894110557/
ruby:https://leetcode.com/problems/largest-number/submissions/894112607/
rust:https://leetcode.com/problems/largest-number/submissions/894114973/
go:https://leetcode.com/problems/largest-number/submissions/894111611/
swift:https://leetcode.com/problems/largest-number/submissions/894113405/
scala:https://leetcode.com/problems/largest-number/submissions/894116339/

Important
Please make sure the file name is lowercase and a duplicate file does not already exist before merging.

Hi!
Thanks for your contribution. There seem to be some conflicts (duplicate files that already exist in the repo). Could you fix that please?
Thanks!


rust: add golang bindings

This patch is introducing golang bindings for the C bindings of
nmstate. The following functions are being introduced:

RetrieveNetState(flags int)

Returns (state, error) where state is a string containing the
current state.

ApplyNetState(flags int, state string)

Returns (state, error) where state is a string containing the
desired state applied.

This needs to handle the logs better as currently they are being shown
only when Nmstate fails on the operation.
Signed-off-by: Fernando Fernandez Mancera<EMAIL_ADDRESS>

@qinqon Could you take a look? Thanks!

Is it possible to add Generate configurations as part of this effort?

@ffmancera Is it possible to add Generate configurations as part of this effort?

Hi! What do you mind by Generate configuration, the gc  command? It is not implemented on Rust yet so it is not possible. If done later we can add the Golang binding, that won't be a problem. But adding the gc command here is too much.

@ffmancera Is it possible to add Generate configurations as part of this effort?

Hi! What do you mind by Generate configuration, the gc command? It is not implemented on Rust yet so it is not possible. If done later we can add the Golang binding, that won't be a problem. But adding the gc command here is too much.

Great later is fine for me as well.
Is there an issue  that i can follow? and what is the timeline for that?
I'm using in a another project and it will really help us to have it as well.

@ffmancera Is it possible to add Generate configurations as part of this effort?

Hi! What do you mind by Generate configuration, the gc command? It is not implemented on Rust yet so it is not possible. If done later we can add the Golang binding, that won't be a problem. But adding the gc command here is too much.

Yes the gc command. Great later is fine for me as well. Is there an issue that i can follow? and what is the timeline for that? I'm using in a another project and it will really help us to have it as well.

I am sorry but there is not a timeline for this. We expect to do it in the following months but we cannot promise that. We are working on providing all the features in nmstate-rust. Binding will implement the features ASAP. Thank you!


Can't use get_thread_count() method in Thread

Godot version
v4.1.stable.official [970459615]
System information
window10 64bit
Issue description

Call get_child_count() method in a Thread ， It always return 0 and report error.
This function work well in 3.x and I need this method call in a thread.
Steps to reproduce
/
Minimal reproduction project
GetChildCount.zip

General node thread safety was made more strict in Godot 4.1. Generally, it's not safe to access node methods or properties in threads. In your case, you could pass the child count as argument to the thread.
In more complex cases, you can call Thread.set_thread_safety_checks_enabled(false) in the thread callback if you know what you are doing to enable old, unsafe behavior, but be aware that you might be doing something that is not supported and it just happens to work by coincidence.


Support "cython.const[base_type]" and "cython.volatile[base_type]" in Python code

Implemented as "cython.typedef" subclass since it's really just a rename when used in Python.
Allow "cython.PointerType[xyz]" and "cython.ArrayType[xyz]" in Python code.
Add "p_const_XYZ" type alias names to simplify the usage.
Generate type aliases in "Shadow.pyi".

Closes https://github.com/cython/cython/issues/5728

My main concern is that cython.const[cython.int] passes mypy OK.

Is there anything you can usefully do with const[int] in Cython?

My main concern is that cython.const[cython.int] passes mypy OK.

Is there anything you can usefully do with const[int] in Cython? Read: in Cython compiled Python code?

I think it's only really as a function argument and it fails to work in most other contexts.
I should say - pure Python code + MyPy is something we've seen a number of issues about so my impression is that it's important to people using pure Python mode. However, I'm not using either too much, so may not be the best person to judge.

I allowed pointer[xyz] as type declaration and enabled mypy validation for the newly added test, which seems to be happy with the declarations. I think this is now good enough to go in.

Yes - good by me.

It means this PR closes #5071?

Yes, although that is tagged as a documentation ticket. I updated the documentation to suggest "pointer[int]".
It's still unclear how to integrate the array syntax. Not (really) a part of this PR, though. We currently use cython.int[10], which translates to int[10] in Python code and thus isn't easy to support in the typing scheme.


Question: Can Load Function add VCF to existing database?

Not sure if the load function currently handles this or if it would need to be added. This way it would be possible to use gemini to maintain a database of locally sequenced exomes/genomes. Useful for screening variants for disease sequencing projects based on local population controls.

Load function still does not add vcf to database!

I wonder if there is any update on this feature?


Add auto merge

@conda-forge-admin, please add bot automerge

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added bot automerge in conda-forge/boltztrap2-feedstock#2.


Rename app & probe

Maybe something like weaveapp and weaveprobe?
App is too generic in the process view, and might collide with users apps.  Lets make it more obvious.

Agree. scope-app and scope-probe, maybe.

Done.


FIX Adjust Makefiles To New Docker Compose Syntax; ADD Danny Reichelt To Authors

The changes double the ones just merged in https://github.com/OpenSlides/OpenSlides/pull/6770/, don't they?

Yes but the changes do not seem to appear in changed files. So it should be fine after squashing.


bug: Not an editor command: Lazy sync

Did you check docs and existing issues?

[X] I have read all the lazy docs
[X] I have searched the existing issues of lazy
[X] I have searched the exsiting issues of the plugin I have a problem with

Neovim version (nvim -v)
NVIM v0.9.0-dev-586+g4ace9e7e4-dirty
Operating system/version
MacOS 12.4
Describe the bug
When attempting to use Lazy using the command line we get the error "Not an editor command"
Steps To Reproduce
nvim -u repro.lua -c "Lazy! sync"
=> Not an editor command: Lazy sync
Expected Behavior
Should auto update Lazy
Repro
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  "folke/tokyonight.nvim",
  -- add any other plugins here
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

vim.cmd.colorscheme("tokyonight")
-- add anything else here

It's in the docs. Check for headless

I dont want to use headless mode. Shouldnt this also work without headless mode?

Then you'll need to set an autocmd on VeryLazy. Commands etc are not loaded until then for performance reasons. When using --headless, those commands are loaded early

thank you! it works now!

For future reference to anyone else finding this, all you need to do is:
nvim -c 'autocmd User VeryLazy Lazy! sync'


Files crashed when looking at a folder that has files being actively being written to

Description
Had a folder open in files (files is set as the default exporer replacement). I was copying and converting some audio files in this folder while files was open on this folder. Then it crashed.
Steps To Reproduce
No response
Expected behavior
Application should not crash
Files Version
Version: <IP_ADDRESS>
Windows Version
OS Version: 10.0.22000.318
Relevant Assets
debug.log
debug_fulltrust.log

Is this still an issue in the preview version? https://files.community/download/preview


Add thick (direct write) DeltaLake committer

"Merely" supporting S3A and friends is not enough for thick support for DeltaLake, if the DeltaLake committer does not go through it.  (Even if it does, need to verify support -- it might well perform other operations than standard Spark flows.)
Some providers (e.g. DataBricks) have their own DeltaLake committers; check whether we can work with those, too.

Anyone tried to directly write their delta tables to lakeFS with the deltalake (delta-rs with python bindings) package?
I think this issue is related.

Still relevant for DeltaIO.


Masks sometimes fail

http://web.stanford.edu/group/poldracklab/mriqc/reports/sub-51475_T1w.html
http://web.stanford.edu/group/poldracklab/mriqc/reports/sub-51296_T1w.html - I doubt we can do something about this one.
http://web.stanford.edu/group/poldracklab/mriqc/reports/sub-51493_T1w.html
http://web.stanford.edu/group/poldracklab/mriqc/reports/sub-51460_T1w.html

Closing in favor of #933 (see explanation here: https://github.com/nipreps/mriqc/issues/933#issuecomment-1066137046)


$prviate_ipv4 vartiable is empty - vmware guestinfo

$private_ipv4 token is replaced by an empty value.
core@master1 ~ $ etcdctl cluster-health
member a8459349e7362457 is healthy: got healthy result from http://:2379
cluster is healthy
core@master1 ~ $ cat /run/systemd/system/etcd2.service.d/20-cloudinit.conf
[Service]
Environment="ETCD_ADVERTISE_CLIENT_URLS=http://:2379,http://:4001"
Environment="ETCD_DISCOVERY=https://discovery.etcd.io/<token here>"
Environment="ETCD_INITIAL_ADVERTISE_PEER_URLS=http://:2380"
Environment="ETCD_LISTEN_CLIENT_URLS=http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001"
Environment="ETCD_LISTEN_PEER_URLS=http://:2380"

Using guestinfo interface and editing the .vmx manually prior to booting vm:
guestinfo.hostname = "master1"
guestinfo.interface.0.name = "ens192"
guestinfo.interface.0.role = "private"
guestinfo.coreos.config.data = "H4sICIz...."
guestinfo.coreos.config.data.encoding = "gzip+base64"

Cloud Config:

#cloud-config

users:
  - name: "core"
    passwd: "$6$ro..."
    groups:
      - "sudo"
      - "docker"
    ssh-authorized-keys:
      - "ssh-rsa ..."

coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
    # specify the initial size of your cluster with ?size=X
    discovery: https://discovery.etcd.io/<token>
    advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
    initial-advertise-peer-urls: http://$private_ipv4:2380
    # listen on both the official ports and the legacy ports
    # legacy ports can be omitted if your application doesn't depend on them
    listen-client-urls: http://<IP_ADDRESS>:2379,http://<IP_ADDRESS>:4001
    listen-peer-urls: http://$private_ipv4:2380
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: vmtoolsd.service
      command: start
      content: |
        [Unit]
        Description=VMware Tools Agent
        Documentation=http://open-vm-tools.sourceforge.net/
        ConditionVirtualization=vmware

        [Service]
        ExecStartPre=/usr/bin/ln -sfT /usr/share/oem/vmware-tools /etc/vmware-tools
        ExecStart=/usr/share/oem/bin/vmtoolsd
        TimeoutStopSec=5

    - name: oem-cloudinit.service
      command: restart
      runtime: yes
      content: |
        [Unit]
        Description=Cloudinit from VMware Backdoor

        [Service]
        Type=oneshot
        ExecStart=/usr/bin/coreos-cloudinit --oem=vmware

  oem:
    bug-report-url: "https://github.com/coreos/bugs/issues"
    id: vmware
    name: VMWare
    version-id: "9.10.0-r3"

I am using the latest coreos image. Nothing in any of the logs I have looked at indicate any issue pertaining to why the variable is missing. I am not sure how to debug this. Any help would be appreciated.

This issue was moved to coreos/bugs#1505


Calculate and compare CRC when writing and reading ledger snapshots

Description
Fixes https://github.com/IntersectMBO/ouroboros-consensus/issues/892
In this PR, we augment the DiskSnapshot type of ledger state snaphot metadata with the checksum of the state.
The checksum is calculated when the snapshot is written to disk and saved in dsChecksum filed of DiskSnapshot. When a snapshot is read from dist, the checksum is again calculated and compared to the tracked one. If the checksum is different, readSnaphot returns the ReadSnaphotBadCRC error, indicating data corruption.
The checksum is calculated incrementally, alongside reading a writing the data. On write, we use the [hPutAllCRC](https://input-output-hk.github.io/fs-sim/fs-api/src/System.FS.CRC.html#hPutAllCRC) function from fs-sim, and on read we modify the readIncremental function to compute the checksum as data is read.
@dnadales has expressed concerns that this change may harm performance of the already expensive snapshot operation (see https://github.com/IntersectMBO/ouroboros-consensus/issues/868). To make sure this does not happen, we must benchmark the change. If see that it causes a regression, we should make hide it optional.

I've compared the performance of reading and then writing a snapshot using db-analyser. The feature branch seems to be 2s slower, but it is not clear if it is significant.
I would like to spend some more time looking at the microbenchmarks that we currently have and maybe adding one for reading-writing ledger state snapshots.

Logs of `db-analyser` with timings
Feature 101.325841s
time $(cabal list-bin db-analyser) --db ~/Workspace/IOG/cardano-node-data/mainnet/state/mainnet-db cardano --config ~/Workspace/IOG/cardano-node-data/mainnet/mainnet-config.json --analyse-from 112526498 --store-ledger 112526499 --verbose
[0.459957s] TraceImmutableDBEvent (ChunkValidationEvent (StartedValidatingChunk 5285 5285))
[0.869950s] TraceImmutableDBEvent (ChunkValidationEvent (ValidatedChunk 5285 5285))
[0.871115s] TraceImmutableDBEvent (ValidatedLastLocation 5285 (Tip {tipSlotNo = SlotNo 114172812, tipIsEBB = IsNotEBB, tipBlockNo = BlockNo 9827240, tipHash = fcb4668176a65b29cf64c31a0bf7c4d4558f61d17774c4f9c3c1366435be8a7f}))
[59.829891s] Started StoreLedgerStateAt (SlotNo 112526499) LedgerReapply
[60.150611s] TraceImmutableDBEvent (TraceCacheEvent (TraceCurrentChunkHit 5285 0))
[60.150929s] TraceImmutableDBEvent (TraceCacheEvent (TraceCurrentChunkHit 5285 0))
[60.151203s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkMiss 5209 0))
[60.179937s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkHit 5209 1))
[60.180243s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkHit 5209 1))
[101.325411s] Snapshot stored at SlotNo 112526500
[101.325568s] Snapshot was created at SlotNo 112526500 because there was no block forged at requested SlotNo 112526499
[101.325841s] Done
ImmutableDB tip: At (Block {blockPointSlot = SlotNo 114172812, blockPointHash = fcb4668176a65b29cf64c31a0bf7c4d4558f61d17774c4f9c3c1366435be8a7f})
[101.325945s] TraceImmutableDBEvent DBClosed
$(cabal list-bin db-analyser) --db  cardano --config  --analyse-from 11252649  102.92s user 6.79s system 107% cpu 1:41.95 total

Main 99.685827s
 time $(cabal list-bin db-analyser) --db ~/Workspace/IOG/cardano-node-data/mainnet/state/mainnet-db cardano --config ~/Workspace/IOG/cardano-node-data/mainnet/mainnet-config.json --analyse-from 112526498 --store-ledger 112526499 --verbose
[0.466244s] TraceImmutableDBEvent (ChunkValidationEvent (StartedValidatingChunk 5285 5285))
[0.879898s] TraceImmutableDBEvent (ChunkValidationEvent (ValidatedChunk 5285 5285))
[0.881057s] TraceImmutableDBEvent (ValidatedLastLocation 5285 (Tip {tipSlotNo = SlotNo 114172812, tipIsEBB = IsNotEBB, tipBlockNo = BlockNo 9827240, tipHash = fcb4668176a65b29cf64c31a0bf7c4d4558f61d17774c4f9c3c1366435be8a7f}))
[57.514297s] Started StoreLedgerStateAt (SlotNo 112526499) LedgerReapply
[57.837578s] TraceImmutableDBEvent (TraceCacheEvent (TraceCurrentChunkHit 5285 0))
[57.837830s] TraceImmutableDBEvent (TraceCacheEvent (TraceCurrentChunkHit 5285 0))
[57.838031s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkMiss 5209 0))
[57.858723s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkHit 5209 1))
[57.858963s] TraceImmutableDBEvent (TraceCacheEvent (TracePastChunkHit 5209 1))
[99.685293s] Snapshot stored at SlotNo 112526500
[99.685447s] Snapshot was created at SlotNo 112526500 because there was no block forged at requested SlotNo 112526499
[99.685721s] Done
ImmutableDB tip: At (Block {blockPointSlot = SlotNo 114172812, blockPointHash = fcb4668176a65b29cf64c31a0bf7c4d4558f61d17774c4f9c3c1366435be8a7f})
[99.685827s] TraceImmutableDBEvent DBClosed
$(cabal list-bin db-analyser) --db  cardano --config  --analyse-from 11252649  102.60s user 6.13s system 108% cpu 1:40.31 total


Broken hyperlinks

These are the rest of the broken hyperlinks, I am not sure with what (or how) to fix them:
{
   "/code/AspNetCore.Docs/aspnetcore/client-side/dotnet-interop.md":[
      "https://github.com/dotnet/runtime/blob/main/src/mono/wasm/runtime/"
   ],
   "/code/AspNetCore.Docs/aspnetcore/blazor/javascript-interoperability/import-export-interop.md":[
      "https://github.com/dotnet/runtime/blob/main/src/mono/wasm/runtime/"
   ],

   “/code/AspNetCore.Docs/aspnetcore/fundamentals/startup/6.0_samples/WebAll/README.md":[
      "https://github.com/Rick-Anderson/WebAll/blob/master/Views/_ViewStart.cshtml"
   ],

}```

Thanks @stanimirovv ... I'll track them down and fix them.


Should properly handle console colors?

Currently colors get stripped off. Perhaps we could add the ability to handle the colors?

A link that may help https://stackoverflow.com/questions/17493276/how-to-keeps-colours-from-msbuild-output


[Question] Is there anyway to use a third party control inside XML?

I am trying to incorporate the PhoneNumberKit into my view using the XML layout method, but when I added <PhoneNumberTextField/> into my XML, it didn't work.  The control seems to be a regular subclass of UITextField link here

nvm, was missing the module name.  it should be <PhoneNumberKit.PhoneNumberTextField/> for the record.


added pose to apriltag message

Codecov Report

Merging #10 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master    #10   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files          14     14
  Lines          14     14
=====================================
  Hits           14     14

Impacted Files
Coverage Δ

src/apriltag_t.jl
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8344b4e...0b993a6. Read the comment docs.


Composer update process

When I run "envoy run deploy" for the first time, "composer install" command is executed and composer installs all my required packages correctly. But when I continue development process and add some new dependencies into composer.json, "envoy run deploy" still executes "composer install" instead of "composer update" and new packages aren't installed.
So, I have to manually change $settings['deps_install_command']['composer'] value to "composer update ....". Then I have correct deployment process.

Deploy process shouldn't use composer update. Check that you don't ignored composer.lock file in repository.

@basavind You're right, including composer.lock to the repo did the trick


Error by running setupDecompWorkspace

Infos:

IDE: Intellij IDEA
cloned using SSH
own gradle clone

While i ran setupDecompWorkspace on a new clone (nothing changed, first thing after cloning) i got this error:
3:10:30 PM: Executing external task 'setupDecompWorkspace'...
Found AccessTransformer: common_at.cfg
Found AccessTransformer: common_at.cfg
:extractMcpData SKIPPED
:extractMcpMappings SKIPPED
:getVersionJson
:extractUserdev UP-TO-DATE
:genSrgs SKIPPED
:copySrgs UP-TO-DATE
:deobfCompileDummyTask
:deobfProvidedDummyTask
:SpongeCommon:deobfCompileDummyTask
:SpongeCommon:deobfProvidedDummyTask
:SpongeCommon:SpongeAPI:compileJava UP-TO-DATE
:SpongeCommon:SpongeAPI:processResources UP-TO-DATE
:SpongeCommon:SpongeAPI:classes UP-TO-DATE
:SpongeCommon:SpongeAPI:jar UP-TO-DATE
:SpongeCommon:compileApiJava UP-TO-DATE
:SpongeCommon:processApiResources UP-TO-DATE
:SpongeCommon:apiClasses UP-TO-DATE
:SpongeCommon:extractMcpData SKIPPED
:SpongeCommon:extractMcpMappings SKIPPED
:SpongeCommon:genSrgs SKIPPED
:SpongeCommon:copySrgs UP-TO-DATE
:SpongeCommon:sourceMainJava UP-TO-DATE

FAILURE: Build failed with an exception.

* What went wrong:
Could not resolve all dependencies for configuration ':SpongeCommon:forgeGradleMc'.
> Could not resolve net.minecraft:minecraft_serverSrc:1.8-PROJECT(SpongeCommon).
  Required by:
      org.spongepowered:SpongeCommon:2.1-SNAPSHOT
   > Could not resolve net.minecraft:minecraft_serverSrc:1.8-PROJECT(SpongeCommon).
      > Could not get resource 'https://libraries.minecraft.net/net/minecraft/minecraft_serverSrc/1.8-PROJECT(SpongeCommon)/minecraft_serverSrc-1.8-PROJECT(SpongeCommon).pom'.
         > Could not GET 'https://libraries.minecraft.net/net/minecraft/minecraft_serverSrc/1.8-PROJECT(SpongeCommon)/minecraft_serverSrc-1.8-PROJECT(SpongeCommon).pom'. Received status code 403 from server: Forbidden
   > Could not resolve net.minecraft:minecraft_serverSrc:1.8-PROJECT(SpongeCommon).
      > Could not get resource 'https://libraries.minecraft.net/net/minecraft/minecraft_serverSrc/1.8-PROJECT(SpongeCommon)/minecraft_serverSrc-1.8-PROJECT(SpongeCommon).pom'.
         > Could not GET 'https://libraries.minecraft.net/net/minecraft/minecraft_serverSrc/1.8-PROJECT(SpongeCommon)/minecraft_serverSrc-1.8-PROJECT(SpongeCommon).pom'. Received status code 403 from server: Forbidden

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
:SpongeCommon:compileJava

BUILD FAILED

Total time: 9.338 secs
Could not GET 'https://libraries.minecraft.net/net/minecraft/minecraft_serverSrc/1.8-PROJECT(SpongeCommon)/minecraft_serverSrc-1.8-PROJECT(SpongeCommon).pom'. Received status code 403 from server: Forbidden
3:10:39 PM: External task execution finished 'setupDecompWorkspace'.

This should be fixed by https://github.com/MinecraftForge/ForgeGradle/commit/993adcc335573143f3f4251df13a142ca10321cf, please reopen if this is still an issue.


Bug: Installing version 2.12.0 404 error on abandonware...

Describe the Bug
Getting the following error during install:

<EMAIL_ADDRESS>install
node-pre-gyp install --fallback-to-build --update-binary

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-10/bluetooth_hci_socket-0.5.3-10-node-v115-linux-arm.tar.gz
make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'
To Reproduce
Update
Expected Behavior
no error
Relevant Log Output
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-10/bluetooth_hci_socket-0.5.3-10-node-v115-linux-arm.tar.gz
make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'

Config for homebridge-switchbot
na

Screenshots
No response
Device and Model
Raspberry Pi 4
Node.js Version
20.9.0
NPM Version
10.1.0
Homebridge Version
1.7.0
Homebridge Switchbot Plugin Version
2.12
Homebridge Config UI X Plugin Version
4.52.3
Operating System
Raspbian

I think the url needs to be updated to:
https://github.com/abandonware/node-bluetooth-hci-socket/releases/tag/v0.5.3-10.tar.gz

I'm also hitting this.

will be resolved in next release.

Same issue here. I get errors on node-switchbot:[Object object]
It can not establish the ble connection

What node version is required for this plugin and the [node-bluetooth-hci-socket](https://github.com/noble/node-bluetooth-hci-socket) ?

Hey! Adding my two cents here: still an issue with v2.12.1 from a few hours ago.

Getting the following errors now with v.2.12.1
`
Running post-install scripts...

<EMAIL_ADDRESS>install
node-pre-gyp install --fallback-to-build --update-binary

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-10/bluetooth_hci_socket-0.5.3-10-node-v115-linux-arm.tar.gz
make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'
CXX(target) Release/obj.target/bluetooth_hci_socket/src/BluetoothHciSocket.o
In file included from ../src/BluetoothHciSocket.cpp:8:
../../../nan/nan.h: In function 'bool Nan::IdleNotification(int)':
../../../nan/nan.h:689:32: warning: 'bool v8::Isolate::IdleNotificationDeadline(double)' is deprecated: Use MemoryPressureNotification() to influence the GC schedule. [-Wdeprecated-declarations]
689 |         idle_time_in_ms * 0.001);
|                                ^
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-initialization.h:13,
from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:34,
from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
from ../src/BluetoothHciSocket.cpp:7:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-isolate.h:1293:8: note: declared here
1293 |   bool IdleNotificationDeadline(double deadline_in_seconds);
|        ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
from ../src/BluetoothHciSocket.cpp:7:
../src/BluetoothHciSocket.cpp: At global scope:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1172:7: warning: cast between incompatible function types from 'void ()(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void ()(v8::Localv8::Object)'} to 'node::addon_register_func' {aka 'void ()(v8::Localv8::Object, v8::Localv8::Value, void)'} [-Wcast-function-type]
1172 |       (node::addon_register_func) (regfunc),
|       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1206:3: note: in expansion of macro 'NODE_MODULE_X'
1206 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
|   ^~~~~~~~~~~~~
../src/BluetoothHciSocket.cpp:740:1: note: in expansion of macro 'NODE_MODULE'
740 | NODE_MODULE(binding, BluetoothHciSocket::Init);
| ^~~~~~~~~~~
SOLINK_MODULE(target) Release/obj.target/bluetooth_hci_socket.node
COPY Release/bluetooth_hci_socket.node
COPY /var/lib/homebridge/node_modules/<EMAIL_ADDRESS>TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'

<EMAIL_ADDRESS>install
node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'
SOLINK_MODULE(target) Release/obj.target/noble.node
COPY Release/noble.node
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'

<EMAIL_ADDRESS>install
node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
CC(target) Release/obj.target/libusb/libusb/libusb/core.o
CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o
CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o
CC(target) Release/obj.target/libusb/libusb/libusb/io.o
CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o
CC(target) Release/obj.target/libusb/libusb/libusb/sync.o
CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o
CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o
CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_usbfs.o
CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_udev.o
rm -f Release/obj.target/usb.a Release/obj.target/usb.a.ar-file-list; mkdir -p dirname Release/obj.target/usb.a
ar crs Release/obj.target/usb.a @Release/obj.target/usb.a.ar-file-list
COPY Release/usb.a
CXX(target) Release/obj.target/usb_bindings/src/node_usb.o
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-object.h:9,
from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-array-buffer.h:13,
from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:24,
from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
from ../src/node_usb.h:14,
from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:45: error: 'is_lvalue_reference_v' is not a member of 'std'; did you mean 'is_lvalue_reference'?
106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v>>
|                                             ^~~~~~~~~~~~~~~~~~~~~
|                                             is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:66: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v>>
|                                                                  ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:67: error: template argument 1 is invalid
106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v>>
|                                                                   ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:71: error: expected unqualified-id before '>' token
106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v>>
|                                                                       ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:43: error: 'is_lvalue_reference_v' is not a member of 'std'; did you mean 'is_lvalue_reference'?
123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v>* = nullptr>
|                                           ^~~~~~~~~~~~~~~~~~~~~
|                                           is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:64: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v>* = nullptr>
|                                                                ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:65: error: template argument 1 is invalid
123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v>* = nullptr>
|                                                                 ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:70: error: expected unqualified-id before '=' token
123 | emplate <class T, std::enable_if_t<!std::is_lvalue_reference_v>* = nullptr>
|                                                                     ^
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
from ../src/node_usb.h:14,
from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:711:28: error: 'std::string_view' has not been declared
711 |     Environment* env, std::string_view main_script_source_utf8);
|                            ^~~~~~~~~~~
../src/node_usb.cc: In function 'Napi::Value SetDebugLevel(const Napi::CallbackInfo&)':
../src/node_usb.cc:118:71: warning: 'void libusb_set_debug(libusb_context*, int)' is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
118 |  libusb_set_debug(usb_context, info[0].AsNapi::Number().Int32Value());
|                                                                       ^
In file included from ../src/node_usb.h:11,
from ../src/node_usb.cc:1:
../libusb/libusb/libusb.h:1325:18: note: declared here
1325 | void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
|                  ^~~~~~~~~~~~~~~~
make: *** [usb_bindings.target.mk:122: Release/obj.target/usb_bindings/src/node_usb.o] Error 1
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess. (/opt/homebridge/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
gyp ERR!
Restoring previous version...
Restore Complete. Installation failed.
Bundled install / update could not complete. Trying regular install / update using npm.
USER: pi
DIR: /var/lib/homebridge
CMD: npm install --save<EMAIL_ADDRESS>

Still having the issue with 2.13.1:
Running post-install scripts...

><EMAIL_ADDRESS>install
> node-pre-gyp install --fallback-to-build --update-binary

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-10/bluetooth_hci_socket-0.5.3-10-node-v115-linux-arm.tar.gz

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'
  CXX(target) Release/obj.target/bluetooth_hci_socket/src/BluetoothHciSocket.o
In file included from ../src/BluetoothHciSocket.cpp:8:
../../../nan/nan.h: In function 'bool Nan::IdleNotification(int)':
../../../nan/nan.h:689:32: warning: 'bool v8::Isolate::IdleNotificationDeadline(double)' is deprecated: Use MemoryPressureNotification() to influence the GC schedule. [-Wdeprecated-declarations]
  689 |         idle_time_in_ms * 0.001);
      |                                ^
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-initialization.h:13,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:34,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-isolate.h:1293:8: note: declared here
 1293 |   bool IdleNotificationDeadline(double deadline_in_seconds);
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
../src/BluetoothHciSocket.cpp: At global scope:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1172:7: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local<v8::Object>)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)'} [-Wcast-function-type]
 1172 |       (node::addon_register_func) (regfunc),                          \
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1206:3: note: in expansion of macro 'NODE_MODULE_X'
 1206 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../src/BluetoothHciSocket.cpp:740:1: note: in expansion of macro 'NODE_MODULE'
  740 | NODE_MODULE(binding, BluetoothHciSocket::Init);
      | ^~~~~~~~~~~
  SOLINK_MODULE(target) Release/obj.target/bluetooth_hci_socket.node
  COPY Release/bluetooth_hci_socket.node
  COPY /var/lib/homebridge/node_modules/<EMAIL_ADDRESS>  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'

><EMAIL_ADDRESS>install
> node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'
  SOLINK_MODULE(target) Release/obj.target/noble.node
  COPY Release/noble.node
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'

><EMAIL_ADDRESS>install
> node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
  CC(target) Release/obj.target/libusb/libusb/libusb/core.o
  CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o
  CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o
  CC(target) Release/obj.target/libusb/libusb/libusb/io.o
  CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o
  CC(target) Release/obj.target/libusb/libusb/libusb/sync.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_usbfs.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_udev.o
rm -f Release/obj.target/usb.a Release/obj.target/usb.a.ar-file-list; mkdir -p `dirname Release/obj.target/usb.a`
ar crs Release/obj.target/usb.a @Release/obj.target/usb.a.ar-file-list
  COPY Release/usb.a
  CXX(target) Release/obj.target/usb_bindings/src/node_usb.o
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-object.h:9,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-array-buffer.h:13,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:24,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/node_usb.h:14,
                 from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:45: error: 'is_lvalue_reference_v' is not a member of 'std'; did you mean 'is_lvalue_reference'?
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                             ^~~~~~~~~~~~~~~~~~~~~
      |                                             is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:66: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                  ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:67: error: template argument 1 is invalid
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                   ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:71: error: expected unqualified-id before '>' token
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                       ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:43: error: 'is_lvalue_reference_v' is not a member of 'std'; did you mean 'is_lvalue_reference'?
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:64: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:65: error: template argument 1 is invalid
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                 ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:70: error: expected unqualified-id before '=' token
  123 | emplate <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                     ^

In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/node_usb.h:14,
                 from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:711:28: error: 'std::string_view' has not been declared
  711 |     Environment* env, std::string_view main_script_source_utf8);
      |                            ^~~~~~~~~~~
../src/node_usb.cc: In function 'Napi::Value SetDebugLevel(const Napi::CallbackInfo&)':
../src/node_usb.cc:118:71: warning: 'void libusb_set_debug(libusb_context*, int)' is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
  118 |  libusb_set_debug(usb_context, info[0].As<Napi::Number>().Int32Value());
      |                                                                       ^
In file included from ../src/node_usb.h:11,
                 from ../src/node_usb.cc:1:
../libusb/libusb/libusb.h:1325:18: note: declared here
 1325 | void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
      |                  ^~~~~~~~~~~~~~~~
make: *** [usb_bindings.target.mk:122: Release/obj.target/usb_bindings/src/node_usb.o] Error 1
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.<anonymous> (/opt/homebridge/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
gyp ERR!
Restoring previous version...
Restore Complete. Installation failed.

Bundled install / update could not complete. Trying regular install / update using npm.

Is there any way to work around this? I'm trying to use my Switchbot Bot with BLE...

Yes, please update.

Any word on why this is not being fixed?

@donavanbecker - looks like the fix was never pushed into the latest release - any reason why?

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-10/bluetooth_hci_socket-0.5.3-10-node-v115-linux-arm.tar.gz

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'
  CXX(target) Release/obj.target/bluetooth_hci_socket/src/BluetoothHciSocket.o
In file included from ../src/BluetoothHciSocket.cpp:8:
../../../nan/nan.h: In function ‘bool Nan::IdleNotification(int)’:
../../../nan/nan.h:689:32: warning: ‘bool v8::Isolate::IdleNotificationDeadline(double)’ is deprecated: Use MemoryPressureNotification() to influence the GC schedule. [-Wdeprecated-declarations]
  689 |         idle_time_in_ms * 0.001);
      |                                ^
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-initialization.h:13,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:34,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-isolate.h:1293:8: note: declared here
 1293 |   bool IdleNotificationDeadline(double deadline_in_seconds);
      |        ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
../src/BluetoothHciSocket.cpp: At global scope:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1172:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
 1172 |       (node::addon_register_func) (regfunc),                          \
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:1206:3: note: in expansion of macro ‘NODE_MODULE_X’
 1206 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../src/BluetoothHciSocket.cpp:740:1: note: in expansion of macro ‘NODE_MODULE’
  740 | NODE_MODULE(binding, BluetoothHciSocket::Init);
      | ^~~~~~~~~~~
  SOLINK_MODULE(target) Release/obj.target/bluetooth_hci_socket.node
  COPY Release/bluetooth_hci_socket.node
  COPY /var/lib/homebridge/node_modules/<EMAIL_ADDRESS>  TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'

><EMAIL_ADDRESS>install
> node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'
  SOLINK_MODULE(target) Release/obj.target/noble.node
  COPY Release/noble.node
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/noble/build'

><EMAIL_ADDRESS>install
> node-gyp-build

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
  CC(target) Release/obj.target/libusb/libusb/libusb/core.o
  CC(target) Release/obj.target/libusb/libusb/libusb/descriptor.o
  CC(target) Release/obj.target/libusb/libusb/libusb/hotplug.o
  CC(target) Release/obj.target/libusb/libusb/libusb/io.o
  CC(target) Release/obj.target/libusb/libusb/libusb/strerror.o
  CC(target) Release/obj.target/libusb/libusb/libusb/sync.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/poll_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/threads_posix.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_usbfs.o
  CC(target) Release/obj.target/libusb/libusb/libusb/os/linux_udev.o
rm -f Release/obj.target/usb.a Release/obj.target/usb.a.ar-file-list; mkdir -p `dirname Release/obj.target/usb.a`
ar crs Release/obj.target/usb.a @Release/obj.target/usb.a.ar-file-list
  COPY Release/usb.a
  CXX(target) Release/obj.target/usb_bindings/src/node_usb.o
In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-object.h:9,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8-array-buffer.h:13,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/v8.h:24,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node.h:73,
                 from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/node_usb.h:14,
                 from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:45: error: ‘is_lvalue_reference_v’ is not a member of ‘std’; did you mean ‘is_lvalue_reference’?
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                             ^~~~~~~~~~~~~~~~~~~~~
      |                                             is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:66: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                  ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:67: error: template argument 1 is invalid
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                   ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:106:71: error: expected unqualified-id before ‘>’ token
  106 |   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
      |                                                                       ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:43: error: ‘is_lvalue_reference_v’ is not a member of ‘std’; did you mean ‘is_lvalue_reference’?
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                           ^~~~~~~~~~~~~~~~~~~~~
      |                                           is_lvalue_reference
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:64: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:65: error: template argument 1 is invalid
  123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                 ^
/home/pi/.cache/node-gyp/20.10.0/include/node/v8-maybe.h:123:70: error: expected unqualified-id before ‘=’ token
  123 | emplate <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
      |                                                                     ^

In file included from /home/pi/.cache/node-gyp/20.10.0/include/node/node_buffer.h:25,
                 from ../src/node_usb.h:14,
                 from ../src/node_usb.cc:1:
/home/pi/.cache/node-gyp/20.10.0/include/node/node.h:711:28: error: ‘std::string_view’ has not been declared
  711 |     Environment* env, std::string_view main_script_source_utf8);
      |                            ^~~~~~~~~~~
../src/node_usb.cc: In function ‘Napi::Value SetDebugLevel(const Napi::CallbackInfo&)’:
../src/node_usb.cc:118:71: warning: ‘void libusb_set_debug(libusb_context*, int)’ is deprecated: Use libusb_set_option instead [-Wdeprecated-declarations]
  118 |  libusb_set_debug(usb_context, info[0].As<Napi::Number>().Int32Value());
      |                                                                       ^
In file included from ../src/node_usb.h:11,
                 from ../src/node_usb.cc:1:
../libusb/libusb/libusb.h:1325:18: note: declared here
 1325 | void LIBUSB_CALL libusb_set_debug(libusb_context *ctx, int level);
      |                  ^~~~~~~~~~~~~~~~
make: *** [usb_bindings.target.mk:122: Release/obj.target/usb_bindings/src/node_usb.o] Error 1
make: Leaving directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/usb/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.<anonymous> (/opt/homebridge/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:209:23)
gyp ERR!
Restoring previous version...
Restore Complete. Installation failed.

Bundled install / update could not complete. Trying regular install / update using npm.

USER: pi
DIR: /var/lib/homebridge
CMD: npm install --save<EMAIL_ADDRESS>
(⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂) ⠴ idealTree: sill logfile start cleaning logs, removing 1 files

This error is benign, there is an attempt to download a non-existent binary but bluetooth-hci-socket will always be built from the source.
https://github.com/abandonware/node-bluetooth-hci-socket/pull/54 should fix the issue.
@donavanbecker can you help with getting a release out?

The latest build attempting to fix this benign error completely wrecked the plugin. After the update my Homebridge instance doesn't start up.

The fix for this benign error hasn't landed yet in this project.
https://github.com/abandonware/noble/pull/321 needs to be merged and released first.

Migrated to home assistant. It seems to be a more stable and maintained platform.
And switchbot BLE devices worked out of the box.

Is this going to be fixed, as of today:
node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-11/bluetooth_hci_socket-0.5.3-11-node-v115-linux-arm64.tar.gz
The most recent updates all have this issue and its killed my HB stability.

It's a abandonware/node-bluetooth-hci-socket issue

It's a abandonware/node-bluetooth-hci-socket issue.
Could try this: abandonware/node-bluetooth-hci-socket#42

Running 'sudo apt-get install build-essential' says that build-essential "is already on the newest version (12.9)"

Unfortunately this is something that has to be fixed up stream.

Looks like there was a new version released up stream. Can you try reinstalling the plugin and see if that resolves the?

Looks like the install issue is fixed.
However, I’m getting this error now when trying operate curtain 3

The curtain 3 device and Pi4 are close proximity. Is there some way to get more details on the error?

Closing as that is a different issue. Please open another issue with info of your setup.

To be clear, on the current release (3.4.0). I still get the error:

><EMAIL_ADDRESS>install
> node-pre-gyp install --fallback-to-build --update-binary

node-pre-gyp ERR! install response status 404 Not Found on https://github.com/abandonware/node-bluetooth-hci-socket/releases/download/0.5.3-11/bluetooth_hci_socket-0.5.3-11-node-v115-linux-arm.tar.gz

make: Entering directory '/var/lib/homebridge/node_modules/@switchbot/homebridge-switchbot/node_modules/@abandonware/bluetooth-hci-socket/build'
  CXX(target) Release/obj.target/bluetooth_hci_socket/src/BluetoothHciSocket.o
In file included from /home/pi/.cache/node-gyp/20.11.0/include/node/node_buffer.h:25,
                 from ../src/BluetoothHciSocket.cpp:7:
/home/pi/.cache/node-gyp/20.11.0/include/node/node.h:1172:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
 1172 |       (node::addon_register_func) (regfunc),                          \
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.cache/node-gyp/20.11.0/include/node/node.h:1206:3: note: in expansion of macro ‘NODE_MODULE_X’
 1206 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../src/BluetoothHciSocket.cpp:860:1: note: in expansion of macro ‘NODE_MODULE’
  860 | NODE_MODULE(binding, BluetoothHciSocket::Init);
      | ^~~~~~~~~~~

On the latest Beta (3.5.0-beta.9) I never see "Running post-install scripts..." during install. I don't know if there is a way see longs form the past during install.