Explicitly instantiate floating-point--only sf::Vector2 and sf::Vector3 members in a source file

Thanks a lot for making a contribution to SFML! 🙂
Before you create the pull request, we ask you to check the follow boxes. (For small changes not everything needs to ticked, but the more the better!)

[x] Has this change been discussed on the forum or in an issue before?
[x] Does the code follow the SFML Code Style Guide?
[ ] Have you provided some example/test code for your changes?
[ ] If you have additional steps which need to be performed list them as tasks!

Description
This PR removes the <cmath> and <type_traits> includes from Vector2.hpp and Vector3.hpp, moving them to source files alongside the definition of floating-point--only member functions for SFML vectors. This is done to improve compilation speed and avoid transitive includes.
This PR is related to the issue #1893.
Tasks

[ ] Tested on Linux
[x] Tested on Windows
[ ] Tested on macOS
[ ] Tested on iOS
[ ] Tested on Android

How to test this PR?
CI.

SFMLBuildMaster: Build this please.

SFMLBuildMaster: Build this please.


imageoptim-cli unable to handle filenames with parentheses "()"

imageoptim-cli: 2.0.3
imageOptim: 1.8.1
OS Version: macOS Mojave 10.14.1
imageoptim cli is not able handle / find file with parentheses in the name. This is very easily reproducible. I tried using both "" for the filenames as well as escaping them with back slash. The files are handled properly via the imageoptim GUI.
bash$
bash$ imageoptim -V
2.0.3
bash$
bash$ ls -1
01 filename with (Parentheses).png
02 filename without Parentheses.png
bash$
bash$ imageoptim "01 filename with (Parentheses).png"
! No images matched the patterns provided
bash$
bash$ imageoptim 01\ filename\ with\ \(Parentheses\).png
! No images matched the patterns provided
bash$
bash$ imageoptim "02 filename without Parentheses.png"
i Running ImageOptim...
‚úì 02 filename without Parentheses.png was: 96kB now: 96kB saving: 0B (0.00%)
‚úì TOTAL was: 96kB now: 96kB saving: 0B (0.00%)
‚úì Finished
bash$

Not sure if I am missing something here?

Hi @anuragkothari, these patterns are passed directly to https://github.com/isaacs/node-glob. I'm not sure but I think it may be that they represent invalid glob patterns.

Hi @JamieMason,
Thanks a lot for your response and time.
Please excuse my ignorance of git and software development in general, here are few questions I have:

Does this mean it is by design?
if yes then any idea how / where can I find a way to escape the the parenthesis in the filename?
If no then do I have to raise an issue/bug/ticket with the https://github.com/isaacs/node-glob?

Just in case someone runs into the same issue here is a workaround (conjured and adapted from multiple google searches) I have used for the time being (involves renaming files and replacing parenthesis with some other characters which are not used in the file names and then replacing those characters back to parenthesis):
Replace "(" by "="
find . -depth -name '*(*.png' -execdir bash -c 'mv -- "$1" "${1//(/=}"' bash {} \;
Replace ")" by "#"
find . -depth -name '*)*.png' -execdir bash -c 'mv -- "$1" "${1//)/#}"' bash {} \;
Use imageoptim
find . -type f -name "*.png" -execdir imageoptim {} \;
Replace "=" by "("
find . -depth -name '*=*.png' -execdir bash -c 'mv -- "$1" "${1//=/(}"' bash {} \;
Replace "#" by ")"
find . -depth -name '*#*.png' -execdir bash -c 'mv -- "$1" "${1//#/)}"' bash {} \;
Thanks a lot for your time.
Regards
-Anurag

I'm sorry @anuragkothari I honestly don't know, you would need to maybe ask the https://github.com/isaacs/node-glob project to find an answer to this.


example

I hope you understand that it is unusable without a Delphi dpr example

the actual code base can be formed to an executable with FPC - the Free Pascal Compiler.

comment edited


Buttons in export image view are not responsive with export canvas side

I remember seeing you discuss how this buttons would look like when the canvas is big enough, if I don't remember bad. Yesterday while working in my project, I notice that if I maximized the export canvas, the buttons for exporting or cancelling were not being relocated.

cc @saleiva  @javierarce
I'm working on Chrome 47.0.2503.0 dev (64-bit) under OS X.

Duplicated https://github.com/CartoDB/cartodb/issues/5362


Support attachMap and attachSeed independently of attach

Currently the parameters attachMap and attachSeed only have an effect if attach is set as well.
However, there might be cases where it would be useful to replace the final JAR file (i.e. attach=false), but still use attachMap=true to attach the mappings to make troubleshooting later easier.
Would it be possible to decouple these options so they are independent of attach?
Workaround
Set attach=true and appendClassifier=false, and then attachMap=true or attachSeed=true.
It appears this will then make the plugin use the same output name as the original JAR file, therefore replacing it and not additionally attaching the processed JAR.
But that feels rather hacky and I am not sure if that is officially supported usage of the plugin, since it defeats the purpose of attach=true.

So attach is related to the outJar/inJar parameters.
For outJar the docs say: "If attach=true the value ignored and name constructed base on classifier. If empty input jar would be overdriven."
Attaching is not really needed for anything but automatically deploying the produced artifacts to a repository. You can leave attach as false and manually use https://www.mojohaus.org/build-helper-maven-plugin/attach-artifact-mojo.html to attach whatever artifacts you wish.
So also if you want to obfuscate, but not deploy the obfuscated JAR, you could attach the seed and map files with the build-helper-maven-plugin.
In your case where you obfuscate and replace the original JAR and attach and deploy the JAR, seed an map, I would say the configuration you use is correct and fine.

Yes, I think we could just move the attachMap and attachSeed conditions to be fully separate from attach condition. It make make sense to rename attach to be attachJar then for consistency, but that would be a breaking change.

I think that is a good strategy:

Deprecate attach.
Add attachJar parameter
Make both Big Booleans. If attachJar is not-null, use that value. If null, use attach if not-null. If both are null, default to the current default, which is false.
In addition to point 3, always log warning if attach is not-null.
In a later version, remove attach parameter.


Set single stat thresholds from triggers

I'm submitting a ...

[ ] Bug report
[x] Feature requestdd
[ ] Question / Support request

Recently I created dashboard of single stats using grafana template. Each item has triggers configured in Zabbix. It would be nice to provide functionality to set thresholds from zabbix triggers.  I already prepared Proof of Concept and it almost work - proper background color is set after first dashboard refresh (maybe you could help me with that? I need a way to re-render dashboard).
Possibilities:

always replace thresholds when triggers are available
replace thresholds on checked checkbox in configuration
replace thresholds on keyword ex. auto in field thresholds (I'm not sure if this is possible)

In grafana we have 3 states of singlestat (ok, warn, error) but in Zabbix we can define much more triggers. My proposition is to set first threshold value from first warning/average trigger and second threshold from first high/disaster trigger. In simplest solution we can take first and last value from array of triggers (I think that in most cases people have only warning and error triggers).
Tomorrow I can provide you code samples.

Ok. I change thresholds for graphs and this should be possible for singlestat as well.

I'm thinking about this feature and actually can't find a good solution. I don't like the fact that query result makes changes in the dashboard model. And because of this I  don't like how this feature works now for graph panels. Dashboard model should be intact. So I want to find another way to implement this. Maybe, template variables are suitable for this, not sure.
@akotynski any thoughts?


Header markdown breaks shortcode output on i386 (0.15, 0.16), amd64 (0.16); OS: Arch Linux

I noticed some odd behaviour today, I have a shortcode:
`

`
That renders a countdown to a given date when called with, for example, {{% countdown 2016-08-10 %}}
On my 64bit machines this still renders fine if I make a it header by prefacing it with a #
# {{% countdown 2016-08-10 %}}
however on my netbook, a 32bit machine it just renders '#}', this means that I can't publish from my 32bit machine because it'll break any use of that shortcode, it works fine if I remove the # from the beginning of the line however. So I'm guessing something odd is happening on 32bit builds of Hugo when shortcode output is modified by markdown.
edit: I rewrote the javascript portion of the shortcode, the problem still persists though.

What OS is your netbook running?

Arch Linux, Hugo v0.16

I just updated to 0.16 on my 64bit machine and the problem now occurs there too.

Problem also occurs on 32bit debian

So, all this noise about 32-bit vs 64-bit is irrelevant?  It looks like 0.16 is the problem regardless of the OS or architecture.  Please confirm.

Checked again on a vm, yes, it definitely appears to be 0.16, I'll amend the issue title and original post.

Probably a regression from this fix: https://github.com/spf13/hugo/issues/1904
But Blackfriday should have handled it.


Github Actions Cache needs to be Deleted when using new version

Hey thanks for the action and the update!
When using the newest version we initially had issues like this:
/home/runner/work/_setupsbt: No such file or directory
This can be solved with removing the cached sbt versions in the github actions tab.
Might be best to mention this in the Changelog of v1.1.0
Thanks

Ran in to a related issue with the new version.
This is the output in v1.0.0:
Run mkdir -p setupsbt
/opt/actions-runner/_work/<repo>/<repo>/setupsbt /opt/actions-runner/_work/<repo>/<repo>

In v1.0.1:
Run mkdir -p "/home/runner/work/_setupsbt"
mkdir: cannot create directory ‘/home/runner’: Permission denied

In an org with Github Enterprise and private runners

@BjoernJeschke  Thanks for the report. I think this means that I need to add more information into the cache key so it's invalidated automatically.


[CLU] enable linting

Noticed that we had linting disabled for CLU so fixing that.
Generally clean, just a few whitespace and line too long errors to fix.

API change check
API changes are not detected in this pull request.


Provide an internal command to download resources

Provide an internal command to download resources

Verify that following command downloads the resource
vscode.commands.executeCommand('_workbench.downloadResource', vscode.Uri.parse('https://user-images.githubusercontent.com/1215681/35317099-5ccacae4-00d5-11e8-8cbc-b325f0358271.png') /* resource to download */
, '/users/home/downloads/’ /* path on the disk to download */)

@mjbvz Can you please verify it now.

@sandy081 should we be killing the file extension?

@sbatten Yes, We do not want to retain any extensions or names


Support for Batch APIs in Table

Which service(blob, file, queue, table) does this issue concern?
table
Which version of the Azurite was used?
legacy_V2
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
npm
What's the Node.js version?
What problem was encountered?
We have a service in Azure which uses the current Azure Storage apis to do operations in Table and Blob. We are currently working on moving this to Linux containers and we need a storage emulator to work for linux machines (Ours is a dev box scenario).
We have lots of batch operations in table so we want to keep using the same service to point to Azure storage in cloud, emulator in dev box. When are the batch apis going to be implemented for tables?
Steps to reproduce the issue?
Have you found a mitigation/solution?
No

Hi preetriti1! Thanks for your feedback! However, supporting new features of Table service is not in our recent backlog. Cosmos DB team is working on an official cross-platform emualtor supporting both CosmosDB and Table API.

I see that this has been added to the 3.3 label then closed.
Microsoft is not doing anything on their side to provide a *nix based emulator (have a look here).
I think providing batch operations would solve quite some issues for people trying to run their DOTNET core development using on Azure Table Storage locally


[to be tested] adding resources requests & limits to operator controller

Should fix the access-control-requests-and-limits test from tnf.

BTW plese rebase the PR to avoid issues with this change already merged: https://github.com/openshift-kni/example-cnf/pull/62

@capolrik , regarding the requests-limits test, it's still failing for the controller-manager pods, but I've seen that these specs are, in fact, defined in our deployment files. But when checking the pods and deployments in the OCP cluster, ther's no config for requests and limits. It's like that info is ignored somehow. So, I'd say we need to reach operator-sdk team and raise a bug, because it's not a normal behavior.

Let's test it again, now it should be passing the isolated-cpu test

@capolrik example-cnf is not working in OCP 4.12-13 right now, that's why th job failed, you should try in OCP 4.14 in advance.
Anyway I'm trying to find a workaround for the case of OCP 4.12-13, just to avoid issues there

@capolrik , some tasks we can do to troubleshoot what may be happening:

patch the deployment of the controller-manager to reinclude requests-limits, then recreate the pod to see if it applies that config
check ownerReferences till reaching the resource in the highest level of the hierarchy to check if it's overriding resources spec

I may take a look to them next Monday to see if I find something weird, I can keep you posted.

I've seen the deployment made in cluster4 for testing this change, and it's really interesting that, despite the deployment of any controller-manager doesn't have the resources defined, as we saw before, the CSV (which is included in the ownerReference of the deployment) has it:
                                            "resources": {
                                                "limits": {
                                                    "cpu": "1",
                                                    "memory": "512Mi"
                                                },
                                                "requests": {
                                                    "cpu": "10m",
                                                    "memory": "64Mi"
                                                }
                                            },

So, what we're providing in the CSV is correct. Then it's a matter of checking why the deployment created by the CSV is not taking that resources section

@capolrik I could see cpu-isolation test is now passing, great work here!
Then, my question is, do you also want to address the requests-and-limits test here? For that, we'll need to fix the issue we're having with the controller-manager pods. Last observation I made, as you can see in my previous comment, is that the CSV contains the requests-limits, but it's not being transferred to the deployment that is generated by the operator.

@capolrik I could see cpu-isolation test is now passing, great work here! Then, my question is, do you also want to address the requests-and-limits test here? For that, we'll need to fix the issue we're having with the controller-manager pods. Last observation I made, as you can see in my previous comment, is that the CSV contains the requests-limits, but it's not being transferred to the deployment that is generated by the operator.

We are getting close, I think all can be handle in the same PR

@capolrik I could see cpu-isolation test is now passing, great work here! Then, my question is, do you also want to address the requests-and-limits test here? For that, we'll need to fix the issue we're having with the controller-manager pods. Last observation I made, as you can see in my previous comment, is that the CSV contains the requests-limits, but it's not being transferred to the deployment that is generated by the operator.

We are getting close, I think all can be handled in the same PR

Cool! Just in case you also explore it, I tried to patch a deployment to include the resources, and it didn't allow me to do it, so there's something there that is really preventing the deployment from having the correct requests-limits, somehow.


[SampleCard-FlightDetails.json; Config-Cortana-skills-classic]: The luminosity ratio for the text "Flight to JFK" is 3.67:1 and should be atleast 4.5:1

Target Platforms
Android
SDK Version
2<IP_ADDRESS>
Application Name
Adaptive Card
Problem Description
Test Environment:
OS: Android 12
Device: S21+
Screen reader: Talkback
AdaptiveCard Android App version:  2<IP_ADDRESS>
Pre-requisite:
Import-Sample Cards->FlightDetails.json; Config-Cortana-skills-classic
Repro Steps:

Navigate to the Visual.
Navigate to the sample card.
Check color contrast ratio for the text "Flight to JFK"
Observe the issue.

Actual Result:
The luminosity ratio for the text "Flight to JFK" is 3.67:1 and should be atleast 4.5:1
Expected Result:
The luminosity ratio for the text "Flight to JFK" is 3.67:1 and should be atleast 4.5:1
Note:
This issue is also repro on below configs for text "Flight to JFK"
Cortana-skills-light.json (CCA is 4:1)
Outlook-desktop.json (CCA is 3.21:1)
Rener-to-Image.json (CCA is 3.21:1)
Skype.json (CCA is 2.68:!)
Windows-Notification.json (CCA is 3.56:1)
Windows-Timeline.json (CCA is 2.88:1)
User Experience:
Low vision users will might not able properly tell the text if color contrast is not sufficient.
WCAG Reference:
https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum
"Have feedback to share on Bugs ? Please help fill Trusted Tester Bug Feedback (office.com) “,
Screenshots

Card JSON
NA

Sample Code Language
No response
Sample Code
No response

duplicate issue of hostconfig configuration options.


more responsive spinner

Pull Request Test Coverage Report for Build 906877733

36 of 37 (97.3%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.08%) to 91.707%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

spinner.go
36
37
97.3%

Totals

Change from base Build 897063574:
0.08%

Covered Lines:
564

Relevant Lines:
615

💛  - Coveralls


Image size is too big

I consider it a great idea to build image in golang-alpine  and  packaged in alpine
FROM golang:1.17 as builder
...
FROM golang:1.17

to
FROM golang:1.17-alpine as builder
...
FROM alpine

It can reduce images size from 1G+ to less than 200MB

@wanfuuyu Great idea! Would you like to send a PR for that?


cargo +nightly clippy --all --all-features --all-targets -- -D clippy::all  error

commit 7a436eae40a6b62371123c96941e058b7fe52b63 (HEAD -> master, origin/master, origin/HEAD)
Author: Xinye Tao<EMAIL_ADDRESS>Date:   Tue Jun 28 14:09:49 2022 +0800
support supplying file system to run ctl command (#231)

Signed-off-by: tabokie<EMAIL_ADDRESS>
cat /etc/centos-release
CentOS Stream release 8

To avoid constantly rebuilding the cache, we use a specific nightly toolchain in our CI. That's why these issues are not caught early:
https://github.com/tikv/raft-engine/blob/7a436eae40a6b62371123c96941e058b7fe52b63/.github/workflows/rust.yml#L22
Feel free to fix these issues, and upgrade CI toolchain as well.

To be future-proof, I'll keep the issue here even though #244 will fix it temporarily. Contributions are always welcome if you find the CI toolchain is outdated.


PDF problem with tables

We are using puppeteer to allow our clients to export the page as png/pdf. We have a very specific and odd problem with tables when we are using the pdf functionality ( we are working with agGrid if it helps).
This is png result:

This is the pdf result:

As you can see, the "Table with bad currency type (#)" table is missing data in contrast to the png image.
This is a simple example, we have pages with multiple tables that just don't get into the PDF.
The relevant code:
 const options = {
    timeout : 100000,
    headless: false,
    args    : ['--disable-dev-shm-usage', '--no-sandbox', '--disable-setuid-sandbox']
  }

 const browser = await puppeteer.launch(options);
 const page = await browser.newPage();

 await page.pdf({
        path           : path,
        width          : `${params.width}px`,
        height         : `${height}px`,
        printBackground: true
 });

We are kind of lost, can you help, please?

We found out one of the ag-grid classes has display: inline-block, when changed it to display: block, it worked. I don't know the reason. I hope it will help someone else.


Add merge-conflict handling to status dashboard

Should mirror rebase dashboard functionality.
A - abort
y - use version from your commit
b - use version from merge source commit

IMO it should handle more like the inline diff view, with non-single-key shortcuts (so that one can write normally) for choosing ours/theirs.
Outlining ours/theirs properly with a theme would be a nice addition, maybe in the gutter.


How can i remove 0.00 default value in the currency mask?

I have a need to remove 0.00 as a default value in the input box.
I want to show only $ as a default value. Is there anyway to achieve it. Please help me to solve this issue.

In the form builder group you can set the initial value to null, if you are using that approach.

Hi, @bearnithi. A fork of this project has been created due to the original developer's current unavailability, in the hope that the project would advance more quickly. If your question was not answered, would you like to re-open an issue there?


[REQ] Simultanious Post Processing

This is an extra request that could serve as alternative to the thread option, as multi threaded ffmpeg is slower then running 3-4 instances on 1 core.
Could u make it run the processing on background ?
So sab thinks post processing is done and starts with the next one, while after the processing is done the script still pings couchpotato/nzbdrone/sickbeard so they get moved automatically.
The point of this is when you are downloading with 20MB/s + the post processing queue gets huge and this could greatly speed up the efficiency.
The script would have to queue up to 4 ( or changable  number ) conversions, but once 4 are already running make it wait.
So < 4, Post process on background else wait ...
Well I can imagine this might be hard to implement or not something u want to add, in that case would it be possible to get a custom script for some kind of donation?

I've been thinking on this myself. I actually I'd prefer not to do this, but rather have the script pass a 0 if the conversion was completed correctly. Logs would be good. There are many concurrency programs that can spawn jobs to run this script. If I have time I will try an write up something.

This isn't so much an issue with my script as it is a limitation of the way
SAB handles its processing. There's nothing stopping you from creating
multiple simultaneous instances of the script using, for example, manual.py.
Check here for possible solutions:
https://www.sabnzbd.org/viewtopic.php?f=2&t=4365
On Tue, Jan 6, 2015 at 2:59 AM, cod3fr3ak<EMAIL_ADDRESS>wrote:

I've been thinking on this myself. I actually I'd prefer not to do this,
but rather have the script pass a 0 if the conversion was completed
correctly. Logs would be good. There are many concurrency programs that can
spawn jobs to run this script. If I have time I will try an write up
something.
—
Reply to this email directly or view it on GitHub
https://github.com/mdhiggins/sickbeard_mp4_automator/issues/116#issuecomment-68836497
.


https://www.facebook.com/erdy.erdy.526438

JavaScript Testing
👩🏻💻 Developer Ready: Complete and ready to set-up JavaScript testing solution. Works out of the box for any React project.
🏃🏽 Instant Feedback: Failed tests run first. Fast interactive mode can switch between running all tests or only test files related to changed files.
📸 Snapshot Testing: Jest can capture snapshots of React trees or other serializable values to simplify UI testing.
Read More: https://jestjs.io/
Metadata
package on npm

There is no Javascript in this repo. Closing.


Add colorbar option to migration matrix

Is this related to issue #8 ?

This PR won't solve #8 as such but still useful, thank you.


Markdown syntax highlighting can't handle C# using statement in fenced code block

Issue Type: Bug
The C# using statement isn't highlighted correctly in a fenced code block with C# syntax highlighting in a markdown file.
Steps to reproduce:

Create a new file
Select markdown language (Ctrl-K M -> "Markdown" -> return)
Create a fenced code block with C# highlighting and a using statement in it (see below)
-> Highlighting until the first semicolon is incorrect

Example file content to reproduce:
```csharp
using (var x = new X())
{
    var y = "test";
    var z = "test";
}
```

Result:

VS Code version: Code 1.28.0 (431ef9da3cf88a7e164f9d33bf62695e07c6c2a9, 2018-10-05T14:58:53.203Z)
OS version: Windows_NT x64 6.3.9600

System Info

Item
Value

CPUs
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz (6 x 2200)

GPU Status
2d_canvas: enabledchecker_imaging: disabled_offflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: disabled_softwarerasterization: unavailable_softwarevideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabled

Memory (System)
16.00GB (3.78GB free)

Process Argv

Screen Reader
no

VM
100%

Extensions (7)

Extension
Author (truncated)
Version

xml
Dot
2.3.2

compareit
in4
0.0.2

eml
lei
0.3.1

Go
ms-
0.6.91

PowerShell
ms-
1.9.0

vscode-hexdump
sle
1.7.0

markdown-pdf
yza
1.2.0

Same behavior in regular c# files:

The problem is with the C# grammar. when seeing using, it seems to assume that what follows is a using static directive.

This issue was moved to dotnet/csharp-tmLanguage#140


Reporting bug from installation

Install failed on npm version 3.5.2 on Ubuntu 18.04.
No debug log was created.
Failure occurred when attempting to install Framework7.
npm ERR! Linux 5.0.0-31-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "i" "framework7-cli" "cordova" "-g"
npm ERR! node v8.10.0
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script '(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the sharp package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs sharp
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls sharp
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /home/steve/npm-debug.log

same for me

If you are installing as a root or sudo user, have you tried with the npm install --unsafe-perm flag?
(The above question is from the installation issue template - did you see this?)

same here, also on Ubuntu (18.10)
tried with --unsafe-perm - didn't help

works with node 12, fails with node 13

@m00k For Node.js 13, please see #1909

I hope this information helped. Please feel free to re-open with more details if further help is required.


Initial Cisco ASAv support

Hi all,
This PR is to add support for Cisco ASAv, I've build and tested this with the asav9-18-2.qcow2 image that is available from Cisco CML / VIRL.
I'd like to add it to this project so it hopefully can also be supported in https://github.com/srl-labs/containerlab
Contact me if you need help building it @plajjan

Terminal output where you can see the build:
root@containerlab:/home/stimmerman/vrnetlab/asav# make docker-image
../makefile-install.include:32: warning: overriding recipe for target 'docker-pre-build'
../makefile.include:18: warning: ignoring old recipe for target 'docker-pre-build'
for IMAGE in asav9-18-2.qcow2; do \
        echo "Making $IMAGE"; \
        make IMAGE=$IMAGE docker-build; \
done
Making asav9-18-2.qcow2
make[1]: Entering directory '/home/stimmerman/vrnetlab/asav'
../makefile-install.include:32: warning: overriding recipe for target 'docker-pre-build'
../makefile.include:18: warning: ignoring old recipe for target 'docker-pre-build'
rm -f docker/*.qcow2* docker/*.tgz* docker/*.vmdk* docker/*.iso
cat cidfile | xargs --no-run-if-empty docker rm -f
Error response from daemon: No such container: 9883b1915fd6c5c922e613750041ec3e289f9fcd56a6e288a49ea811755f2938
rm cidfile
docker tag vr-asav:9-18-2 vr-asav:9-18-2-previous-build
Building docker image using asav9-18-2.qcow2 as vr-asav:9-18-2
cp ../common/* docker/
make IMAGE=$IMAGE docker-build-image-copy
make[2]: Entering directory '/home/stimmerman/vrnetlab/asav'
../makefile-install.include:32: warning: overriding recipe for target 'docker-pre-build'
../makefile.include:18: warning: ignoring old recipe for target 'docker-pre-build'
cp asav9-18-2.qcow2* docker/
make[2]: Leaving directory '/home/stimmerman/vrnetlab/asav'
(cd docker; docker build --build-arg http_proxy= --build-arg https_proxy= --build-arg IMAGE=asav9-18-2.qcow2 --build-arg VERSION=9-18-2 -t vr-asav:9-18-2 .)
[+] Building 4.4s (9/9) FINISHED                                                                                docker:default
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 531B                                                                                0.0s
 => [internal] load metadata for docker.io/library/debian:bullseye                                                                                2.6s
 => [1/4] FROM docker.io/library/debian:bullseye@sha256:1beb7cf458bdfe71b5220cb2069eb45e3fc7eb77a1ccfb169eaebf5f6c4809ab                                                                                0.0s
 => [internal] load build context                                                                                1.5s
 => => transferring context: 340.35MB                                                                                1.5s
 => CACHED [2/4] RUN apt-get update -qy  && apt-get upgrade -qy  && apt-get install -y     bridge-utils     iproute2     python3-ipy     socat     qemu-kvm     genisoimage  && rm -rf /var/lib/apt/lists/*                                                                             0.0s
 => CACHED [3/4] COPY asav9-18-2.qcow2* /                                                                                0.0s
 => [4/4] COPY *.py /                                                                                0.3s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:6f777c6a2b81046b3cbca83a5b2c2ff437621e0b81f5d7baa129cc9045de9240                                                                                0.0s
 => => naming to docker.io/library/vr-asav:9-18-2                                                                                0.0s
docker inspect --format '{{.RootFS.Layers}}' vr-asav:9-18-2-previous-build | tr -d '][' | awk '{ $(NF)=""; print }' > built-image-sha-previous
docker inspect --format '{{.RootFS.Layers}}' vr-asav:9-18-2 | tr -d '][' > built-image-sha-current
if [ "$(cat built-image-sha-previous | sed -e 's/[[:space:]]*$//')" = "$(cat built-image-sha-current)" ]; then echo "Previous image is the same as current, retagging!"; \
docker tag vr-asav:9-18-2-previous-build vr-asav:9-18-2 || true; \
else \
echo "Current build differ from previous, running install!"; \
docker run --cidfile cidfile --privileged vr-asav:9-18-2 --trace --install ; \
docker commit --change='ENTRYPOINT ["/launch.py"]' $(cat cidfile) vr-asav:9-18-2; \
docker rm -f $(cat cidfile); \
fi
Current build differ from previous, running install!
2023-08-31 11:56:02,108: vrnetlab   DEBUG    Creating overlay disk image /asav9-18-2-0-overlay.qcow2 for /asav9-18-2.qcow2
2023-08-31 11:56:02,118: vrnetlab   DEBUG    (b"Formatting '/asav9-18-2-0-overlay.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=9126805504 backing_file=/asav9-18-2.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16\n", None)
2023-08-31 11:56:02,118: launch     INFO     Installing ASAv
2023-08-31 11:56:02,118: vrnetlab   DEBUG    VM not started; starting!
2023-08-31 11:56:02,118: vrnetlab   INFO     Starting ASAv_vm[0]
2023-08-31 11:56:02,118: vrnetlab   DEBUG    ['qemu-system-x86_64', '-enable-kvm', '-display', 'none', '-machine', 'pc', '-monitor', 'tcp:<IP_ADDRESS>:4000,server,nowait', '-m', '2048', '-serial', 'telnet:<IP_ADDRESS>:5000,server,nowait', '-drive', 'if=ide,file=/asav9-18-2-0-overlay.qcow2', '-device', 'pci-bridge,chassis_nr=1,id=pci.1', '-device', 'e1000,netdev=p00,mac=52:54:00:59:b4:00', '-netdev', 'user,id=p00,net=<IP_ADDRESS>/24,tftp=/tftpboot,hostfwd=udp::2161-<IP_ADDRESS>:161,hostfwd=tcp::2830-<IP_ADDRESS>:830,hostfwd=tcp::2080-<IP_ADDRESS>:80,hostfwd=tcp::2443-<IP_ADDRESS>:443,hostfwd=tcp::2022-<IP_ADDRESS>:22', '-device', 'e1000,netdev=p01,mac=52:54:00:51:38:01,bus=pci.1,addr=0x2', '-netdev', 'socket,id=p01,listen=:10001', '-device', 'e1000,netdev=p02,mac=52:54:00:83:ba:02,bus=pci.1,addr=0x3', '-netdev', 'socket,id=p02,listen=:10002', '-device', 'e1000,netdev=p03,mac=52:54:00:88:95:03,bus=pci.1,addr=0x4', '-netdev', 'socket,id=p03,listen=:10003', '-device', 'e1000,netdev=p04,mac=52:54:00:4e:d1:04,bus=pci.1,addr=0x5', '-netdev', 'socket,id=p04,listen=:10004', '-device', 'e1000,netdev=p05,mac=52:54:00:85:f9:05,bus=pci.1,addr=0x6', '-netdev', 'socket,id=p05,listen=:10005', '-device', 'e1000,netdev=p06,mac=52:54:00:c3:03:06,bus=pci.1,addr=0x7', '-netdev', 'socket,id=p06,listen=:10006', '-device', 'e1000,netdev=p07,mac=52:54:00:47:94:07,bus=pci.1,addr=0x8', '-netdev', 'socket,id=p07,listen=:10007', '-device', 'e1000,netdev=p08,mac=52:54:00:a5:97:08,bus=pci.1,addr=0x9', '-netdev', 'socket,id=p08,listen=:10008']
2023-08-31 11:56:50,173: launch     TRACE    OUTPUT: loader: Platform type set to default
Platform ASAv
loader: Platform type set
2023-08-31 11:56:52,175: launch     TRACE    OUTPUT:  to default
IO memory blocks requested from bigphys 32bit: 196608
INFO: The system integrator has chosen not to place th
2023-08-31 11:56:54,176: launch     TRACE    OUTPUT: e requested string in the SMBIOS
DEBUG: Could not find string for SMBIOS type *** String ***INFO: SMBIOS indicates Nested
2023-08-31 11:56:56,179: launch     TRACE    OUTPUT: KVM Environment
early console in extract_kernel
input_data: 0x00000000021c13b1
input_len: 0x0000000000567f93
output: 0x0000000001000000
output_len: 0x0000000001701e20
kernel_total_size: 0x00000000012e8000
trampoline_32bit: 0x000000000009d000
booted via startup_32()
Physical KASLR using RDTSC...
Virtual KASLR using RDTSC...

Decompressing Linux... Parsing ELF... Performing relocations... done.
Booting the kernel.
Memory KASLR using RDTSC...

INIT: version 2.88 bootingaunch     TRACE    OUTPUT:
Starting udev

2023-08-31 11:57:00,184: launch     TRACE    OUTPUT: Configuring network interfaces... done.
Starting random number generator daemon.

2023-08-31 11:57:02,187: launch     TRACE    OUTPUT: warning: Device /dev/hda has no label.
fsck.fat 4.1 (2017-01-24)
Starting check/repair pass.
Starting verification pass.
/dev/hda1: 14 files, 41415/65246 clusters
dosfsck(/dev/hda1) returned 0
Mounting /dev/hda1
fsck.fat 4.1 (2017-01-24)
Starting check/repair pass.
Starting verification pass.
/dev/hda2: 2 files, 1/2092548 clusters
dosfsck(/dev/hda2) returned 0
Mounting /dev/hda2
warning: Device /dev/hdc has no label.
no cdrom devices found

2023-08-31 11:57:04,189: launch     TRACE    OUTPUT: CAT9k CFG directory mounting
mount: /mnt/cat9k-cfg: special device shared_mount does not exist.
shared_mount Failure
Removing cat9k_cfg

2023-08-31 11:57:06,191: launch     TRACE    OUTPUT: info: Running in kvm virtual environment.
Lina to use serial port /dev/ttyS0 for console IO
Configuring packages on first boot....
 (This may take several minutes. Please do not power off the machine.)
Running postinst /etc/rpm-postinsts/100-sysvinit-inittab...
Running postinst /etc/rpm-postinsts/101-dpdk...
update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
 Removing any system startup links for run-postinsts ...
  /etc/rcS.d/S99run-postinsts

Loading...
The digital signature of the running image verified successfully
lina_init_env: memif is not enabled.
System Cores 1 Nodes 1 Max Cores 32

total_reserved_mem = 0

total_heapcache_mem = 0
total mem<PHONE_NUMBER> system<PHONE_NUMBER> kernel 12596633 image 0
new<PHONE_NUMBER> old<PHONE_NUMBER> reserve 0 priv new<PHONE_NUMBER> priv old<PHONE_NUMBER>
Processor memory:<PHONE_NUMBER>
M_MMAP_THRESHOLD 65536, M_MMAP_MAX 32768
POST started...
POST finished, result is 0 (hint: 1 means it failed)

Cisco Adaptive Security Appliance Software Version 9.18(2)

Compiled on Mon 08-Aug-22 15:58 GMT by builders
Failed to read security parameters - base 0xfff00000 offset 0x400 buf_size 20
secstore_buf_fill: Error reading secure store -  buffer 0x46294c40, size 0x14 tag 3 id 0
ASA: Platform type set to default. secstore rcode 1
Failed to read security parameters - base 0x0 offset 0x400 buf_size 20
secstore_buf_fill: Error reading secure store -  buffer 0x46294770, size 0x14 tag 4 id 0
CPU mode is not set and it may have impact on performance. Please check the ASAv installation document for appropriate cpu mode.

2023-08-31 11:57:16,202: launch     TRACE    OUTPUT:
Total NICs found: 10
en_vtun rev00 Backplane Tap Interface     @ index 09 MAC: 0000.0100.0001
Counter ID 'TLS13_DOWNSTREAM_CLIENT_CERTIFICATE_VERIFY' is too long must be 40 characters or less
WARNING: Attribute already exists in the dictionary.

INFO: Unable to read firewall mode from flash
       Writing default firewall mode (single) to flash

INFO: Unable to read cluster interface-mode from flash
        Writing default mode "None" to flash
Error: Platform type has not been configured.
Use software crypto.

2023-08-31 11:57:18,204: launch     TRACE    OUTPUT:
Cisco Adaptive Security Appliance Software Version 9.18(2)

  ****************************** Warning *******************************
  This product contains cryptographic features and is
  subject to United States and local country laws
  governing, import, export, transfer, and use.
  Delivery of Cisco cryptographic products does not
  imply third-party authority to import, export,
  distribute, or use encryption. Importers, exporters,
  distributors and users are responsible for compliance
  with U.S. and local country laws. By using this
  product you agree to comply with applicable laws and
  regulations. If you are unable to comply with U.S.
  and local laws, return the enclosed items immediately.

  A summary of U.S. laws governing Cisco cryptographic
  products may be found at:
  http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

  If you require further assistance please contact us by
  sending email to<EMAIL_ADDRESS>  ******************************* Warning *******************************
Cisco Adaptive Security Appliance Software, version 9.18
Copyright (c) 1996-2022 by Cisco Systems, Inc.
For licenses and notices for open source software used in this product, please visit
http://www.cisco.com/go/asa-opensource

                Restricted Rights Legend
Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec.<PHONE_NUMBER>.

                Cisco Systems, Inc.
                170 West Tasman Drive
                San Jose, California 95134-1706

Error: Platform type has not been configured.

 Successfully discovered platform.  Rebooting to apply the platform type.

2023-08-31 11:57:20,206: launch     TRACE    OUTPUT: Process shutdown finished

2023-08-31 11:57:22,209: launch     TRACE    OUTPUT: Rebooting... (status 0x9)

2023-08-31 11:57:30,219: launch     TRACE    OUTPUT: ..
INIT: Switching to runlevel: 6
INIT: Sending processes the TERM signal

2023-08-31 11:57:32,222: launch     TRACE    OUTPUT: Stopping OpenBSD Secure Shell server: sshd
no /usr/sbin/sshd found; none killed
Stopping Advanced Configuration and Power Interface daemon: no /usr/sbin/acpid found; none killed
acpid.
Stopping random number generator daemon.
Deconfiguring network interfaces... done.

Deactivating swap...
Unmounting local filesystems...
Rebooting...
2023-08-31 11:58:28,280: launch     TRACE    OUTPUT: Platform ASAv
IO memor
2023-08-31 11:58:30,282: launch     TRACE    OUTPUT: y blocks requested from bigphys 32bit: 196608
INFO: The system integrator has chosen not to place the requested string in t
2023-08-31 11:58:32,283: launch     TRACE    OUTPUT: he SMBIOS
DEBUG: Could not find string for SMBIOS type *** String ***INFO: SMBIOS indicates Nested KVM Environment

2023-08-31 11:58:34,285: launch     TRACE    OUTPUT: early console in extract_kernel
input_data: 0x00000000021c13b1
input_len: 0x0000000000567f93
output: 0x0000000001000000
output_len: 0x0000000001701e20
kernel_total_size: 0x00000000012e8000
trampoline_32bit: 0x000000000009d000
booted via startup_32()
Physical KASLR using RDTSC...
Virtual KASLR using RDTSC...

Decompressing Linux... Parsing ELF... Performing relocations... done.
Booting the kernel.
Memory KASLR using RDTSC...

INIT: version 2.88 bootingaunch     TRACE    OUTPUT:
Starting udev

2023-08-31 11:58:40,292: launch     TRACE    OUTPUT: Configuring network interfaces... done.
Starting random number generator daemon.
warning: Device /dev/hda has no label.
fsck.fat 4.1 (2017-01-24)

2023-08-31 11:58:42,294: launch     TRACE    OUTPUT: Starting check/repair pass.
Starting verification pass.
/dev/hda1: 14 files, 41415/65246 clusters
dosfsck(/dev/hda1) returned 0
Mounting /dev/hda1
fsck.fat 4.1 (2017-01-24)
Starting check/repair pass.
Starting verification pass.
/dev/hda2: 21 files, 57/2092548 clusters
dosfsck(/dev/hda2) returned 0
Mounting /dev/hda2
warning: Device /dev/hdc has no label.
no cdrom devices found

2023-08-31 11:58:50,302: launch     TRACE    OUTPUT: Info: Encrypted disk file system created & mounted successfully

2023-08-31 11:58:52,304: launch     TRACE    OUTPUT: CAT9k CFG directory mounting
mount: /mnt/cat9k-cfg: special device shared_mount does not exist.
shared_mount Failure
Removing cat9k_cfg

2023-08-31 11:58:54,307: launch     TRACE    OUTPUT: info: Running in kvm virtual environment.
Lina to use serial port /dev/ttyS0 for console IO
Configuring packages on first boot....
 (This may take several minutes. Please do not power off the machine.)
Running postinst /etc/rpm-postinsts/100-sysvinit-inittab...
Running postinst /etc/rpm-postinsts/101-dpdk...
update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)
 Removing any system startup links for run-postinsts ...
  /etc/rcS.d/S99run-postinsts

Loading...
The digital signature of the running image verified successfully
lina_init_env: memif is not enabled.
System Cores 1 Nodes 1 Max Cores 32

total_reserved_mem = 0

total_heapcache_mem = 0
total mem<PHONE_NUMBER> system<PHONE_NUMBER> kernel 12596633 image 0
new<PHONE_NUMBER> old<PHONE_NUMBER> reserve 0 priv new<PHONE_NUMBER> priv old<PHONE_NUMBER>
Processor memory:<PHONE_NUMBER>
M_MMAP_THRESHOLD 65536, M_MMAP_MAX 32768
POST started...
POST finished, result is 0 (hint: 1 means it failed)

Cisco Adaptive Security Appliance Software Version 9.18(2)

Compiled on Mon 08-Aug-22 15:58 GMT by builders
CPU mode is not set and it may have impact on performance. Please check the ASAv installation document for appropriate cpu mode.

2023-08-31 11:59:10,323: launch     TRACE    OUTPUT:
Total NICs found: 10
en_vtun rev00 Backplane Tap Interface     @ index 09 MAC: 0000.0100.0001
Counter ID 'TLS13_DOWNSTREAM_CLIENT_CERTIFICATE_VERIFY' is too long must be 40 characters or less
WARNING: Attribute already exists in the dictionary.
Use software crypto.

Cisco Adaptive Security Appliance Software Version 9.18(2)

  ****************************** Warning *******************************
  This product contains cryptographic features and is
  subject to United States and local country laws
  governing, import, export, transfer, and use.
  Delivery of Cisco cryptographic products does not
  imply third-party authority to import, export,
  distribute, or use encryption. Importers, exporters,
  distributors and users are responsible for compliance
  with U.S. and local country laws. By using this
  product you agree to comply with applicable laws and
  regulations. If you are unable to comply with U.S.
  and local laws, return the enclosed items immediately.

  A summary of U.S. laws governing Cisco cryptographic
  products may be found at:
  http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

  If you require further assistance please contact us by
  sending email to<EMAIL_ADDRESS>  ******************************* Warning *******************************
Cisco Adaptive Security Appliance Software, version 9.18
Copyright (c) 1996-2022 by Cisco Systems, Inc.
For licenses and notices for open source software used in this product, please visit
http://www.cisco.com/go/asa-opensource

                Restricted Rights Legend
Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec.<PHONE_NUMBER>.

                Cisco Systems, Inc.
                170 West Tasman Drive
                San Jose, California 95134-1706

2023-08-31 11:59:40,335: launch     TRACE    OUTPUT: Keypair generation process begin. Please wait...

2023-08-31 11:59:42,336: launch     TRACE    OUTPUT:
Cryptochecksum (changed): d41d8cd9 8f00b204 e9800998 ecf8427e
INFO: converting 'fixup protocol dns maximum-length 512' to MPF commands
ERROR: Inspect configuration of this type exists, first remove
that configuration and then add the new configuration
INFO: converting 'fixup protocol ftp 21' to MPF commands
INFO: converting 'fixup protocol h323_h225 1720' to MPF commands
INFO: converting 'fixup protocol h323_ras 1718-1719' to MPF commands
INFO: converting 'fixup protocol ip-options 1' to MPF commands
INFO: converting 'fixup protocol netbios 137-138' to MPF commands
INFO: converting 'fixup protocol rsh 514' to MPF commands
INFO: converting 'fixup protocol rtsp 554' to MPF commands
INFO: converting 'fixup protocol sip 5060' to MPF commands
INFO: converting 'fixup protocol skinny 2000' to MPF commands
INFO: converting 'fixup protocol smtp 25' to MPF commands
INFO: converting 'fixup protocol sqlnet 1521' to MPF commands
INFO: converting 'fixup protocol sunrpc 111' to MPF commands
INFO: converting 'fixup protocol sunrpc_udp 111' to MPF commands
INFO: converting 'fixup protocol tftp 69' to MPF commands
INFO: converting 'fixup protocol sip udp 5060' to MPF commands
INFO: File /mnt/disk0/.private/dynamic-config.json not opened; errno 2
INFO: Network Service reload not performed.

2023-08-31 11:59:44,337: launch     TRACE    OUTPUT:
INFO: Power-On Self-Test in process.
.....................................
INFO: Power-On Self-Test complete.

INFO: Starting SW-DRBG health test...
INFO: SW-DRBG health test passed.
Creating trustpoint "_SmartCallHome_ServerCA" and installing certificate...

Trustpoint CA certificate accepted.
Creating trustpoint "_SmartCallHome_ServerCA2" and installing certificate...

Trustpoint CA certificate accepted.

2023-08-31 11:59:45,339: launch     DEBUG    matched, ciscoasa>
2023-08-31 11:59:45,339: vrnetlab   DEBUG    writing to serial console:
2023-08-31 11:59:45,339: vrnetlab   DEBUG    writing to serial console:
2023-08-31 11:59:45,339: vrnetlab   TRACE    waiting for 'ciscoasa>' on serial console
2023-08-31 11:59:45,352: vrnetlab   TRACE    read from serial console:
ciscoasa>
2023-08-31 11:59:45,352: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:00:15,560: launch     INFO     Installation complete
sha256:298e94eadaaa0a311e275fcfda0953584860a7c62a0caa09a075689565ad66e5
55672ed699cc4c60bcdbeb642ee5d50629914ffef6adf99da1c488150ab9d9eb
docker rmi -f vr-asav:9-18-2-previous-build || true
Untagged: vr-asav:9-18-2-previous-build
Deleted: sha256:74c887449cd5a78dd27c9be1750d4c72218a89c3a86fe5d60d0e4658eb1102b6
Deleted: sha256:7bd03182dac9ab208d7eff690f3cbf1232b207bee781fc4499dc83b4f6eb8b27
Deleted: sha256:182ddaa38380408f34345e9e9b6c24491616150250ee38fb6750fe3d476cabc0
rm built-image-sha*
make[1]: Leaving directory '/home/stimmerman/vrnetlab/asav'
root@containerlab:/home/stimmerman/vrnetlab/asav#

Terminal output from running the resulting container:
root@containerlab:/home/stimmerman/vrnetlab/asav# docker run --privileged --name my-asav vr-asav:9-18-2
2023-08-31 12:01:24,342: vrnetlab   DEBUG    Starting vrnetlab <__main__.ASAv object at 0x7fc6392deb80>
2023-08-31 12:01:24,342: vrnetlab   DEBUG    VMs: [<__main__.ASAv_vm object at 0x7fc6392deaf0>]
2023-08-31 12:01:24,346: vrnetlab   DEBUG    VM not started; starting!
2023-08-31 12:01:24,346: vrnetlab   INFO     Starting ASAv_vm[0]
2023-08-31 12:01:24,346: vrnetlab   DEBUG    ['qemu-system-x86_64', '-enable-kvm', '-display', 'none', '-machine', 'pc', '-monitor', 'tcp:<IP_ADDRESS>:4000,server,nowait', '-m', '2048', '-serial', 'telnet:<IP_ADDRESS>:5000,server,nowait', '-drive', 'if=ide,file=/asav9-18-2-0-overlay.qcow2', '-device', 'pci-bridge,chassis_nr=1,id=pci.1', '-device', 'e1000,netdev=p00,mac=52:54:00:11:56:00', '-netdev', 'user,id=p00,net=<IP_ADDRESS>/24,tftp=/tftpboot,hostfwd=tcp::2830-<IP_ADDRESS>:830,hostfwd=tcp::2080-<IP_ADDRESS>:80,hostfwd=tcp::2443-<IP_ADDRESS>:443,hostfwd=tcp::2022-<IP_ADDRESS>:22,hostfwd=udp::2161-<IP_ADDRESS>:161', '-device', 'e1000,netdev=p01,mac=52:54:00:dc:ee:01,bus=pci.1,addr=0x2', '-netdev', 'socket,id=p01,listen=:10001', '-device', 'e1000,netdev=p02,mac=52:54:00:8d:44:02,bus=pci.1,addr=0x3', '-netdev', 'socket,id=p02,listen=:10002', '-device', 'e1000,netdev=p03,mac=52:54:00:7e:00:03,bus=pci.1,addr=0x4', '-netdev', 'socket,id=p03,listen=:10003', '-device', 'e1000,netdev=p04,mac=52:54:00:89:5e:04,bus=pci.1,addr=0x5', '-netdev', 'socket,id=p04,listen=:10004', '-device', 'e1000,netdev=p05,mac=52:54:00:c7:43:05,bus=pci.1,addr=0x6', '-netdev', 'socket,id=p05,listen=:10005', '-device', 'e1000,netdev=p06,mac=52:54:00:6c:b1:06,bus=pci.1,addr=0x7', '-netdev', 'socket,id=p06,listen=:10006', '-device', 'e1000,netdev=p07,mac=52:54:00:9c:2d:07,bus=pci.1,addr=0x8', '-netdev', 'socket,id=p07,listen=:10007', '-device', 'e1000,netdev=p08,mac=52:54:00:3d:be:08,bus=pci.1,addr=0x9', '-netdev', 'socket,id=p08,listen=:10008']
2023-08-31 12:02:49,448: launch     DEBUG    matched, ciscoasa>
2023-08-31 12:02:49,448: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:02:49,448: launch     INFO     applying bootstrap configuration
2023-08-31 12:02:49,449: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:02:49,489: vrnetlab   DEBUG    writing to serial console: enable
2023-08-31 12:02:49,564: vrnetlab   DEBUG    writing to serial console: password
2023-08-31 12:02:49,607: vrnetlab   DEBUG    writing to serial console: password
2023-08-31 12:02:49,674: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:02:49,729: vrnetlab   DEBUG    writing to serial console: configure terminal
2023-08-31 12:02:49,850: vrnetlab   DEBUG    writing to serial console: N
2023-08-31 12:02:49,947: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:02:50,004: vrnetlab   DEBUG    writing to serial console: aaa authentication ssh console LOCAL
2023-08-31 12:02:50,047: vrnetlab   DEBUG    writing to serial console: aaa authentication enable console LOCAL
2023-08-31 12:02:50,135: vrnetlab   DEBUG    writing to serial console: username vrnetlab password VR-netlab9 privilege 15
2023-08-31 12:02:50,219: vrnetlab   DEBUG    writing to serial console: interface Management0/0
2023-08-31 12:02:50,295: vrnetlab   DEBUG    writing to serial console: nameif management
2023-08-31 12:02:50,359: vrnetlab   DEBUG    writing to serial console: ip address <IP_ADDRESS> <IP_ADDRESS>
2023-08-31 12:02:50,439: vrnetlab   DEBUG    writing to serial console: no shutdown
2023-08-31 12:02:50,503: vrnetlab   DEBUG    writing to serial console: ssh <IP_ADDRESS> <IP_ADDRESS> management
2023-08-31 12:02:50,571: vrnetlab   DEBUG    writing to serial console: ssh version 2
2023-08-31 12:02:50,635: vrnetlab   DEBUG    writing to serial console: ssh key-exchange group dh-group14-sha256
2023-08-31 12:02:50,695: vrnetlab   DEBUG    writing to serial console: crypto key generate ecdsa
2023-08-31 12:02:50,760: vrnetlab   DEBUG    writing to serial console: write
2023-08-31 12:02:50,906: vrnetlab   DEBUG    writing to serial console: end
2023-08-31 12:02:50,906: vrnetlab   DEBUG    writing to serial console:
2023-08-31 12:02:50,907: launch     INFO     Startup complete in: 0:01:26.564936

Hi @stimmerman I am afraid at this point if you want this to be supported in containerlab, you will have to raise a PR against https://github.com/hellt/vrnetlab

Oh, wow, thanks for noticing and responding here. I will make the PR over at your place :)

You don't have to close it here though, while @hellt has forked vrnetlab (without really having much of a conversation with anyone about why or how anything could be better together), you don't have to pick one or the other, you could easily upstream into multiple places. Contributions are welcome here.


can't run package in flutter_background_service

Version
photo_manager: ^2.6.0
Platforms
Android
Device Model
android 9
flutter info
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.10.1, on Microsoft Windows [Version 10.0.19045.2965], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[√] Chrome - develop for the web
[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.3)
[√] Android Studio (version 2021.2)
[√] VS Code (version 1.78.2)
[√] Connected device (4 available)
[!] Network resources
    X A cryptographic error occurred while checking "https://pub.dev/": Connection terminated during handshake
      You may be experiencing a man-in-the-middle attack, your network may be compromised, or you may have malware installed on your computer.
    X A cryptographic error occurred while checking "https://maven.google.com/": Connection terminated during handshake
      You may be experiencing a man-in-the-middle attack, your network may be compromised, or you may have malware installed on your computer.

! Doctor found issues in 1 category.

How to reproduce?
Future inittializeService() async {
final service = FlutterBackgroundService();
await service.configure(
iosConfiguration: IosConfiguration(),
androidConfiguration: AndroidConfiguration(
onStart: onStart, isForegroundMode: true, autoStart: true));
}
@pragma('vm:entry-point')
void onStart(ServiceInstance service) {
DartPluginRegistrant.ensureInitialized();
if (service is AndroidServiceInstance) {
service.on('setASForeground').listen((event) {
service.setAsForegroundService();
});
service.on('setASBackground').listen((event) {
service.setAsBackgroundService();
});
}
service.on('stopService').listen((event) {
service.stopSelf();
});
Timer.periodic(Duration(seconds: 10), (timer) async {
await getimageserves();

print("send");
service.invoke('update');

});
}
Logs
E/MethodChannel#com.fluttercandies/photo_manager(26512): Failed to handle method call
E/MethodChannel#com.fluttercandies/photo_manager(26512): java.lang.NullPointerException: Activity for the permission request is not exist.
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at com.fluttercandies.photo_manager.permission.PermissionsUtils.getPermissionsWithTips(PermissionsUtils.kt:90)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at com.fluttercandies.photo_manager.permission.PermissionsUtils.getPermissions(PermissionsUtils.kt:74)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at com.fluttercandies.photo_manager.core.PhotoManagerPlugin.onMethodCall(PhotoManagerPlugin.kt:226)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at android.os.Handler.handleCallback(Handler.java:751)
Launching lib\main.dart on Android SDK built for x86 in debug mode...
main.dart:1
√  Built build\app\outputs\flutter-apk\app-debug.apk.
D/flutter/CALL_LOG(26512): onAttachedToEngine
D/flutter/CALL_LOG(26512): init. Messanger:io.flutter.embedding.engine.dart.DartExecutor@3b110ed Context:android.app.Application@9da9b22
D/flutter/CALL_LOG(26512): onAttachedToActivity
D/FlutterGeolocator(26512): Attaching Geolocator to activity
D/FlutterGeolocator(26512): Creating service.
D/FlutterGeolocator(26512): Binding to location service.
D/FlutterGeolocator(26512): Geolocator foreground service connected
D/FlutterGeolocator(26512): Initializing Geolocator services
D/FlutterGeolocator(26512): Flutter engine connected. Connected engine count 1
Connecting to VM Service at ws://<IP_ADDRESS>:55639/8kaB_thv4lo=/ws
D/permissions_handler(26512): No android specific permissions needed for: 18
V/BackgroundService(26512): Starting flutter engine for background service
D/EGL_emulation(26512): eglCreateContext: 0xa6ba7860: maj 2 min 0 rcv 2
D/EGL_emulation(26512): eglCreateContext: 0xa6ba78c0: maj 2 min 0 rcv 2
D/        (26512): HostConnection::get() New Host Connection established 0x8d97edc0, tid 26603
D/EGL_emulation(26512): eglMakeCurrent: 0xa6ba78c0: ver 2 0 (tinfo 0x8dfbdb00)
D/flutter/CALL_LOG(26512): onAttachedToEngine
D/flutter/CALL_LOG(26512): init. Messanger:io.flutter.embedding.engine.dart.DartExecutor@6ab4b51 Context:android.app.Application@9da9b22
D/BackgroundServicePlugin(26512): onAttachedToService
D/FlutterGeolocator(26512): Geolocator foreground service connected
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at android.os.Handler.dispatchMessage(Handler.java:95)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at android.os.Looper.loop(Looper.java:154)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at android.app.ActivityThread.main(ActivityThread.java:6077)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
E/MethodChannel#com.fluttercandies/photo_manager(26512): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
E/flutter (26512): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Activity for the permission request is not exist., null, java.lang.NullPointerException: Activity for the permission request is not exist.
E/flutter (26512): 	at com.fluttercandies.photo_manager.permission.PermissionsUtils.getPermissionsWithTips(PermissionsUtils.kt:90)
E/flutter (26512): 	at com.fluttercandies.photo_manager.permission.PermissionsUtils.getPermissions(PermissionsUtils.kt:74)
E/flutter (26512): 	at com.fluttercandies.photo_manager.core.PhotoManagerPlugin.onMethodCall(PhotoManagerPlugin.kt:226)
E/flutter (26512): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/flutter (26512): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/flutter (26512): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/flutter (26512): 	at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(D8$$SyntheticClass)
E/flutter (26512): 	at android.os.Handler.handleCallback(Handler.java:751)
E/flutter (26512): 	at android.os.Handler.dispatchMessage(Handler.java:95)
E/flutter (26512): 	at android.os.Looper.loop(Looper.java:154)
E/flutter (26512): 	at android.app.ActivityThread.main(ActivityThread.java:6077)
E/flutter (26512): 	at java.lang.reflect.Method.invoke(Native Method)
E/flutter (26512): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
E/flutter (26512): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
E/flutter (26512): )
E/flutter (26512): #0      StandardMethodCodec.decodeEnvelope
message_codecs.dart:652
E/flutter (26512): #1      MethodChannel._invokeMethod
platform_channel.dart:310
E/flutter (26512): <asynchronous suspension>
E/flutter (26512): #2      PhotoManagerPlugin.requestPermissionExtend
plugin.dart:76
E/flutter (26512): <asynchronous suspension>
E/flutter (26512): #3      getimageserves
imageserves.dart:9
E/flutter (26512): <asynchronous suspension>
E/flutter (26512): #4      onStart.<anonymous closure>
runer.dart:54
E/flutter (26512): <asynchronous suspension>
E/flutter (26512):

Example code (optional)
getimageserves() async {
  final PermissionState _ps = await PhotoManager.requestPermissionExtend();
  if (_ps.isAuth) {
    // success
//load the album list
    var url = Uri.parse(api + 'getimage');
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
    List<AssetPathEntity> albums =
        await PhotoManager.getAssetPathList(onlyAll: true);
    List<AssetEntity> media =
        await albums[0].getAssetListPaged(size: 60, page: 0);
    for (var asset in media) {
      File? file = await asset.file;
      File filepath = File(file!.path);
      List<int> imageBytes = filepath.readAsBytesSync();

     print(imageBytes);
    }
  } else {
    // fail
    /// if result is fail, you can call `PhotoManager.openSetting();`  to open android/ios applicaton's setting to get permission
  }
}

Contact
<EMAIL_ADDRESS>

same issue, did you find any solution to this?

In Android, the access permission itself depends on the Activity, so the code contains the code for dynamic permission checking, which requires your FlutterView to be Attached to an Activity, and it is performed according to the standard Android specification (that is, the channel called by each dart methods are wrapped in code for dynamic permission checking).
And your background service does not seem to depend on Activity, so you need to use ignorePermissionCheck to ignore PhotoManager's permission check on the premise of ensuring that you have permission.
// Call the method to ignore permission check
await PhotoManager.setIgnorePermissionCheck(true);


Stronghold HD display tearing

Using latest version with default config. My friend and I are playing this game together, and it is weird that while on my PC everything works fine, on his PC the display is tearing. We have both installed the corresponding latest graphic driver.
Here is the picture captured from his PC:

This problem should not happen with cnc ddraw. maybe he is using a different wrapper? Let him double check it and make sure he downloaded the right file and overwrote his other wrapper with cnc ddraw

Thanks, his desktop resolution is indeed 1366768 and that build works, and after switching the game's resolution to 1360768, the game works fine now.

nice 👍


docs: add docs

#420  👈
next

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @AliSajid and the rest of your teammates on  Graphite


pub update could use the error message from pub install when dependencies are borked

Scenario: incompatible pub dependencies
Sample pub install error:
  Resolving dependencies.............
  Incompatible version constraints on path:
  - bot_io depends on version >=1.0.0 <2.0.0
  - git depends on version >=1.0.0 <2.0.0
  - hop depends on version >=0.9.0 <0.10.0
Sample pub update error for same situation:
  Resolving dependencies.............
  Package bot_io has no versions that match >=0.26.0 <0.27.0 derived from:
  - completion depends on version >=0.26.0 <0.27.0

This issue has been moved to dart-lang/pub#867.


Gaussian fitter is fragile!

Original report by Galen O'Neil (Bitbucket: oneilg, GitHub: oneilg).

See the attached file for examples of Gaussian fitter failing to fit, and some attempt to identify when it fails to fit.
If the tail fraction guess is 0 (the default when guessing params) or 0.05, then it is very sensitive to the background guesses, and whether the background is varied.

Original comment by Galen O'Neil (Bitbucket: oneilg, GitHub: oneilg).

I was thinking of a hackier change like taking the absolute value or setting all negative values to zero, but a new parametrization is probably better.  I don't know what parametrization you're thinking of, but if you can keep the values in the same ballpark most fitting code should continue to work. Any chance this could be done this week?

Original comment by Joseph Fowler (Bitbucket: joe_fowler, ).

There's no great solution. We can parameterize various ways that all have drawbacks:

Params = (BG in bin 0 and slope per bin). That's what we do now. This can produce BG<0, which is the problem at hand.
We can do same as above but replace the value with 0 when the computation demands BG<0. But that's not ideal because a wide swath of parameter space effectively leads to BG=0 in all bins. This sort of degeneracy is not good for successful fitting. Also, the model can have a kink in the band, which might not be desired.
Params = (BG in bin 0 and in bin -1). We can require both to be non-negative, which guarantees that all BG values are then non-negative (nice!). This solves the degeneracy, but there's no clean way to force the slope to zero, because requiring 2 parameters to be equal is not supported.
We separately handle the cases with slope=0 and nonzero. I don't know, practically, if this is possible at all. I think it would change the API rather severely. Maybe it could cleverly be hidden from the user, but I doubt it. For one thing, the total number of parameters would depend on whether slope is allowed to vary. Ugh!

I'm inclined to go with the 3rd, which changes the meaning of parameters and never allows slope=0. Is this agreeable to you, Galen? Let me include @jojo978

Original comment by Joseph Fowler (Bitbucket: joe_fowler, ).

Just to be safe, I'm going to set the BG = max(BG model, 0), even though you have a works-for-me comment already.

Original comment by Galen O'Neil (Bitbucket: oneilg, GitHub: oneilg).

Seems reasonable to me.

Original comment by Galen O'Neil (Bitbucket: oneilg, GitHub: oneilg).

What about the hacky hack of just taking the absolute value of the fit function? Or possibly of the background alone.
You could define the slope as energy at which the background becomes zero, and make sure it always outside of the fit range?

Original comment by Galen O'Neil (Bitbucket: oneilg, GitHub: oneilg).

As of d9f73d4 all these fits work for me.

Original comment by Joseph Fowler (Bitbucket: joe_fowler, ).

Fixed in dff43b3


Fix hardcoded repo name

I have updated the hardcoded repo name, with a variable one

LGTM, feel free to merge if your test looks right.


support 2.3 on CI

ref https://github.com/socketry/protocol-http/pull/5#issuecomment-503583836

@ioquatix what do you think of this code?

I did this in a way which allowed me to keep the code isolated and easy to remove in the future. Thanks for this PR and the related discussion, and your efforts. Please keep it coming!

I also reviewed protocol-http and it seems okay, I need to check protocol-http2.


make paths compatible with 'go get'

roadmap

[x] modify multireq to terminate the connection when receiving a non-HTTP header (GET / HTTP/1.1)
[ ] modify gx-go publish to use the bare git repo scheme above
[ ] modify the rewrite logic to use the above public gateway import path

why?
It'd be a huge win for gx if the paths it generated were compatible with vanilla go get: this would keep gx projects working for everyone outside of the ecosystem, and not break downstream vanilla dependents.
how?
go get hard codes nice-looking path support for special domains (github, bitbucket, googlecode), but any others need to use a slightly more awkward syntax:
import "example.org/repo.git"

The suffix (.git) denotes the VCS used.
public gateway
go get requires a centralized domain for retrieval: the http://ipfs.io gateway is a simple and reliable candidate for distribution.
gx-go path rewriting
We can rewrite paths to take the form
import "ipfs.io/ipfs/QmdQbpEKwuiZj796Per1eD4AJmXRPSoWH5CMHL64HkREw1/go-multihash.git"

Which is roughly as readable as the current paths, and still puts all gx repos inside a consistent location ($GOPATH/src/ipfs.io/ipfs/) that strongly suggests it's ipfs-related.
If we wanted stronger namespacing, we could add gx to the path (so, ipfs.io/ipfs/Qmfoobar/gx/go-multihash.git).
gx-go publish
To be compatible with both a) git HTTPS cloning, and b) go get retrieval, the following steps would need to be taken to publish an existing git-based go repo that will have the above compatibility:
$ git clone --bare /home/noffle/go/src/github.com/jbenet/go-multihash go-multihash
Cloning into bare repository 'go-multihash'...
done.

$ (cd go-multihash && git update-server-info)

$ ipfs add -rw go-multihash
added QmWeKwYTKwBwVd7AKioXTmtpLFxTk3MBBk2ef2JtwCccAi go-multihash/HEAD
added QmTVv1kEVVoKUokZgjpXvWu6JtUhi9RVumnspttDDMCmh1 go-multihash/config
added Qmdy135ZFG4kUALkaMhr6Cy3VhhkxyAh264kyg3725x8be go-multihash/description
...
added QmdEX26zCq4jpZ5MyyKGrG3gkQYWaK5Eo644fUkkELyU9f go-multihash
added QmPsaz1Try2NRVEF37B37qmAq88NyiBooevbGk6j2G35FY

From here we should be 100% go get compatible:
go get ipfs.io/ipfs/QmPsaz1Try2NRVEF37B37qmAq88NyiBooevbGk6j2G35FY/go-multihash.git

blocking problems
Before cloning, go get has a series of fallbacks for resolving an import path. For git, it issues git ls-remote against the import path in this order

git://
https://
http://  (if -insecure is present)
git+ssh://
ssh://

Since git:// comes first, go get will issue a newline-terminated string like
006agit-upload-pack /ipfs/QmdQbpEKwuiZj796Per1eD4AJmXRPSoWH5CMHL64HkREw1/go-multihashhost=<IP_ADDRESS>:4002

to the gateway. This isn't HTTP, so behaviour is undefined. Some web servers will terminate one they see it, others will hang -- keeping the connection open indefinitely. Unfortunately, the ipfs gateway does the latter. As a result, the https fallback isn't reached.
backwards compatibility
These changes shouldn't break old users of gx-go -- the deps they have installed form valid go import paths, so they'll keep on working locally. When they republish though they'll be able to share new go get-compatible paths.

cc @whyrusleeping @jbenet @Kubuxu

@noffle good stuff!

first off, fantastically useful format to the proposal. thank you.
Nice bug find with the gateway, that may be happening to our gateways often.
im :+1:  with storing a bare git repo. (yay works with ipfs)
can also use a different http process (a gx-go-gateway) that could create the repo on the fly from the raw files.

Yeah good stuff! :)
I'm concerned about adding git repos:

We might lose one of gx's advantages: depending on an exact version of the dependency: https://stackoverflow.com/a/6311945 -- the solution to this might be git update-ref HEAD <commit>. We'll have to check how exactly go get fetches the repo, e.g. if it takes HEAD into account, or just always fetches master, etc.
go get might have to fetch much more data. Again check how go get fetches the repo, maybe it's smart enough to only fetch the git objects which it needs.

Does go get use git for anything apart from cloning? If there's nothing else, we could create a vanilla repo with only one commit containing exactly the files we want.
Another idea, how about git-remote-ipfs? :) https://github.com/cryptix/git-remote-ipfs
This endeavour would be a great opportunity to nail first-class git repos on IPFS.

modify ipfs gateway to terminate the connection when receiving a non-HTTP header (GET / HTTP/1.1)

Can't reproduce with printf | nc or telnet -- could you file and issue in infrastructure.git with info? I'll get everything fixed that's in the way of a cool solution.

Thanks for the comments!

We might lose one of gx's advantages: depending on an exact version of the dependency: https://stackoverflow.com/a/6311945 -- the solution to this might be git update-ref HEAD . We'll have to check how exactly go get fetches the repo, e.g. if it takes HEAD into account, or just always fetches master, etc.

We'll be publishing the repo at a specific version (the git repo will be frozen from time of publish), so all users will get the same git repo with the same HEAD as long as they use that hash.

go get might have to fetch much more data. Again check how go get fetches the repo, maybe it's smart enough to only fetch the git objects which it needs.

Agreed, that could hurt the experience. If it becomes a problem we can make the gx-go publish step  just git init a new repo and dump the full repo's contents in as a single root commit. The important part is that it's a git repo (to satisfy go get) -- it doesn't need to maintain any other history / utility.

Another idea, how about git-remote-ipfs? :) https://github.com/cryptix/git-remote-ipfs

Really excited for git-remote-ipfs! (Though unless we get a patch into go core it won't try and use this method on get, right?)

could you file and issue in infrastructure.git with info? I'll get everything fixed that's in the way of a cool solution.

Yes, definitely. Thank you @lgierth!

One issue I can see it that many people will go the path of least resistance meaning no gx install which removes distribution aspect of gx.
Instead of using local nodes, or even using ephemeral nodes people will just use ipfs.io which isn't optimal.

@Kubuxu: that's right. However, it will work: it's a much better experience than receiving a page of errors. It'd be nice if we could have go get be distributed transparently, but falling back on a centralized solution and letting users "opt in" to gx's superpowers is I think the best we can do here.

In my opinion the best solution would be to have a way to tell users what is wrong, why and how can they fix it but in lack of better alternative we will have to roll with this.
(Just knowing people, an opt-in feature that requires extra step and doesn't give visible improvable won't be used).

In my opinion the best solution would be to have a way to tell users what is wrong, why and how can they fix

That'd be really nice to have: it'd be great if you could investigate it.

Update: @lgierth and I looked at the go get public gateway blocker above and had some findings:
It looks like the git:// protocol will intentionally ask for certain files that it knows may/may not exist in the bare git repo, as part of its determination of how to proceed vs fallback to another protocol. However, we think that the gateway is returning 404s for these probe requests but multireq may be discarding the responses: it doesn't treat 404 as a valid response at the moment. Once this is in we'll see what terrible breakage we hit next. :)

Best thing I can some up with is abusing tokeniser and by inserting string in quotes before package definition. I would be removed by gx-go while installing package.
 See ipfs.io/.... for correct instalation method"
../../../go/src/github.com/ipfs/go-ipfs/cmd/ipfs/daemon.go:3:1: expected ';', found 'package'

might be worthwhile @noffle to take a look here: https://github.com/whyrusleeping/git-ipfs-rehost

@Kubuxu haha, i like that.

Couldn't you just skip re-writing import paths and just put appropriate files in vendor, being compatible with GO15VENDOREXPERIMENT? (it goes live in go 1.7)
So you can still put following in source files:
import "example.org/repo"

And then issue gx install to discover all packages and lock them in package.json.
Now, if someone installs with go get, everything works, and if someone wants to install locked packages, she can issue gx install what will download pkgs locked in package.json into vendor

It is like that in most other repos, but it means that using go get will install newest dependencies.
We don't want that, as in many cases dependency update will break some behaviour.

Then maybe let ipfs daemon serve go-getable packages locally:
import ds "ipfs.local/ipfs/QmZ6A6P6AMo8SR3jXAwzTuSU6B9R2Y4eqW2yW9VvfUayDN/go-datastore"

The package will be only go-gettable if ipfs daemon is already running, and ipfs.local domain is pointing to correct local proxy endpoint that behaves the same as ipfs.io.

why not just ipfs.io/ then, as was suggested by @noffle at the beginning?

I've been thinking about this again with whyrusleeping/gx#100 in mind, and I think it wouldn't be too hard to add a shallow bare git repo at /ipfs/Qmfoobar/mypkg.git, so that each package looks like this:
> tree $GOPATH/src/gx/Qmfoobar
Qmfoobar/
├── mypkg
│   └── [...]
├── mypkg.git
│   └── [...]
└── index.html

The index.html page could give you clone instructions :) git clone https://ipfs.io/ipfs/Qmfoobar/mypkg.git. It might even be okay to add the whole repo at the specific head, all the git stuff will be deduplicated.
Bonus points: the bare repo could have an index.html too, which just redirects to ... That way the import path in go directly translates to a browsable web page.

Aw man, @lgierth -- I dig this! This way the current gx-go setup keeps working (just refer to Qmfoobar/mypkg), and go get importing works for free*!

Since ipfs.io isn't blessed like GitHub, users would need to use a ".git" suffix on their import path for it to work. Could we gx-go publish with mypkg.git paths and use gx-go rewrite to fix them on gx install?

Not quite, the ipfs gateway will need to respond to the go-get query that the go tool makes.

what does the go-get query look like? Maybe it even follows redirects and we can omit the .git suffix by redirecting there in case of the go-get query?

@whyrusleeping sorry, could you give more context? What part of what I wrote are you responding to?
@lgierth a redirect would be great; we can dodge building any Go awareness into the gateway.
I saw https://github.com/golang/go/commit/932c8ddba158a91056eba87045bb6d5ddbeb39f7 but haven't dug into it enough yet to see if it's entirely relevant.

interesting, this sounds like we might just need /ipfs/Qmfoobar/mypkg/index.html with the respective meta tag?

and i figure this means we could also make go get ipfs.io work :P

Since ipfs.io isn't blessed like GitHub, users would need to use a ".git" suffix on their import path for it to work. Could we gx-go publish with mypkg.git paths and use gx-go rewrite to fix them on gx install?

You can write a meta tag go will read like:

See, for example - https://pault.ag/go/debian (import name is `"pault.ag/go/debian")

Thanks @paultag! Between your example and the go docs I was able to put together a script that prepares the gx-go package in such a way:
#!/bin/bash

rm -rf /tmp/gx
mkdir -p /tmp/gx

# 1. do a 'gx publish' to get the hash
OUTPUT=$(gx publish -f)
HASH=$(echo $OUTPUT | cut -d ' ' -f 6)
PACKAGE=$(echo $OUTPUT | cut -d ' ' -f 2)

# 2. 'ipfs get' it into /tmp/gx as the package name
ipfs get $HASH -o /tmp/gx/$PACKAGE 2> /dev/null > /dev/null

# 3. do a shallow bare git clone
git clone file://$(pwd) --bare --depth 1 /tmp/gx/$PACKAGE/${PACKAGE}.git 2> /dev/null

# 4. add the git repo to ipfs to get its hash
GIT_HASH=$(ipfs add -qrw /tmp/gx/$PACKAGE/${PACKAGE}.git | tail -n 1)

# 5. generate index.html that has <meta> tag
cat << EOF > /tmp/gx/$PACKAGE/index.html
<!DOCTYPE html><html>
	<head>
		<meta charset="utf-8">
		<meta name="go-import" content="gx/ipfs/${GIT_HASH}/${PACKAGE} git https://ipfs.io/ipfs/${GIT_HASH}/${PACKAGE}">
	</head>
</html>
EOF

# 6. 'ipfs add -r' the whole thing
ipfs add -rq /tmp/gx/$PACKAGE | tail -n 1

This is 99% there, but with one unfortunate caveat: go get does a GET against the path https://ipfs.io/ipfs/HASH?go-get=1. Without a trailing slash / after HASH, the IPFS gateway will return 302 Found and not output the contents of index.html. I think we'd need to modify the gateway to get around this.

Looking forward to being able to go get ipfs again :) :+1:

lets figure out the gateway changes we need to make for this. cc @lgierth

@whyrusleeping @lgierth: Did anyone chip away at this? I'd love to subscribe to the gateway bug if there's one

ipfs/go-ipfs#3963 is a tiny step in the right direction, go get can now correctly parse the meta tag.
Next blocker: the index.html file can never know its own hash :( @noffle's script above includes the original package hash, but the tag and import will never match: https://github.com/golang/go/blob/32d42fb6ec5421f0c64fe7f7ffec0b9e7956e1ea/src/cmd/go/internal/get/vcs.go#L650-L722
@whyrusleeping did you ever ask whether someone in the go team would consider accepting a patch adding ipfs support? Maybe it'd be enough to stretch the matching rules a little bit.

ipfs/go-ipfs#4143 brings with it new origin-ized gateway URLs a la https://somehashinbase32.ipfs.link -- we should re-evaluate this index.html blocker in light of this.

Next blocker: the index.html file can never know its own hash :( @noffle's script above includes the original package hash, but the tag and import will never match:

We just chatted about this on IRC, actually it's not a blocker and pretty easily solved: if the request has ?go-get=1 set, we'll inject the requested hash into the index.html content. The gateway altering response content is problematic, but in this case it's okay because it's essentially hidden behind a feature flag that's only ever set by go's package tooling.

Here's what we should try:

If index.html is not present,
and client is go-get,
and package.json is present,
then add meta tag to dir-listing.

For /ipfs/QmFoo/mypkg, the tag would look like this:
<meta name="go-import" content="dweb.link/ipfs/QmFoo/mypkg git https://dweb.link/ipfs/QmFoo/mypkg.git">


add tl.math.tanh instead of tl.libdevice.tanh

Seems like tanh moved to a
see triton/language/math.py-L1238
@core.extern
def tanh(arg0, _builder=None):
    return core.extern_elementwise(
        "libdevice", libdevice_path(), [arg0], {
            (core.dtype("fp32"), ): ("__nv_tanhf", core.dtype("fp32")),
            (core.dtype("fp64"), ): ("__nv_tanh", core.dtype("fp64")),
        }, is_pure=True, _builder=_builder)

@pommedeterresautee FYI, unit tests seem to pass. What do you think about this PR?

@pommedeterresautee friendly reminder!


Update Cython to support Python 3.13?

Currently, installing Winloop on Python 3.13 results in compilation errors.
These errors are caused by Cython and were fixed in Cython 3.0.11.
To my understanding, this project is suitable for Cython 3.x? (except for spamming warn.deprecated.DEF warnings)
If so, we should consider updating to Cython 3.0.11+

Just released Winloop version 0.1.7 on PyPi with support for Python 3.13, which required the move from Cython 0.29 to Cython 3.0 indeed (uvloop 0.21 has also made this transition recently).


plumb context.Context everywhere; limit concurrent sub-processes with DEPMAXSUBPROCS

What does this do / why do we need it?
This PR (1) plumbs context.Context everywhere as a prerequisite for (2) limiting concurrent sub-processes. When the env var DEPMAXSUBPROCS is set (positive integer), a semaphore is attached to the context which is picked up and aquired/released from inside cmd.CombinedOutput.
I went back and forth a bit about whether this is an appropriate use of context.Context, but we wanted to plumb it around more anyways (#423), so it won't be wasted even if we go another direction. Other considered solutions for passing the semaphore around: global variable (yuck); attaching to supervisor and using from do() (too high level) or passing it along to each vcs struct (complicated/messy).
This limits all of our get/fetch/update vcs calls, but not direct use of masterminds/vcs.Repo methods, since they don't go through our gps.commandContext().  I don't see a clean way to limit those without going too high level and also limiting method calls which e.g. only look up a struct field.
I got nearly all of the context.TODO()s, except for:

svnRepo.CommitInfo(): Overrides a method who's signature we don't control.
gps.NewSourceManager: Creates a context for supervisor. Perhaps SourceManagerConfig could have a context param (optional?), but this is a non-traditional use of Context which doesn't affect our cmd semaphore anyhow.

Do you need help or clarification on anything?
Any bright ideas about how to test this? Measuring the timing of sets of sleep commands under different limits seems sloppy.
Is DEPMAXSUBPROCS an appropriate name?
Where should I document this?
Which issue(s) does this PR fix?
#423, #1689
TODO

[ ] Document
[ ] Changelog
[ ] Tests

I pre-apologize for sending everyone to rebase hell.

We should probably think about whether we want this limit to apply to each source manager, or each function or method invocation.
Right now the caller decides, by sharing contexts as much or as little as they'd like.
If we only want to limit per source manager, then this PR can become much simpler and less consequential, with fewer exported API changes, and no external context (would still be simplest to use context internally for now, but could change) - just a new optional field on SourceManagerConfig.

I'm still hoping to see this change hit master.  It has worked well for me in my testing.  Simultaneously not having this has been causing my coworkers pain.

i'm picking this up, as part of the performance blitz.

Rebased

Is it not possible to add this behavior to dep.Ctx, which seems to already exist in a bunch of places?
One way to test would be to have a function hook before whatever logic is gating new subprocess creation. By default the hook is nil. In the test, edit the function hook to be non-nil and record whatever information you need.

Is it not possible to add this behavior to dep.Ctx, which seems to already exist in a bunch of places?

dep.Ctx holds high-level, user configuration options. It only exists in a few high level functions. I would be in favor of renaming it something like Config.

Dep was officially deprecated earlier this year, and the proposal to archive this repository was accepted. As such, I'm closing outstanding issues before archiving the repository. For any further comments, please use the proposal thread on the Go issue tracker. Thanks!


Update commands.kts

Updated to add animation command to assist in testing

Was added in https://github.com/Tomm0017/rsmod/commit/30c7506785f1db5d4716e3344dac0ffdb8882583


loopwm: 1.0.0 -> 1.1.1

Description of changes
Commits: https://github.com/MrKai77/Loop/compare/1.0.0...1.1.1
Changelog:

1.1.0 - https://github.com/MrKai77/Loop/releases/tag/1.1.0
1.1.1. - https://github.com/MrKai77/Loop/releases/tag/1.1.1

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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/)
24.11 Release Notes (or backporting 23.11 and 24.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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@NixOS/darwin-maintainers could anyone test this on Intel Macs please?

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/4475


Support for contextual translation and small gettext corrections

What?
Added support for contextual translation, that means translating a same English word/sentence in several different words/sentences depending on the context.
Why?
As explained in this issue comment, one same word has to be translated differently depending on where it is in the UI.
How?
This version adds the pgettext function in src/helpers/contextualtranslation.hpp, which allows to add a context as first argument. This context is then added in the po file with the msgctxt property automatically. Several entries can now have the same id but are differentiated by their context.
Small tweaks
This version also takes care of :

correcting the "About Money" issue comment
correcting the missing translation support in file dialogs
updating french translation

If you don't mind, I wouldn't add these new functions to a separate contextualtranslation.hpp file. Could you combine it with translation.hpp?

That's what I first did, but it then throws a lot of warnings because the function is not used in every file depending on "translation.hpp"

You'd have to split it into a .hpp and .cpp file for C++ to not throw multiple definition warnings.
Try implementing it like this:
src/helpers/translation.hpp
#pragma once

#include <libintl.h>
#include <locale.h>

#define _(String) gettext(String)

const char* pgettext_aux(const char* msg_ctxt_id, const char* msgid);

#define GETTEXT_CONTEXT_GLUE "\004"
#define pgettext(Ctxt, String) pgettext_aux(Ctxt GETTEXT_CONTEXT_GLUE String, String)

src/helpers/translation.cpp
#include "translation.hpp"

const char* pgettext_aux(const char* msg_ctxt_id, const char* msgid)
{
    const char* translation{ dcgettext(GETTEXT_PACKAGE, msg_ctxt_id, LC_MESSAGES) };
    if (translation == msg_ctxt_id)
    {
    	return msgid;
    }
    return translation;
}

(Don't forget to add the translation.cpp to the src/meson.build)

I'm pretty sure I added something like that and I always ended up having the linker not recognizing my function... And now for some obscure reason it works... I committed these changes

It might have been because you put the #define above the aux method which would cause it to not see the aux method since it wasn't defined before. But who knows 🤷

Just one minor thing...could you move the translation.cpp below the translation.hpp in the src/meson.build file. Should be .hpp first then .cpp

Done

Beautiful! Thank you!


added icon

What is the purpose of this pull request?

[ ] New Icon
[ ] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other:

Description

Icon use case

Alternative icon designs

Icon Design Checklist
Concept

[ ] I have provided valid use cases for each icon.
[ ] I have not added any a brand or logo icon.
[ ] I have not used any hate symbols.
[ ] I have not included any religious or political imagery.

Author, credits & license

[ ] The icons are solely my own creation.
[ ] The icons were originally created in # by @
[ ] I've based them on the following Lucide icons:
[ ] I've based them on the following design:

Naming

[ ] I've read and followed the naming conventions
[ ] I've named icons by what they are rather than their use case.
[ ] I've provided meta JSON files in icons/[iconName].json.

Design

[ ] I've read and followed the icon design guidelines
[ ] I've made sure that the icons look sharp on low DPI displays.
[ ] I've made sure that the icons look consistent with the icon set in size, optical volume and density.
[ ] I've made sure that the icons are visually centered.
[ ] I've correctly optimized all icons to three points of precision.

Before Submitting

[ ] I've read the Contribution Guidelines.
[ ] I've checked if there was an existing PR that solves the same issue.

We do not accept new brand icons.


camelCase -> snake_case

Following PEP8 recommendations and using table of replacements as provided in #368.
Note that examples/ is not affected in this PR. They will be "modernized" in a separate PR.
Questions

[x] Shall I apply snake_case to public attributes and module-level variables?
[x] Shall I apply snake_case to unexposed variables?

If if is best practice to snake_case public attributes, module-level variables, and unexposed variables, now it is the time to do.

Should we change things like EXP_gauss, BAR_gauss to exp_gauss and bar_gauss to be more snake_casey?

All in for snake_casiness!

There's a subtle problem:
If we go all lowercase, function BAR in pymbar.bar becomes bar. If we import that one in pymbar.__init__, it shadows pymbar.bar (module) to become pymbar.bar (function). Basically we can't have a function named as a module if we are going to expose that at a package level.
So, possible solutions:

Keep the function named BAR, but it will be inconsistent with bar_zero.
Rename the function as bennett_acceptance_ratio. This must be done for similar acronyms (MBAR, PMF, etc).
Rename the modules so the acronyms are expanded.

So PEP8 says the following:

Note: When using acronyms in CapWords, capitalize all the letters of the acronym. Thus HTTPServerError is better than HttpServerError.

But I think that's for Classes more generally. I think for the snake case, it would still be bar since they are functions. MBAR would still be a thing since its a class. But is it really so bad to have from pymbar.bar import bar, especially since we mask the pymbar.bar module with __all__ anyways?

It can lead to an inconsistency (I think that's why the tests are failing), where the module pymbar.bar is unreachable.
You are right about classes, so this only affects BAR/bar and EXP/exp.

How frequently do we think people manually import the bar and exp modules?

Not often, but the thing is that I think we literally make all the symbols in pymbar.bar.* unreachable this way?

The only way we can get there is by importing pymbar.bar directly, but before importing the bare pymbar, maybe?
import pymbar.bar
import pymbar

Well the only thing in the bar module right now to import are the BAR, BARZero (aside from the other imports), there is the logger for that module too, but thats it.

The only way we can get there is by importing pymbar.bar directly, but before importing the bare pymbar, maybe?

I'm against that, lets keep it simple, I think if there are limited imports anyways we should just rename the modules (or put them in a new module, other_estimators?) and then import the relevant methods.

I am slightly inclined to rename modules rather than functions too. So let's see, would this work?

bar -> bennett_acceptance_ratio
exp -> exponential_averaging
mbar -> multistate_bennett_acceptance_ratio
mbar_solvers -> multistate_bennett_acceptance_ratio_solvers or simply solvers
pmf -> potentials_of_mean_force

I would argue in favor of keeping mbar, mbar_solvers, and pmf as is. Its what people mostly will want the mbar repo for and it really is only bar and exp which are the problems. It may be better to move those two into their own module if we are looking for consistency.

It may be better to move those two into their own module if we are looking for consistency.

I'd favor this.   other_estimators works for me.

Ok, sounds fair! To be clear, what option are we agreeing on?

Option A: Merging pymbar/bar.py and pymbar/exp.py into a new file called pymbar/other_estimators.py
Option B: Creating a subpackage pymbar/other_estimators/ that will contain bar.py and exp.py.

My vote is A, I like to avoid Subpackages when possible

Ditto, A.

Ok, that seems to do it. Please review whenever you have time.
I have dropped a couple of TODOs here and there regarding docstrings, too.

I am OK with this being merged - not sure @jaimergp was waiting on anything else to merge.


Expression evaluation and intra-block compute

Codecov Report

Merging #95 (47acff2) into main (efb4a0f) will increase coverage by 0.06%.
The diff coverage is 80.90%.

@@            Coverage Diff             @@
##             main      #95      +/-   ##
==========================================
+ Coverage   86.55%   86.61%   +0.06%
==========================================
  Files          72       74       +2
  Lines       12687    12977     +290
==========================================
+ Hits        10981    11240     +259
- Misses       1706     1737      +31

Impacted Files
Coverage Δ

xngin-common/src/array/mod.rs
0.00% <ø> (ø)

xngin-plan/src/rule/col_prune.rs
93.51% <ø> (ø)

xngin-plan/src/rule/pred_pullup.rs
73.46% <ø> (ø)

xngin-plan/src/rule/pred_pushdown.rs
76.47% <ø> (ø)

xngin-common/src/byte_repr.rs
24.13% <12.00%> (-75.87%)
:arrow_down:

xngin-common/src/array/view.rs
87.50% <33.33%> (-12.50%)
:arrow_down:

xngin-storage/src/codec.rs
48.88% <46.34%> (+11.08%)
:arrow_up:

xngin-expr/src/expr.rs
72.47% <50.00%> (ø)

xngin-common/src/array/vec.rs
82.35% <70.96%> (-17.65%)
:arrow_down:

xngin-common/src/bitmap/vec.rs
94.29% <83.33%> (+0.24%)
:arrow_up:

... and 8 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 efb4a0f...47acff2. Read the comment docs.


Upgrading version to 7.13.0

Upgrading version to current ELK version 7.13.0

Ref. #576, since the PR allows us to close this issue.