Add support for dynamically loaded libraries

Sometimes we need to add .so libraries to the apk that are not linked against the binary, with the intent of loading them dynamically with dlopen().
This commit allows to do that by placing those libraries at the root of the local package, in a lib/${androideabi} folder.
The build command now scans for those folders and adds the found .so files to the apk with aapt.

Although maybe you want a custom build.rs that uses cargo-apk as a library instead?

@dvc94ch What exactly do you mean with this? build.rs emits link paths and libraries that are to be linked into the library, either static or dynamic - not at runtime using dlopen. I don't think we can leverage that.

but you could add an additional library to the apk, we even have an api for it https://github.com/rust-windowing/android-ndk-rs/blob/master/ndk-build/src/apk.rs#L136

Looks ok. Although maybe you want a custom build.rs that uses cargo-apk as a library instead?

It doesn't look possible to do this with the public API currently exposed by cargo-apk. I would need a hook to perform operations on the unaligned apk to make it possible. But maybe I'm missing something?

we even have an api for it https://github.com/rust-windowing/android-ndk-rs/blob/master/ndk-build/src/apk.rs#L136

@dvc94ch That is exactly the function called by this PR from fn add_extra_libs, no? It's just about finding them in lib/<abi> in the first place.

@dvc94ch Ah, you want to call ndk-build from a build.rs script and use add_lib from there? Sounds cumbersome as all the other code around it would need to be replicated too.
However: it might be a good idea to make this behaviour configurable. lib/ is quite a common name/path, and I don't think we want to add user files into their APKs without them knowing (despite this being printed clearly at the end of the log).
If we add this path as an optional configuration option to Cargo.toml that's solved.

my point is that someone has to manually copy them in to the libs folder which isn't a cargo recognized folder as far as I know. So maybe setting an env variable OCULUS_SDK and using a build.rs would be more convenient (my distro wouldn't install it in a cargo target folder anyway). I do see that the current ApkBuilder exposed by cargo-apk isn't very convenient for this use case, but maybe we can add a constructor that doesn't require cargo-subcommand to work? I'd certainly favor making the cargo-apk api more user friendly than adding "hacks". But I'm also not opposed to this PR.

However: it might be a good idea to make this behaviour configurable. lib/ is quite a common name/path, and I don't think we want to add user files into their APKs without them knowing (despite this being printed clearly at the end of the log).
If we add this path as an optional configuration option to Cargo.toml that's solved.

That's what I originally intended to do, but one problem I see with that is that the aapt command used by add_lib doesn't allow specifying an input directory that is different from the target directory. So we'd need to cwd to the configured path to make it possible (as dlopen() will only look for shared libraries in the lib folder of the apk).

my distro wouldn't install it in a cargo target folder anyway

I don't think it'd install them in any easily accessible location anyway, assuming you're running the SDK and development on an x86 PC and the libraries likely available for the common mobile processors (arm and aarch64).

That's what I originally intended to do, but one problem I see with that is that the aapt command used by add_lib doesn't allow specifying an input directory that is different from the target directory. So we'd need to cwd to the configured path to make it possible (as dlopen() will only look for shared libraries in the lib folder of the apk).

add_lib copies the file to a temporary directory that adheres to lib/<abi>/libsomething.so anyway, so that shouldn't be a problem?
@dvc94ch has a good point: it'd be nice if we could support system locations as well, ie. extra_libs = ["/opt/oculus_sdk/something/prebuilts/android/.../*", "some/other/glob/*"] but we'd have to work out how to support multiple ABIs this way.

my point is that someone has to manually copy them in to the libs folder which isn't a cargo recognized folder as far as I know. So maybe setting an env variable OCULUS_SDK and using a build.rs would be more convenient (my distro wouldn't install it in a cargo target folder anyway). I do see that the current ApkBuilder exposed by cargo-apk isn't very convenient for this use case, but maybe we can add a constructor that doesn't require cargo-subcommand to work? I'd certainly favor making the cargo-apk api more user friendly than adding "hacks". But I'm also not opposed to this PR.

For my specific use-case there would be a manual step in any case, as I don't think I can freely distribute the shared library (as part of a published crate or otherwise) anyway. It has to be manually downloaded from the Oculus Developper website as far as I know.
I understand that loading dynamic libraries at runtime may not be a common enough use-case to justify direct support in cargo-apk, so I'm open to discussing the alternative (providing a finer-grained API).

it'd be nice if we could support system locations as well, ie. extra_libs = ["/opt/oculus_sdk/something/prebuilts/android/.../", "some/other/glob/"] but we'd have to work out how to support multiple ABIs this way.

well that won't work since it's os/distro specific. that's why I suggested a build.rs that uses an env variable to find the right .so for the architecture.

I understand that loading dynamic libraries at runtime may not be a common enough use-case to justify direct support in cargo-apk, so I'm open to discussing the alternative (providing a finer-grained API).

It's not that I think it's not common enough, but that I think it would be a better solution as manually keeping stuff in sync is annoying. Also as a (not really) maintainer I want to keep the codebase as small as possible.

@agrande FWIW APKs are just ZIPs, it doesn't seem to bad to me to just have some option in Cargo.toml to point to a directory (or multiple) whose contents (ie. a lib/<abi>/* kind of structure) as a whole are zipped up into the APK. That way this is both extensible and generic enough for whatever usecase one might need.

add_lib copies the file to a temporary directory that adheres to lib/<abi>/libsomething.so anyway, so that shouldn't be a problem?

Oh, right, I didn't see it before, my bad.

In the end we might want to settle on a more generic way to include extra files, as we already do for resources and assets.

Agreed with that.

well that won't work since it's os/distro specific. that's why I suggested a build.rs that uses an env variable

@dvc94ch Exactly, it's just an example and we might want to expand globs, walk symlinks and resolve environment variables to make it so.

to find the right .so for the architecture.

APKs support multiple architectures so it shouldn't be a problem to add them all?

Exactly, it's just an example and we might want to expand globs, walk symlinks and resolve environment variables to make it so.

Let's please not add a dsl for this use-case. I don't understand why a build.rs isn't ok. I guess one problem is that the build.rs would have to be in the binary. But you could have an oculus-sdk-build crate then people using the oculus sdk would only have to add oculus_sdk_build::build() to their build.rs

I guess I'm a little biased. cargo-apk and ndk-build were ment to be libraries so that you could build more sophisticated things like cargo-flutter for example. But cargo-flutter died anyway, so maybe there are not that many usecases left for a more flexible api.

Let's please not add a dsl for this use-case.

Hehe of course not, we have to settle on something that is common and generic.

I don't understand why a build.rs isn't ok.

The only reason is that I don't see an example of how to use this from build.rs. My fear is that it would be too complex, ie. having to copy-paste bits of the code from cargo-apk and manually run through all the build steps, when all @agrande wants is to add some arbitrary files to the final APK.

I guess I'm a little biased. cargo-apk and ndk-build were ment to be libraries so that you could build more sophisticated things like cargo-flutter for example. But cargo-flutter died anyway, so maybe there are not that many usecases left for a more flexible api.

I'm pretty sad that for example cargo-ndk exists this way instead of leveraging ndk-build. Do more with less, and it's better to get development focused on a single crate performing this task instead of two separate/competing implementations doing roughly the same thing.
Perhaps we should just add and release a thing like that and see how it goes.

Let's not forget that cargo-ndk happened before ndk-build existed ;) the old cargo-apk and cargo-ndk were inspiration for this cargo-apk

The only reason is that I don't see an example of how to use this from build.rs. My fear is that it would be too complex, ie. having to copy-paste bits of the code from cargo-apk and manually run through all the build steps, when all @agrande wants is to add some arbitrary files to the final APK.

That sums it up pretty well for me.

@agrande FWIW APKs are just ZIPs, it doesn't seem to bad to me to just have some option in Cargo.toml to point to a directory (or multiple) whose contents (ie. a lib//* kind of structure) as a whole are zipped up into the APK. That way this is both extensible and generic enough for whatever usecase one might need.

I think this is the best way to handle my use-case without being too specific.
Maybe I should close this PR and open a distinct one for that?

Made a more generic PR: #141

Reopening after discussion on #141.

@agrande Yup it looks like you have about everything now. We ended up merging #106 as that was already scheduled around the weekend, and has some overlap in the struct changes you did here. Apologies for the conflicts, but they should be easier to solve here than to conflate and delay that significant change even further. I hope that's okay for you to resolve.
I don't think you need to store runtime_libs in struct Config though, given that it's only ever used in the same fn build() a couple lines below, that should save on some struct churn and propagating the member.

Furthermore I briefly mentioned potential slowness/overhead in repeatedly calling aapt add for every file in https://github.com/rust-windowing/android-ndk-rs/pull/141#discussion_r615827833. Not something to resolve now, but perhaps we should refactor this code a bit in a future MR to keep track of a list of libraries that need to be included - and have hence already been scanned and recursively walked by readelf. In the end we can pass that list to aapt add at once so that it should be able to efficiently package multiple files up in the target zip at once.

@MarijnS95 no problem, I'll resolve the conflicts.
As for grouping the calls to aapt in one, indeed that would be a significant optim, but yeah, I think it would be better in a separate PR as it has a larger impact than what this PR does.

@dvc94ch @msiglreith Ping 🙂 This is blocking progress on openxrs and bevy.


Fix contours

This is some nonsense!
Not sure what's wrong, but another idea, probably more expensive: just convex hulls around each of the groups, then making holes.

contours is working better than isobands, but opacity is lost / holes are hard to do
I think the input threshold to isobands was wrong; needs to start at epsilon seconds
Now that limit is configurable, stop hardcoding 3 min buckets


Roles not defined - Add Users To Roles

Roles.addUsersToRoles(userId, roles);

That method call when ran from the server is returning an error:
 ReferenceError: Roles is not defined
Is there anything that has changed? , I am using the latest version '1.2.8`

HI ,
I also got the same error can you tell me how you removed and add the smart.json

@pvtulsiram538, if you are using meteorite (which users smart.json) you can do:
$ mrt remove roles
$ mrt add roles

If you are running Meteor 1.0 or higher, you don't need the smart.json file or meteorite.  Check that you are using the latest version of alanning:roles, v1.2.14.


in-proc ProjectQueryableSpace

https://learn.microsoft.com/en-us/visualstudio/extensibility/visualstudio.extensibility/project/project?view=vs-2022
On the above page is sample code for setting up in-proc Project query workspace as follows:
IProjectSystemQueryService queryService = await package.GetServiceAsync<IProjectSystemQueryService, IProjectSystemQueryService>();  ProjectQueryableSpace workSpace = queryService.QueryableSpace;
What is package?
I found the answer by ILSpying ProjectQueryAPIBrowser.dll.
Microsoft.VisualStudio.Shell.AsyncPackage package = (Microsoft.VisualStudio.Shell.AsyncPackage)(Object)this;.
I think the above statement should be added as the first line to the sample code above so there are no questions about package.

Hi @LeeMSilver
Thank you for bringing this to our attention, and we will update the documentation accordingly.
package in this case is an AsyncPackage, which represents a package for Visual Studio extension development.
More information on building an 'in-proc' extension can be found here: https://learn.microsoft.com/en-us/visualstudio/extensibility/visualstudio.extensibility/get-started/in-proc-extensions?view=vs-2022
Please let us know if you have any more questions!

Closing this issue. An update has been made to the documentation explaining package.

The new documentation now reads
"In the following code excerpt, package represents an instance of AsyncPackage, a class utilized in the development of Visual Studio extensions."
The problem is that AsyncPackage and an instance cannot be directly created. It is not documented how to create the class package.


Test UI update and deprecations

Things in this PR:

Switch extension to use the new Test UI API.
Removes all the old commands for testing in favor of commands from VS Code.
Removes support for Nose test framework.
Removes dependency of tests on language server.

Closes #15750 Using new Test UI from VS code:

Closes #10898 Uses VS Code API for over code lenses

Closes #16371 Remove nose test support.
Closes #1654
Closes #2382
Closes #2644
Closes #2660
Closes #2790
Closes #3062
Closes #3591
Closes #3652
Closes #4469
Closes #4848
Closes #5347
Closes #5417
Closes #5791
Closes #5889
Closes #6787
Closes #7150
Closes #7443
Closes #7870
Closes #8405
Closes #8448
Closes #8675
Closes #8761
Closes #8836
Closes #9026
Closes #9402
Closes #9640
Closes #9854
Closes #10898
Closes #10972
Closes #11864
Closes #11866
Closes #12043
Closes #12218
Closes #12403
Closes #12995
Closes #13147
Closes #13285
Closes #13713
Closes #13916
Closes #15260
Closes #15736
Closes #16371
Closes #16475

This is fantastic. Can't wait to try this out. Thank you @karthiknadig !

Has this fix made it into a release?  I am experiencing same kind problem mentioned in comments and would like to get it fixed.
Thanks

@quaesitor-scientiam This was in 2021.09 release.

Thanks, had a hard time trying to figure that out.

One more since this vscode-python how does  that relate to VSCode releases?

@quaesitor-scientiam They are unrelated. But since the extension depends on the features exposed by VS Code, we sometimes require a minimum version. For the latest version of the python extension (v2021.11.*), the minimum VS Code version needed is v1.61.0.
This is set here https://github.com/microsoft/vscode-python/blob/4c4be47e6cd268813cc237262dd4bc7972a565b8/package.json#L41

Thanks again for the quick reply


New UserStateChanged event

Breaking change to fix the BasicMumbleProtocol UserJoined which was called not only for new userers but also for existing users when their state have changed, now UserJoined is called only when a user is joining, and a new UserStateChanged event was introduced and called for existing users.
Also some finer grained UserChannelStateChanged, UserMutedStateChanged, UserDeafStateChanged, UserNameStateChanged, UserCommentStateChanged have been introduced to avoid cumbersome user state management in the software using the API.

@martindevans Ok with this separation of UserJoined and UserStateChanged as 2 separate events, this makes the API much more intuitive and easier to use.

Looks good, thanks for your hard work :)


Enable RTTI for WebRtc build.

Built for Mac, used libsorcey static libraries (build libsourcey as a part of other Mac app). Encountered next issue: "typeinfo for rtc::MessageHandler", referenced from... during linkage...
It is necessary to enable WebRTC build with RTTI for the cases when you need subclass functions.
See https://groups.google.com/d/msg/discuss-webrtc/PniiO9BumHA/M0aadE0UHwAJ for details.
In general, another fix is possible (just uncomment corresponding lines and define env variable), but from other side -e option is useless (it is mentioned in documentation how to build WebRTC on libsourcey wiki).
It is important to note in documentation that revision 02ba69d (other revisions are possible, but fix one in documentation) must be used to build WebRTC for libsourcey, since latest revision of WebRTC is incompatible with libsourcey code.
Also, it makes sense to mention somewhere, that it is necessary to define COMBINE_LIBRARIES env variable to 1 (unfortunately, script doesn't work as expected even if variable defined).
As far as I can see build of WebRTC from original repo (https://github.com/vsimon/webrtcbuilds.git) works as expected without any issue?

Hello, thanks for this but the latest version fixed this issue using compiler flags - the old search and replace method is no longer necessary!


maven30 failed to build on 10.10.1

$ HOMEBREW_MAKE_JOBS=1 brew install -v maven30 2>&1
==> Installing maven30 from homebrew/homebrew-versions
==> Downloading http://www.apache.org/dyn/closer.cgi?path=maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
Already downloaded: /Library/Caches/Homebrew/maven30-3.0.5.tar.gz
==> Verifying maven30-3.0.5.tar.gz checksum
mktemp: mkdtemp failed on /tmp/maven30-Vlyg5l: Permission denied
Error: Failed to create sandbox

$ brew config
HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/Homebrew/homebrew
HEAD: ea507c6b3aae1c4687ef600d7ff175e91c70b179
Last commit: 2 hours ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit haswell
OS X: 10.10.1-x86_64
Xcode: 6.1.1
CLT: <IP_ADDRESS>.1.1416017670
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby

maven31 fails to build also with the same errors.

Not sure how to help, sorry :/ Homebrew needs a functional mktemp.

I figured out the problem. You need to set the permissions to /tmp or /tmp/private (on a mac) - in my case the /private/tmp file was somehow deleted!
I documented my fix here: http://kaloidistech.com/wordpress/?p=101

There is also a HOMEBREW_TEMP environment variable you can set to a custom directory which I believe may work around the issue, if it doesn't work just by setting that variable to something like ~/.tmp you can try running mkdir ~/.tmp; chmod +t ~/.tmp and that should fix it for sure.


Build apk has problem: Could not GET 'https://google.bintray.com/exoplayer/net/minidev/json-smart/maven-metadata.xml'. Received status code 502 from server: Bad Gateway

Run: flutter doctor -v
flutter doctor -v
[✓] Flutter (Channel flutter-1.22-candidate.0, 1.21.0-10.0.pre.145, on macOS 11.6 20G165, locale en-VN)
    • Flutter version 1.21.0-10.0.pre.145 at /Users/account/development/flutter
    • Framework revision 3c9f68bc7e (1 year, 4 months ago), 2020-08-18 16:28:45 -0700
    • Engine revision b58f70f2c8
    • Dart version 2.10.0 (build 2.10.0-38.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0-rc1)
    • Android SDK at /Users/account/Library/Android/sdk
    • Platform android-31, build-tools 32.0.0-rc1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5, Build version 12E262
    • CocoaPods version 1.10.1

[!] Android Studio (version 4.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

[✓] VS Code (version 1.63.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[!] Connected device
    ! No devices available

! Doctor found issues in 2 categories.

Steps:

Just new one project
Add depend on it pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  http: 0.12.2
  stripe_payment: ^1.0.9 # <~~ added
  image_picker: ^0.6.7+14 # <~~ added

dev_dependencies:
  flutter_test:
    sdk: flutter

Run flutter build apk

Issue:
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':app:processReleaseResources'.
> Could not resolve all task dependencies for configuration ':app:releaseRuntimeClasspath'.
   > Could not resolve net.minidev:json-smart:[1.3.1,2.3].
     Required by:
         project :app > project :stripe_payment > com.stripe:stripe-android:10.4.6 > com.stripe:stripe-3ds2-android:1.2.2 > com.nimbusds:nimbus-jose-jwt:7.8
      > Failed to list versions for net.minidev:json-smart.
         > Unable to load Maven meta-data from https://google.bintray.com/exoplayer/net/minidev/json-smart/maven-metadata.xml.
            > Could not get resource 'https://google.bintray.com/exoplayer/net/minidev/json-smart/maven-metadata.xml'.
               > Could not GET 'https://google.bintray.com/exoplayer/net/minidev/json-smart/maven-metadata.xml'. Received status code 502 from server: Bad Gateway

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

* Get more help at https://help.gradle.org

BUILD FAILED in 7s

Note:
If not using stripe_payment or image_picker then build completed successfully

@phongdh-lftv  I'm also facing the same problem with
Flutter Version: v1.12.13+hotfix.8
image_picker version: 0.6.1+3
Did you find any solution to solve this?

Hi @msarkrish, @phongdh-lftv you're getting these errors because bintray has been sunset and the versions of the plugins you're using aren't using the new repositories. See https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/ for more information.
The versions of flutter you're using are too old to support the newer versions of the plugins you're using. I would advise you to upgrade to the latest version of flutter that way you can use the newer versions of the plugins which are now using mavenCentral.
@phongdh-lftv, in your case, you may need to switch over to a different package as the stripe_payment has been discontinued.

@msarkrish I tried to using other package: https://pub.dev/packages/image_pickers. It's working normally for me. But this is not a good way.

@phongdh-lftv, is there any reason you're still on flutter 1.21.0-10.0.pre.145?

@phongdh-lftv, is there any reason you're still on flutter 1.21.0-10.0.pre.145?

Now it's good! Help me to close this topic. Thank you!

Closing based on https://github.com/flutter/flutter/issues/95304#issuecomment-994582537.
Do bear in mind that some packages you may need in the future only support flutter 2 and above.

@phongdh-lftv @danagbemava-nc Currently i resolved the issue by building the apk in offline.


Handle async calls correctly in AotOptimizer

Instead of handling async calls from the await expression, we need to handle it from the invocation expression.
Because an async call is not necessarily to be awaited directly.

Thanks for fixing this.


Which operating systems, Python versions, etc. does Pipenv officially support?

The Pipenv documentation (perhaps in the installation guide) should specify which versions of CPython, which operating systems or Linux distributions, etc. Pipenv officially supports. For example, is PyPy supported, or only CPython?

should be linked to #4096

You can see which Python versions and operating systems Pipenv officially supports by looking at its classifiers on PyPI (left sidebar): https://pypi.org/project/pipenv/
The list of classifiers published for pipenv 2018.11.26 is:
License:

OSI Approved :: MIT License

Programming Language:

Python
Python :: 2.7
Python :: 3
Python :: 3.4
Python :: 3.5
Python :: 3.6
Python :: 3.7
Python :: Implementation :: CPython
Python :: Implementation :: PyPy

It looks like Pipenv chose not to add classifiers related to supported operating systems, even though those are potential trove classifiers.

Can i work on this issue?
I am new to open source and looking forward to contribute.
Thanks in advance if someone can guide me.

@rajneesh44 This isn't a great first issue for you to work on because it requires some skill and knowledge that you don't have yet. Instead I suggest you look at https://github.com/pypa/warehouse/issues/8012 . If you are interested in working on that, read the instructions comment there and comment on THAT thread to say "I am starting to work on this".

I don't think we plan to exclude pipenv from a particular operating system, but we can accept issue reports as they might pertain to other systems.


Integrate sources.bib via git submodule

The bibliography is available as github repos now: https://github.com/tupian-language-resources/bibliography and should be pulled into raw/bibliography as git submodule.

The clean transparent look of https://github.com/tupian-language-resources/tudet/tree/main/raw turned me into a fan of git submodules.

I am glad this function exists at all. It allows us to easily release on
TuDeT without depending on UD
On Thu, Mar 25, 2021 at 7:15 PM Robert Forkel @.***>
wrote:

The clean transparent look of
https://github.com/tupian-language-resources/tudet/tree/main/raw turned
me into a fan of git submodules.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tupian-language-resources/tuled/issues/32#issuecomment-807218484,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALNZPK6S2LRZ6S2WMKPCDY3TFN4UJANCNFSM4ZZ3PHUQ
.


Should nxontology graphs contain additional relationships beyond subClassOf / is_a relations?

I have an interest in obtaining a graph where I can choose to represent both subClassOf / is_a and other relations. For example, in the gene ontology I want to include the part_of, regulates, etc... relationships in my graph. Is there any interest in making this an option in imports.from_file? If so, I would be willing to make a first pass at a pr. If not, no worries, I will just make my own local solution using pronto directly in my project.
P.S. I realize this isn't really an "issue" but I don't see a discussion forum.

https://github.com/related-sciences/nxontology/pull/15 includes a nxontology.imports.read_gene_ontology function that loads the relationship types from GO Basic:

This is the basic version of the GO, filtered such that the graph is guaranteed to be acyclic and annotations can be propagated up the graph. The relations included are is a, part of, regulates, negatively regulates and positively regulates. This version excludes relationships that cross the 3 GO hierarchies. This version should be used with most GO-based annotation tools.

New functions will be included in the v0.3.1 release including read_gene_ontology and pronto_to_multidigraph.

Surprising that people are still able to find onto2nx!


Manual approval required for workflow run<PHONE_NUMBER>: Aprove of release on Prod environment

Please approve or deny the deployment of the relaese version to the Prod environment.
Workflow is pending manual review.
URL: https://github.com/Water-XP-Scrumban-Fall/BigProject/actions/runs/6312956350
Required approvers: [DrShadowPLay]
Respond "approved", "approve", "lgtm", "yes" to continue workflow or "denied", "deny", "no" to cancel.

yes

All approvers have approved, continuing workflow and closing this issue.


Use the secondary color for shadow block fills

Shadow blocks should always be filled with the secondary block color for that category.
This also means that blocks tat are always used as shadows don't need to have special color definitions.

Hey sorry my fault for LGing this. It seems to cause an issue with the background color of the shadow blocks, see screenshot:


Feature/issue 29 use combine

Use combine to create isolate
Remove all old isolate and method channels related code
Add PR template

PR Checklist

[ ] New code is 100% covered.
[x] I updated/added relevant documentation.
[x] All existing and new tests are passing.
[x] Changelog is updated.

[x] Version is pumped

Codecov Report

Merging #31 (1e44759) into master (8895ddc) will increase coverage by 7.63%.
The diff coverage is 96.66%.

@@            Coverage Diff             @@
##           master      #31      +/-   ##
==========================================
+ Coverage   82.38%   90.02%   +7.63%
==========================================
  Files          32       25       -7
  Lines         653      471     -182
==========================================
- Hits          538      424     -114
+ Misses        115       47      -68

Codecov Report

Merging #31 (3ead435) into master (8895ddc) will increase coverage by 11.06%.
The diff coverage is 95.00%.

@@             Coverage Diff             @@
##           master      #31       +/-   ##
===========================================
+ Coverage   82.38%   93.44%   +11.06%
===========================================
  Files          32       24        -8
  Lines         653      458      -195
===========================================
- Hits          538      428      -110
+ Misses        115       30       -85


Contacts last seen.

Still not syncing contacts last seen in this page.

Not reproducing

Verified this issue on dev app v2.0(349).Not able to reproduce this issue.


fix: check canonical field elements

Closing in favor of https://github.com/bluealloy/revm/pull/1434


Added mising test dependencies

I rebased #6 ontop of this, so this should show us whether this fulfilled all missing dependencies.


__dirname is not defined in ES module scope

I used the playwright times error on the electron main thread:
App threw an error during load
ReferenceError: __dirname is not defined in ES module scope
This file is being treated as an ES module because it has a '.js' file extension and '...\my-electron-vite-project\package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
    at file:///.../my-electron-vite-project/dist-electron/main.js:2187:136
    at file:///.../my-electron-vite-project/dist-electron/main.js:88:33
    at file:///.../my-electron-vite-project/dist-electron/main.js:8292:133
    at ModuleJob.run (node:internal/modules/esm/module_job:222:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:316:24)
    at async loadApplicationPackage (file:///.../my-electron-vite-project/node_modules/electron/dist/resources/default_app.asar/main.js:129:9)
    at async file:///.../my-electron-vite-project/node_modules/electron/dist/resources/default_app.asar/main.js:241:9

minimum-reproduction

__dirname is a CommonJS feature, you can replicate it in ESM using that:
import path from 'path'

const __dirname = path.dirname(new URL(import.meta.url).pathname)


Distance calculations - accuracy attained vs. accuracy required

Use case scenario:

Bob and Alice are less than 2 meters apart separated by a wall
The received bluetooth signal strength is less on both phones than it would be in the open air.
Neither person can cough/sneeze through a wall

Q. Can it be presumed that when environmental factors reduce received signal strength they always reduce risk of cross-infection too or is further detail required?

No, that can't be presumed in general, but it suffices for our use cases.
If Bob sits in a Faraday cage (or microwave) Alice phone won't receive his signals while they still are able to infect each other. While that use case is ridiculous the received signal strength and risk of cross-infection do not correlate in reality.
BLE is not used because it is the optimal solution to the problem but because it is what he have and still a better indicator than others.

Fair enough, that makes sense.

These sorts of concerns are also backed up by recent measurements, see https://www.scss.tcd.ie/Doug.Leith/pubs/bluetooth_rssi_study.pdf

Thanks for the paper @doug-leith, an interesting read.
I think false positives are an inevitability but the government will have the option of "turning the dial" on the criteria required to generate an alert. These could be done on minimum RSSI requirements or contact time and could even scale differently in different areas. This in effect would generate a variable lockdown that can be used to control the rate of infection to ensure nearby hospitals have enough beds.
There are economic reasons why they might turn that dial but unfortunately we will never know if that is the case. There's likely to be psychological factors as well, too many lockdowns and app participation may reduce as people switch it off.
It is worth noting that they'll have billions of data points and perhaps from such a large sample size there will be something meaningful come from the BLE data but it would definitely be something more woolly than distance.
I don't think you could have a system that works per individual reliably using BLE alone but you'll have something "good enough" for a large populous, especially when combined with social distancing and testing.

A couple of brief comments in reply:

Its not just false positives that are a concern, but also false negatives.  Those measurements I gave a link to suggest both might be quite likely in real environments, certainly if deciding upon proximity by simply thresholding on observed RSSI.
To the best of my knowledge there are no public results at all on the error rate of the NHS app at detecting proximity (or any other app for that matter).   Perhaps there is private data, in which case it would be good to make it public.  But if not then there seems little basis for assuming that it will be "good enough", and the measurements which are available (that link again) do suggest reasonable cause for concern.

To answer the question raised in #16 as to how contact tracing can work at all given that RSSI is essentially meaningless: It has to be based on a combination of "signal strength is high enough to make contact at all" combined with other data such as "duration of contact" and optionally "location of contact".  In many cases, there is no viable way for an automated system to acquire all of the relevant data, and an assessment of risk will require knowledge held only by the end user.
For example: suppose that I am using a fully decentralised model.  My phone sees an alert for a particular contact ID, and can tell from my phone's own logs that this contact took place from 4:17pm yesterday and lasted for 30 seconds.  My phone dismisses the alert as being below the risk threshold, and does not raise a notification to me.
Suppose now that the contact lasted for 30 minutes.  My phone assesses that this is above the risk threshold for alerting me, and raises a notification about the potentially hazardous contact.  I know that at this time I was sitting outside in a park and that nobody came close enough to be of concern.  I therefore dismiss the alert.
Suppose that I am walking outside and am passed by someone who is coughing violently and failing to keep a safe distance.  I press a button to tell my phone to treat even short-duration contacts around this time as being high risk.  My phone subsequently sees an alert for a contact with a duration of 30 seconds at this high-risk time, and so notifies me.
As this hopefully shows: there is a lot of information that feeds in to the risk calculation, and Bluetooth signal strength is only a very small part of this.

Thanks, it does seem likely that more than RSSI will be needed.  You mention "risk calculation", but at the moment there seems to be little data to inform such calculations.  Doesn't that mean its more like guesswork and hoping for the best?   Surely these sorts of considerations point to the need for some concrete actions re the NHS app so that decisions might be made in a more informed way, including:
(i) Carry out tests to evaluate the impact of such additional social techniques on the contact tracing error rate.  And as a starting point, carry out tests to clarify what the baseline error rate is without such extra measures.
(ii) Adoption of the sorts of social technique you mention suggest that changing the app to provide some support for these might be v helpful e.g. to allow people to easily note when they are alone and not at risk.
(iii) Clarify what level of proximity detection error can be tolerated while still achieving infection control.

Hi all, some really good discussion here. The details of the algorithm are published at https://faq.covid19.nhs.uk/Risk-scoring Algorithm - For Publication.pdf
Part of the Beta on the Isle of Wight is to validate how well BLE distance estimation works in practice. Similarly, the RAF test also looked at whether it was feasible.  We are investigating the RF properties of a huge number of chipsets and phones to understand how RSSI is effected.
We're going to close this issue, because it doesn't relate to a bug with the app. You are welcome to keep discussing it on this thread.

Hi (I worked with Doug on the report linked above). I think it may be an error to close off this issue. While it may or may not be a client side bug, ISTM that the distance estimation errors will still feed into false positives/negatives. While it's true that uploading the RSSI/TxPower and contact timing does provide more information I'm not clear that the RSSI->distance mapping will be any more accurate just because one applied a function after a distance is estimated. The contact duration does provide more information though but I'm not clear how very noisy RSSI values can be handled well even with that TBH. I also note the description of the RAF tests didn't make clear whether or not that was in an environment that's tricky for radios e.g. like the train carriage in which we tested, or when sitting on a metal park bench.

I'm not sure how many traffic jams there are on the Isle of Wight, but if these photos are anything to go by from today's North Circular in London, I worked it out that just 30 mins of nose-to-tail multi-lane stopped traffic is enough to trigger a chain of potential false positive contacts for 2 cars side-by-side (I assumed 4m driver separation, using the risk-scoring algorithm), and 90 mins for cars in front or behind (assumed 7m separation).
Those times might be easy to accumulate in 10 days of commuting on a busy route, or when queuing up for drive-through Covid test sites, so the app's advice for turning off bluetooth might be worth extending to solo drivers.

On 13/05/2020 12:28, skenaja wrote:

I'm not sure how many traffic jams there are on the Isle of Wight,
but if these
photos
are anything to go by from today's North Circular in London, I worked
it out that just 30 mins of nose-to-tail multi-lane stopped traffic
is enough to trigger a chain of potential false positive contacts for
2 cars side-by-side (I assumed 4m driver separation, using the
risk-scoring algorithm), and 90 mins for cars in front or behind
(assumed 7m separation).

I have it on my todo to check out RSSI between two adjacent
cars. If someone's already done that be great to know what
they saw.

Those times might be easy to accumulate in 10 days of commuting on a
busy route, or when queuing up for drive-through Covid test sites, so
the app's advice for turning off bluetooth might be worth extending
to solo drivers.

That's where the google/apple API may have an advantage. My
guess is they will have access to other sensors and the
underlying knowledge that might help with some such
scenarios. But, doing that well would still be pretty hard
I guess.
And of course that only helps with false positives. I don't
know how one might tackle false negatives caused by highly
noisy radio environments.
Cheers,
S.

Hi all, some really good discussion here. The details of the algorithm are published at https://faq.covid19.nhs.uk/Risk-scoring Algorithm - For Publication.pdf

Looks like this URL has changed or the doc has been withdrawn - now giving a 404 error :-(

Sometimes I think asking for real-time user input would be helpful in think. If Bob pressed a 'Protective Mode' on during the visit to Alice the false negatives could be avoided very easily, along with the cascading events afterwards, I.e. the people Bob then walks by on the way, home, in the supermarket etc. NHS staff could use the same button when wearing PPE gear

@skenaja looks to be here now: https://nhsbsa-socialtracking.powerappsportals.com/Risk-scoring Algorithm.pdf


  Setup currently installs all of these separately.  We could reduce the setup executable size by perhaps 20MB by combining these into the same directory.
Not a super high priority right now but we should address this before the first public release.

I've rolled the nshell functionality into neon-cli so this is less of a problem.
I'm going to put this on the backlog to revisit once we've ported the neonKUBE desktop to .NET Core 3.0.

Closing this as a separate issue.  We'll deal with this in #433.


allow AtomFunctions to return (Either RelationalError Atom)

This was an oversight from the very start. AtomFunctions do need to sometimes return error conditions, especially while the type checker is so simple.

I am having second thoughts about this. We need to categorize precisely what kind of errors a function may wish to propagate. Should atom functions also be throwing exceptions? My instinct suggests that we want the atom functions as pure as possible.

Fixed via #85.


Summary output for R markdown

Want something similar to sjPlot::tab_model with more flexibility to output in PDF or Html.
Should have three functions,

tabulate a summary object (start with lm and check other model types,
format the output of (1) for PDF,
format the output of (1) for Html.

(2) and (3) should be flexible to change at function call level

Function based of version in private repo that works with survreg. Use that as a basis.

Closed with 18c050092b60f2fdbeba8fed279c4c1403530ae6
Need more elegant solution to deal with mlm type objects. Opening new issue #5


SIGKILL while build process

Hello, Team,
Great analysis tool, thank you!
Could you help me please to deal with haproxy analysis... or at least how to get more diagnostics to find errors
I adapt haproxy makefile to compile with MATE (haproxy.tar.gz attached), than created artifact:
mate-cli artifact create compile-target:tarball haproxy.tar.gz
got
{     "artifact_id": "76e78253db7c4dc89fa43e4f0ec31ae9",     "attributes": {         "filename": "haproxy.tar.gz"     },     "build_ids": [],     "compilation_ids": [],     "has_object": true,     "kind": "compile-target:tarball" }
Than I compiled haproxy  - successfully:
mate-cli compile create --wait --artifact-id 76e78253db7c4dc89fa43e4f0ec31ae9 --make-targets all
got state "compiled":
{     "artifact_ids": [         "76e78253db7c4dc89fa43e4f0ec31ae9",         "07e624b817d14ae297532714c916a1ab",         "c7f74f4f1b734677be79b7ca84f1d873",         "da921fd94c804a5a8ef4470af043f49f",         "a19a76750b8b4862a0384c99d323c18e"     ],     "build_ids": [],     "compilation_id": "99c3197dfbfa4feda4ed7ca82987c59a",     "log_artifact": {         "artifact_id": "07e624b817d14ae297532714c916a1ab",         "attributes": {             "filename": "compile.log"         },         "build_ids": [],         "compilation_ids": [             "99c3197dfbfa4feda4ed7ca82987c59a"         ],         "has_object": true,         "kind": "compile-output:compile-log"     },     "options": {         "containerized": false,         "containerized_infer_build": true,         "docker_image": null,         "experimental_embed_bitcode": false,         "extra_compiler_flags": [],         "make_targets": [             "all"         ],         "testbed": null     },     "source_artifact": {         "artifact_id": "76e78253db7c4dc89fa43e4f0ec31ae9",         "attributes": {             "filename": "haproxy.tar.gz"         },         "build_ids": [],         "compilation_ids": [             "99c3197dfbfa4feda4ed7ca82987c59a"         ],         "has_object": true,         "kind": "compile-target:tarball"     },     "state": "compiled" }
but when I tried to build haproxy  - i got failed state
What should I do to make process successfully finished?
After
docker container logs mate_executor_1
I got error messages:
`
[2022-10-23 10:07:06,466: DEBUG/ForkPoolWorker-1] waiting for build: build.uuid='9e66837900734413a413d50900b709e9' build.state=<BuildState.Building: 'building'>
[2022-10-23 10:07:11,372: ERROR/ForkPoolWorker-8] Task mate.tasks.build.build_artifact[c1ff0258-7649-479d-8bd6-bb4d59d577bf] raised unexpected: MateError('9e66837900734413a413d50900b709e9', '[PosixPath('/opt/mate/llvm-wedlock/bin/opt'), '-load', PosixPath('/opt/mate/local/lib/libSoufflePA.so'), '-load', PosixPath('/opt/mate/local/lib/libPAPass.so'), '-load', PosixPath('/opt/mate/local/lib/libMATE.so'), '-disable-output', '-signatures=/tmp/tmpytz40zm7.json', '-time-passes=false', '-ast-graph-writer', '-pretty-llvm-value=true', '-datalog-pointer-analysis=true', '-mem-dep-edges=false', '-control-dep-edges=true', '-datalog-analysis=unification', '-debug-datalog=false', '-debug-datalog-dir=/tmp/tmpfgbuum3s/pa_results', '-check-datalog-assertions=false', '-context-sensitivity=2-callsite', '-cpg-file', '/tmp/tmp0gfyovjm.jsonl', PosixPath('/tmp/tmpub_vmjt6.bc')] exited due to signal SIGKILL (9);\n\nSTDOUT:\nb''\n\nSTDERR:\nb'Writing facts to: "/tmp/tmpfgbuum3s/pa_results"...\nfneg: Unhandled instruction\n'')
Traceback (most recent call last):
File "/opt/mate/lib/python3.8/site-packages/celery/app/trace.py", line 451, in trace_task
R = retval = fun(*args, **kwargs)
File "/opt/mate/lib/python3.8/site-packages/celery/app/trace.py", line 734, in protected_call
return self.run(*args, **kwargs)
File "/opt/mate/local/lib/python3.8/site-packages/mate/tasks/build.py", line 49, in build_artifact
mate_build.build_artifact(artifact, build, self.session, opts)
File "/opt/mate/local/lib/python3.8/site-packages/mate/build/build.py", line 1002, in build_artifact
raise e
File "/opt/mate/local/lib/python3.8/site-packages/mate/build/build.py", line 992, in build_artifact
(_new_artifacts, _graph) = builder.build_artifact(artifact, session)
File "/opt/mate/local/lib/python3.8/site-packages/mate/build/build.py", line 617, in build_artifact
mate_jsonl = self._build_mate_jsonl(Path(canonicalized_bc.name))
File "/opt/mate/local/lib/python3.8/site-packages/mate/build/build.py", line 458, in _build_mate_jsonl
raise CPGBuildError.from_process_error(e, build_id=self._build.uuid)
mate_common.error.MateError: ('9e66837900734413a413d50900b709e9', '[PosixPath('/opt/mate/llvm-wedlock/bin/opt'), '-load', PosixPath('/opt/mate/local/lib/libSoufflePA.so'), '-load', PosixPath('/opt/mate/local/lib/libPAPass.so'), '-load', PosixPath('/opt/mate/local/lib/libMATE.so'), '-disable-output', '-signatures=/tmp/tmpytz40zm7.json', '-time-passes=false', '-ast-graph-writer', '-pretty-llvm-value=true', '-datalog-pointer-analysis=true', '-mem-dep-edges=false', '-control-dep-edges=true', '-datalog-analysis=unification', '-debug-datalog=false', '-debug-datalog-dir=/tmp/tmpfgbuum3s/pa_results', '-check-datalog-assertions=false', '-context-sensitivity=2-callsite', '-cpg-file', '/tmp/tmp0gfyovjm.jsonl', PosixPath('/tmp/tmpub_vmjt6.bc')] exited due to signal SIGKILL (9);\n\nSTDOUT:\nb''\n\nSTDERR:\nb'Writing facts to: "/tmp/tmpfgbuum3s/pa_results"...\nfneg: Unhandled instruction\n'')
[2022-10-23 10:07:11,381: DEBUG/ForkPoolWorker-8] http://storage:9000 "PUT /artifacts/6cfabc5ea6fe4c66973e1cfefbf9a6b0 HTTP/1.1" 200 0
[2022-10-23 10:07:11,474: WARNING/ForkPoolWorker-1] got failed state for build, not running analyses: build.uuid='9e66837900734413a413d50900b709e9' build.state=<BuildState.Failed: 'failed'>
[2022-10-23 10:07:11,483: INFO/ForkPoolWorker-1] Task mate.tasks.build.await_built_state_and_start_all_analyses[1de85dcd-507c-4fac-ae8d-3633cbccd8ab] succeeded in 2292.0805339869694s: None
[2022-10-23 10:07:11,484: ERROR/ForkPoolWorker-1] probable API misuse: task didn't take a build_id kwarg
`

This part of the error message comes from the pointer analysis, I've filed an issue on that repo.
fneg: Unhandled instruction

However, that error isn't fatal, so I don't think it's causing the issue.
The part about SIGKILL suggests that this might be an out-of-memory issue, which likely stems from the pointer analysis. @drJabber Take a look at this page in the documentation: https://galoisinc.github.io/MATE/debugging-builds.html. You might try increasing memory_limit_mb or changing pointer_analysis to the unification-based analysis.

@drJabber Were you able to get this working?


Sample code doesn't work - need change the PublicClientApplication config

I stepped through the sample code using exactly the code in the Tutorial with no modifications other than those needed for plugging in my app registration URLs and ids.
Once I had the sample all complete, I tried to run and got his error in the browser debugger console:
ERROR Error: Uncaught (in promise): ClientAuthError: endpoints_resolution_error: Error: could not resolve endpoints. Please check network and try again. Detail: ClientConfigurationError: untrusted_authority: The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.
I did some web searching and came across something saying you needed to add my tenant to the knownAuthorities property of the PublicClientApplication auth settings. In doing so, to get it working I also needed to remove the v2.0 from the authority URL or I was getting errors because it was including the v2.0 segment twice.
So this code in app.module.ts was the end result of the tutorial:

And then my changes that got it working were to change those settings to these:

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 28c13084-08f6-c015-7769-c2ab9170c1d2
Version Independent ID: 44d5c264-8c95-0ae5-be9c-8982cea33223
Content: Tutorial: Create an Angular app that uses the Microsoft identity platform for authentication using auth code flow - Microsoft Entra
Content Source: articles/active-directory/develop/tutorial-v2-angular-auth-code.md
Service: active-directory
Sub-service: develop
GitHub Login: @jo-arroyo
Microsoft Alias: joarroyo

@briannoyes
Thanks for your feedback! We will investigate and update as appropriate.

@briannoyes
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly

@jo-arroyo
Is there any update on this case?


[Suggestion]: Migrate to PBandJ

Given tsdx isn't maintained anymore and is very inefficient to todays standards, it may make sense to migrate to PBandJ:
https://github.com/moishinetzer/pbandj
It also includes config for vitest, changesets for publishing and other modern features and tools such as storybook v7 etc.
I'm happy to help make the transition if you need any help!

Appreciate it, but no thank you! I'd prefer to keep it dead simple. Plus this project is not actively maintained.


COMPAT: allow multi-indexes to be written to Excel (even they cannot be read back in)

xref https://github.com/pydata/pandas/issues/9794

cc  @onesandzeroes
can you do a pull-request?

I can see if I can. if @onesandzeroes doesn't beat me too it.

jreback: "issue at #10564 though I think we need a argument to allow (so it can be turned on/off)"
@jreback Is the index argument not enough?  What would you want it called?
We could warn, and add an argument not to warn. (particularly that the resulting xls file can't be read back by pandas)?
I'm also not seeing any tests around dataframes and to_excel.

https://github.com/pydata/pandas/blob/master/pandas/io/tests/test_excel.py#L1164
I think that a warning is appropriate here. I normally hate that but the reason for this is that this is a one-way serialization.


v7.0.0

Coverage remained the same at 100.0% when pulling 31c7464d8d60a5aac94f61806cc8fca40f052e0c on v7.0.0 into 9e614a1b22e8cb28de70d448b786d26ca9624010 on master.


Make layout_bench.dart 19% faster

Previously we would walk from every node in layout to the root to mark the root
as needing paint. Now we leave dirty bits throughout the tree so that we can
cut off the walk as soon as we find a dirty node.

LGTM

So you can never be "needs paint" and be grafted into a tree which does not need paint?  Do we need to assert that somewhere?

If you get grafted into the tree, by definition your new parent is going to be dirty.

Specifically, RenderObject.adoptChild calls markNeedsLayout, which implies markNeedsPaint.


Added Integration testing for javascript

Known Issues:
Structs are not being exported in the module.exports even when making the whole crate as pub use
//<EMAIL_ADDRESS>
module.exports = { Sgp4, Elements, ResonanceState, Constants };

Closes #2

Known Issues:
Structs are not being exported in the module.exports even when making the whole crate as pub use

@dynamite-bud everything is working as intended. Records are converted to TypeScript type definitions and interfaces, not classes, which is why JavaScript can't import them with require().


Invalid Sentry DSN message not logged for expected case

Prerequisites

[x] Did you check past issues for similar issue(s) ?
[ ] Can you reproduce the issue with any of the files found in sct_testing_data ?

Is this meant to be sct_example_data? If so, yes.

[x] If you are using a development environment, is your environment updated ?

Description
If an invalid DSN is setup, a message is supposed to be logged per here, but the exception doesn't appear to be caught to execute the logging statement for a test case described below.
Steps to Reproduce
The e.g. cases are the steps that I did to force this bug locally.

Corrupt DSN (e.g. add/remove a single number in the DSN address of the export SENTRY_DSN=... line of ${SCT_DIR}/bin/sct_launcher.
Create a bug (e.g. Added the statement 1/0 just after the line sct.init_sct()  in __main__ of sct_propseg.py
(Optional*) Add a print message in the first line of  except raven.exceptions.InvalidDsn: (e.g. print('Sentry DSN not valid anymore, not reporting errors')

*I couldn't find where the log.debug() statements are actually saved, which is why I added this hack.

Run function for case with bug (e.g. run batch_processing.sh)

Expected behavior:
The message 'Sentry DSN not valid anymore, not reporting errors' should be printed, because of the code block below (and my hack in number no. 3 above):
https://github.com/neuropoly/spinalcordtoolbox/blob/494325b65eb77733b0427178cdfa8f550a5822ae/scripts/sct_utils.py#L222-L224
Actual behavior:
That message was not printed, see output below. Only No handlers could be found for logger "sentry.errors" was displayed, which appears to be sentry's default message for this case.
./batch_processing.sh
Started at: 06.07.2018_

--
Spinal Cord Toolbox (master/494325b65eb77733b0427178cdfa8f550a5822ae)
Running /Users/mathieuboudreau/neuropoly/github/sct/scripts/sct_download_data.py -d sct_example_data

Trying URL: https://osf.io/kjcgs/?action=download
Downloading 20180525_sct_example_data.zip...
Status: 100%|###################################################################################| 44.3M/44.3M [00:02<00:00, 14.9MB/s]

Check if folder already exists...
WARNING: Folder sct_example_data already exists. Removing it...
rm -rf sct_example_data

Unzip data to: /Users/mathieuboudreau/neuropoly/github/sct

Remove temporary file...
Done!

Total processing time: 0 min 6 s

--
Spinal Cord Toolbox (master/494325b65eb77733b0427178cdfa8f550a5822ae)
Running /Users/mathieuboudreau/neuropoly/github/sct/scripts/sct_propseg.py -i t2.nii.gz -c t2
Traceback (most recent call last):
  File "/Users/mathieuboudreau/neuropoly/github/sct/scripts/sct_propseg.py", line 343, in <module>
    1/0
ZeroDivisionError: integer division or modulo by zero
Sentry is attempting to send 1 pending error messages
Waiting up to 10 seconds
Press Ctrl-C to quit
No handlers could be found for logger "sentry.errors"
Note: you can opt out of Sentry reporting by editing the file ${SCT_DIR}/bin/sct_launcher and delete the line starting with "export SENTRY_DSN"
Total processing time: 0 min 2 s

Reproduces how often:
100% of the times I tested.
State of spinalcordtoolbox
 ./batch_processing.sh
Started at: 06.07.2018_

--
Spinal Cord Toolbox (master/494325b65eb77733b0427178cdfa8f550a5822ae)
Running /Users/mathieuboudreau/neuropoly/github/sct/scripts/sct_download_data.py -d sct_example_data

Additional Information
I saw @zougloub's message on slack about disabling Sentry for dev/testing. (I'm not "alioth"). I haven't and don't intend to test beyond this case using a valid DSN, I just fell on this while trying to port SCT's Sentry setup to AxonDeepSeg.

I was actually able to get that statement to execute/print (testing with my own account's DSN), however it's a somewhat subtle case.
There are two keys in the Sentry settings, "DSN" and "DSN (Deprecated)" (which contains the secret key). It seems like you are using a setup for the "DSN (Deprecated)". Using my own "DSN (Deprecated)", I don't get the print message. I don't even get the logged/printed message for this case if I add/remove a letter/number in the key, or if I regenerate a new one and delete the key that I set it up for.
I do however get that error message to display if I use my own valid "DSN" key, possibly because you're using an older version of Sentry/SDK which requires the secret?
This issue could likely be closed, I just thought I'd let you know of this odd behaviour – I thought that error would be logged for any invalid DSN, or at least expired/deleted ones as the comment above the logging statement suggested. Seems like it only actually logs if the secret key is missing, regardless of if the public/secret key the valid or expired (like the comment # This could happen if sct staff change the dsn suggested).

Thanks a lot for those investigations @mathieuboudreau!
Maybe we should switch to the new DSN?

@jcohenadad from all I've read in the Sentry github issues, the Sentry will not accept the private DSN that SCT is currently using "soon", but it's not clear when that will be. So yes, it's likely a good idea to switch from the private DSN we're currently using to the public one available on the Sentry settings page.
One thing to note is that the current version of raven-python that sct is using (6.2.1) isn't compatible with the public-only DSN; they fixed that bug recently in version 6.8.0. So if you want to switch to using the public DSN, you'll have to change the private DSN to the public one on the NeuroPoly server (in the "stats_dsn.txt" file), and raise the version requirement to at least 6.9.0 in these two locations:
https://github.com/neuropoly/spinalcordtoolbox/blob/0161a53eff5bc5b90ee4c8dcee2586cfde276cb9/install/requirements/requirementsSetup.txt#L11
https://github.com/neuropoly/spinalcordtoolbox/blob/0161a53eff5bc5b90ee4c8dcee2586cfde276cb9/install/requirements/requirementsPip.txt#L6
I tested it using the my own public DSN with SCT + raven==6.8.0, and it worked (Sentry received report for the fake bug I created).

Our requirements no longer fix the version of raven at all, so I presume this has been addressed.


VM: Implement "Spread Collections"

Initially these features are behind the experimental flag --enable-experiment=spread-collections.

[ ]   Support in List Literals.
[ ]   Support in Map Literals.
[ ]   Support in Set Literals.

See:
Language tracking issue: dart-lang/language#164
Feature specification
https://github.com/dart-lang/language/blob/master/accepted/future-releases/spread-collections/implementation-plan.md
PENDING Unified Collections: https://github.com/dart-lang/language/pull/200

Current status of spread collections test
           spread
JIT   +  175 | -   51
AOT   +  180 | -   46

Looked at a few that fail seemingly after parsing.
One is due to missing type arguments, I filed:
https://github.com/dart-lang/sdk/issues/36284

New status:
           spread
JIT   +  216 | -   42
AOT   +  213 | -   45

The latest test results shows 7 tests crashing in the VM with the following stack trace
stderr:
../../runtime/vm/compiler/frontend/constant_evaluator.cc: 129: error: unimplemented code
version=2.2.1-edge.69079303cf82fd1d4f985a963164c1de793490a2 (Tue Mar 26 13:47:39 2019 +0000) on "linux_x64"
thread=7996, isolate=const_error_test_05.dart:main()(0x5624fd63c900)
  [0x00005624fbacae3c] dart::Profiler::DumpStackTrace(void*)
  [0x00005624fbacae3c] dart::Profiler::DumpStackTrace(void*)
  [0x00005624fbd9c8a2] dart::Assert::Fail(char const*, ...)
  [0x00005624fbcbe1f1] dart::kernel::ConstantEvaluator::EvaluateExpression(long, bool)
  [0x00005624fbcd8656] dart::kernel::StreamingFlowGraphBuilder::BuildVariableDeclaration()

We also seem to have 13 RuntimeErrors (could be all related to CFE issues but each one of them needs to be evaluated)

It is unclear if the constant evaluator in the VM will need to be extended to deal with block expressions or not. Right now we see something like this in the kernel file, with an unimplemented map entry in the statement block.
    const core::Map<dynamic, dynamic> res1 = block {
      final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
      [@vm.call-site-attributes.metadata=receiverType:dart.core::Map<dynamic, dynamic>] #t1.{core::Map::[]=}(invalid-expression "unimplemented map entry", null);
    } =>#t1;

Checked with Kevin: VM does not need to deal with "constant" block expressions, all constants are evaluated to list constants, set constants, or map constants.

This morning's status
         spread
JIT   +  295  | -   24
AOT   +  290  | -   29

go/dart-test-results shows 4 failures (all CFE related)

await_test https://github.com/dart-lang/sdk/issues/36277
const_error_test[12,13,14]

If there is no more work to be done in the compilers we can close this issue, A separate issue can be opened to track the OSR optimization issue.

Tracking OSR follow up in https://github.com/dart-lang/sdk/issues/36421
(this is probably more important for control flow collections than spread operators, but even those could in theory be long running)


Support arrow keys...

...maybe? It's probably not worth being so opinionated on the subject.

Might be worth exploring making this pan around the document rather than doing anything with selections.


fix: custom LogRotator error

Checklist

[ ] npm test passes
[ ] tests and/or benchmarks are included
[ ] documentation is changed or added
[ ] commit message follows commit guidelines

Affected core subsystem(s)

Description of change

close https://github.com/eggjs/egg/issues/2290

3.0.3


pip install errors: 5.1.X and 5.2.X versions cannot be found in pypi

pip install itk tries to pull itk-5.0.1, instead of the current stable release.
In fact, pip install itk==5.2.1 reports error:
ERROR: Could not find a version that satisfies the requirement itk==5.2.1 (from versions: 4.12.0.post1, 4.13.0, 4.13.1.post1, 5.0a1, 5.0a2, 5.0b1, 5.0b3, 5.0rc1, 5.0rc2, 5.0.0, 5.0.0.post1, 5.0.1, 5.3rc2, 5.3rc2.post1, 5.3rc3, 5.3rc4, 5.3rc4.post1, 5.3rc4.post2, 5.3rc4.post3)
ERROR: No matching distribution found for itk==5.2.1

@thewtex @jcfr

5.2.1 does exist.  But I have seen (at least once) the error message you provide.

Ok, then maybe is a pip hiccup. Closing.


Upgrade to 5.0.2 potentially caused hanging threads

Hello,
We recently upgraded to 5.0.2 and almost immediately started to notice major degradation on one of our Sidekiq queues that make heavy usage of HTTP. I have attached a screenshot that shows our jobs.wait metric - how long a job takes to complete from the time it was enqueued, in ms for the last four weeks. We started seeing a lot of "dead" threads, that is jobs making external HTTP requests, that would hang indefinitely and exhaust our worker pool, until we restarted dynos, which would immediately resolve after restart. The vertical line shows when the release with the HTTP upgrade was rolled out. I downgraded back to 5.0.1 today and we thus far have observed no dead threads.
I strongly suspect a regression in this pr, but haven't yet been able to build a reproducible test case due to the intermittent nature of external resources and the concurrent access to them. I'm happy to provide additional information and welcome any tips on how I can troubleshoot. We do use the global .timeout(20) in these requests.
Thanks!

Can you try reverting that commit on a local fork and see if it resolves the issue?

Yes, I will run the below in production and report back, maybe wait until next week depending on if it resolves or not just to be sure.
https://github.com/PhilCoggins/http/tree/revert_638

Great, thanks! If it fixes the problem, please open a PR!

Thanks @tarcieri! It would be easy enough for me to open a PR with my linked branch, but I think it's appropriate to tag the original author @midnight-wonderer before we wipe out his valued contribution in the next release without warning.
@midnight-wonderer: I believe the retry loop implemented in this feature is responsible for consuming the thread pool in my BG workers. I'm unable to produce a failing test script, and I don't fully understand the conditions or low-level details of why this retry loop hangs indefinitely, but the results in my application have made it pretty clear that this commit is the culprit.
I'm happy to debug or provide details as requested, I just need some hints or a nudge in the right direction as I don't have the time or resources to wrestle such a complex, intermittent bug.

Looking into it, getting back to you in a day (or two).

I know you understand the code already.
I have an argument that the change in the PR is an abstract one.
The change provides high-level policies of what the software should behave without specifying the implementation details.
The addition of code does not specify how to resolve the address (moved the definition to the constructor), interact with the OS, handle the network stack, or thread stuffs.
Apart from the policy level, there is no change from the existing code.
While the issue surfaced at the commit, the real culprit might be elsewhere.
This
def connect(socket_class, host, port, nodelay = false)
    reset_timer
    ::Timeout.timeout(@time_left, TimeoutError) do
      @socket = socket_class.open(host, port)
      @socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) if nodelay
    end
    log_time
end

is the same as this
def connect(socket_class, host, port, nodelay = false)
    reset_timer
        connect_operation = lambda do |host_address|
          ::Timeout.timeout(@time_left, TimeoutError) do
            super(socket_class, host_address, *args)
          end
        end
    connect_operation.call(host)
    log_time
end

no behavior change.
And this
  host_addresses = @dns_resolver.call(host_name)
  # ensure something to iterates
  trying_targets = host_addresses.empty? ? [host_name] : host_addresses
  reset_timer
  trying_iterator = trying_targets.lazy
  error = nil
  begin
    connect_operation.call(trying_iterator.next).tap do
      log_time
    end
  rescue TimeoutError => e
    error = e
    retry
  rescue ::StopIteration
    raise error

is just the translation of this policy
all_possible_addresses.each do |addr|
  connect_operation.call(addr)
end

implemented purely with language primitives without libraries or native extensions.
IMHO, if we want to move forward, we should keep the policies and resolve the lower level.
Depending on the objective, if we want to make this regression go away right now and drop the progress, we can simply revert the change. This option might break other people who rely on the behavior, though.
From the piece of code, it is either Timeout.timeout or TCPSocket.open who created "dead threads".
I guessed the issue stems from TCPSocket not supporting timeouts.
Should we use Socket#connect_nonblock instead? or rather do we able to?
However, if the reversal works for you guys, just giving me the head up is enough.
If in the end, resolving the regression as fast as possible is the top priority, I have no objection to it.

I got some clue, but can't really confirm.
I knew from somewhere that Enumerator can interfering with threads somehow.
Probably mentioned in one of @ioquatix talks.
Can you get rid of lazy and try again?
Probably with something like:
trying_targets = host_addresses.empty? ? [host_name] : host_addresses
reset_timer
error = nil
trying_targets.each do |target|
  connect_operation.call(target).tap do
    log_time
  end
  error = nil
  break
rescue TimeoutError => e
  error = e
  next
end
raise error if error

@midnight-wonderer Thanks for the response and explanation! I agree with your assessment that your change is higher level and that the implementation details are at the core of this. I'm not comfortable to continue use my organization's production environment as a testing ground to troubleshoot, at least until I have a firm grasp on what is happening at the lowest level, and can reproduce the behavior locally.
My best guess at this point is that your change has compounded this underlying issue by attempting to open N + (Number of A records returned from Resolv.getaddresses(host_name)), as opposed to timing out once. My feeling is that timing out calls to potentially unresponsive services with TCPSocket.open is exhausting available client (outbound) ports, or causing existing ports that were previously timed out, and subsequently not closed properly, to be selected and then being hung.
This is conjecture, and until I can repro locally, I feel I'm flying blind and spinning my wheels. You mentioned TCPSocket not being able to support timeouts, though I would point out that Ruby 3 does support this, and net/http now uses this option to handle connect timeouts, though of course http must support Ruby < 3, so that probably isn't helpful. FWIW, I think Timeout is the primary culprit here.
If you or @tarcieri can provide any ideas to get a reproducible script, I am eager to learn and help figure out resolution for this issue. I am in no rush to merge or resolve if this problem is isolated to my usage, we've patched to remove this commit and no longer experiencing issues.

Oh, OK, my bad; I thought you could reproduce it already since you can pinpoint and confirm that the issue will go away if we revert the commit.
I think only system programmers who know Ruby can explain exactly what happened. I believe Timeout.timeout's implementation is too arbitrary and does not look trustworthy, but I still don't understand why there is no problem before the commit.
Since system programming is not my ground, I cannot assist any further than this.
But, if I have some spare time, I'll try to see how I can help get rid of Timeout.timeout, at least for Ruby 3.

To clarify, I did revert your commit and kept everything else in place on 5.0.2, and we have not noticed the issue resurface in 48 hours now.

I see that https://github.com/httprb/http/pull/638 added some begin/rescue/retry blocks that have no retry count limits. So i guess the problem is that for some reason it starts raising and retrying forever.

So i guess the problem is that for some reason it starts raising and retrying forever in some situations.

It will only retry N + (Number of A records returned from Resolv.getaddresses(host_name)) times. After the final iteration, ::StopIteration raises and then it re-raises the last error that occurred.

As others have noted, Timeout is quite problematic and not particularly safe.
Unfortunately it is the only way to get the full functionality of the system resolver.
The main alternative is to use Resolv::DNS which is written in Ruby and supports its own timeout mechanism via Resolv::DNS#timeouts, however it doesn't support the full functionality of the system resolver.

@tarcieri My understanding is that timeouts are not occurring on DNS resolution, but on actually opening a TCPSocket to individual addresses? What am I missing?

Oh sorry, perhaps I was missing something?
Here's an old example I wrote of how to do non-blocking connect, but as noted above, it involves using Socket instead of TCPSocket:
https://github.com/socketry/socketry/blob/master/lib/socketry/tcp/socket.rb


Create protocol for passing configuration information from host to guest

This could be done over vsock.
Data to pass:

container manifest
network setup information
any additional setup information (environment variables, logging info, ??? )
receive status and notification events from an app in VM (failure, crash, etc. TBD) and do something useful
Logging: develop logging infrastructure to receive logs from VM over vsock
VM must not use the serial output for logging; i.e., no stdout/stderr

The documentation for vm <--> host communication for firecracker (FC) is here: https://github.com/firecracker-microvm/firecracker/blob/master/docs/vsock.md . It recommends using both Socat and nc-vsock.
I compiled both statically for ARM, and using Socat on the host as the server and nc-vsock in the VM as the client, it is possible to send a configuration file at boot time from the host to the guest. This eliminates the need to specify the IP params on the kernel config.
To send a manifest or config file, the host sets up a Socat process listening on a socket:
	socat $file UNIX-LISTEN:${dir}/fcvsock.sock_${port}
Thefcvsock.socksocket is specified in the firecracker config file and is created by the FC process. The socat server should be started before FC (to avoid races), so it needs to wait until FC creates the socket. The port number is arbitrary and analogous to a normal TCP port (it is used to distinguish between processes on the host).
The client (VM) can then use nc-vsock to connect to the host and pull the file:
	/bin/nc-vsock 2 $port > $outfile
The port number is currently specified on the kernel command line. If the vsock is placed in a unique directory on the host, then all VMs can use the same port, which would eliminate the need to modify the kernel command line on each VM invocation.
Using this method, it is possible to pass the network config from host to guest; the guest then invokes the appropriate ip commands to configure eth0.
I have not yet investigated using Socat as a pipe, but it is theoretically possible. This would mean that all logging in the guest would be directed to a socket (vsock) in the VM; in the host, a process would continually drain the pipe and write the results to the logger.
It might be worth having a few dedicated sockets, in a manner similar to stdin/stdout/stderr. One socket for configuration, one for logs, and one for status.
For the sake of simplicity, it might be best to have the initrd in the VM spawn the application and then wait for it. It would then return the exit status of the app to the host over the vsock. The only option on both zero and non-zero exit status would be to halt the VM. The policy of what to do on app exiting would then be handled on the host by northstar.

For logging, it may be sufficient to have the application in a VM log everything to stdout/stderr and then pipe all output to a vsock. On the host, then a corresponding thread would just dump it to stdout, which would be captured by the normal northstar log wrapping mechanisms.
For example, as a test, a shell script in a VM which just prints something to stdout once a second. The output is send to a pipe (nc-vsock) that sends it to the host. On the host, there is just a Socat listening on the pipe.
In this example the port number is 40, chosen at random
VM:
/ # /tmp/doit.sh | nc-vsock 2 40
Host:
socat UNIX-LISTEN:./fcvsock.sock_40 -                                                             <
count 0
count 1
count 2
etc

Files to bring up VM:
  vmconfig=$rundir/vmconf.json
        VM config, passed to VM by config vsock
                network config
                mount config
                application config
  fcconfig=$rundir/fcconf.json
        Firecracker config, passed to firecracker
                path to kernel, initrd
                path to additional mounts
                vtap(network) config
                machine config
                path to vsock and config
                path to metrics file
  vmstatus=$rundir/vmstatus
        Status from VM, integer
  vmlog=$rundir/vmlog
        All output from app in VM, from vsock
  fclog=$rundir/fclog
        Firecracker log output
  fcmetrics=$rundir/fcmetrics
        Firecracker metrics
  ctlsock=$rundir/fcsock
        Control socket for firecracker; may not be req.
        Can be used to force metrics dump
  vsock=$rundir/fcvsock.sock
        vsock base name; there are 3 ports used. The naming
        convention is to append the port to the name
          0  config to VM (stdin)
          1  logs (stdout)
          2  status (stderr)

Socat servers:
        socat is used as an interface to the VM. It does read/write on
        the vsock that firecracker uses as a communications channel to the
        VM.

        config server (port 0)
        Waits until base socket is created by FC (rundir/fcvsock.sock)
        then starts listening on port 0. VM will connect as client
        and retrieve json config file

        log server (port 1)
        Starts listening on port 1 and directs all output to file. Uses
        'fork' semantics so that multiple connections are allowed from
        the VM. All data received is written to a file. This is to avoid
        console output (which is slow over the serial console)

        status server (port 2)
        When the application exits in the VM, the exit code is sent
        to the status server. This is then reported as the exit
        code of the container. The exit code of firecracker itself
        can not be used because it does not reflect the actual application
        status itself.

Archive fc issues


Models: MeasurementTool

Attributes

title
tags (will implement later)
document

Category - type enum:

general
individual
relational
community

@nathanstruhs Clarified the domain language here. A "MeasurementTool" (aka survey aka pdf aka document) has a title, tags, attached file, and a category.

I am not set on the "MeasurementTool" as a model name. Let's look at the docs / spreadsheet and understand the domain.

From the docs it seems that this model is most often referred to as 'Category of measure', Ill open this up in Campfire to see if we can get any further input.

@ybakos What do you think about just calling the model 'Measure', then we could have an attribute of catergory with a type of enum [:general, :individual, :relational, :community]

@nathanstruhs Yep, good choice.

@ybakos do we want a relationship between the user and the measure? Is this a question for Meah/Katie/Brianne?

@nathanstruhs I don't believe so. What did you have in mind regarding the meaning of the user-measure relationship?

@ybakos just the ability to organize measures by the user that uploads them. It seems like the main way to look up measures is by category or tag though.

@nathanstruhs Let's not create that association right now.


wasm compilation cache

closes #157 and closes #677, depends on #683 (just for sysinfo to determine available memory) - commits included here for now

pls restart ci

pls restart ci

pls update wasm

pls restart ci

pls restart ci

pls update wasm

pls restart ci

pls restart ci

pls restart ci

pls restart ci

pls restart ci

pls restart ci

pls restart ci

merged via #721


Linter seems to not pick up .zip release

Hello, I tried to use your linter for my project https://github.com/eliasblume/powertoys-run-jetbrains-projects here.
I think the release is in OK format but somehow your linter doesn't pick it up, any ideas ?

when i run  ptrun-lint https://github.com/eliasblume/powertoys-run-jetbrains-projects i get
PTRUN1201: Release should be valid
 - Asset ".zip" missing

If you want to fix the regex and create a PR, you are welcome.

I changed the names, though the error remained - so idk if its a caching issue or smth

could i be that i upload the ZIPs after initial release ?

It seems like your packages has the content type binary/octet-stream:

https://api.github.com/repos/eliasblume/powertoys-run-jetbrains-projects/releases/latest

The linter are looking for something with zip, for example application/zip.
I wonder how the content_type is decided.

When I download the archive, it works fine - I suspect the action is a bit to blame.
Once I download and re-upload the ZIPs, it seems to work fine so probably I need to look into my action

(this issue truly is my messed-up plugin.json)

The hash errors are a bit of nit picking.
I put the SHA256 hashes in the release notes:

https://github.com/hlaueriksson/GEmojiSharp/releases/tag/v4.0.1

They are generated with a script:

https://github.com/hlaueriksson/GEmojiSharp/blob/master/src/GEmojiSharp.PowerToysRun/release.ps1

@hlaueriksson i finally had the time to fix it - works great now, thx for the help :)

For the next release I have a few things on my TODO list. For example:

Also look for packages with extension .zip
Lax the regex to match v prefix of version in the filename


Updated ZPOPMIN command tests to check outputs with ZCOUNT command

Changes:

Updated Integration tests of ZPOPMIN command to check outputs with ZCOUNT command

@JyotinderSingh @lucifercr07 @apoorvyadav1111 Please review this PR. Thanks and Happy Diwali ✌


python310Packages.mailchecker: 4.1.18 -> 4.1.19

Description of changes
https://github.com/FGRibreau/mailchecker/blob/master/CHANGELOG.md#v4119-20220726-0953-0000

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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/)
22.11 Release Notes (or backporting 22.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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 183428 run on x86_64-linux 1

2 packages marked as broken and skipped:

dvc
dvc-with-remotes

4 packages built:

python310Packages.mailchecker
python310Packages.python-benedict
python39Packages.mailchecker
python39Packages.python-benedict


Switch to default no prefix?

Maybe set prefix to empty string by default?
Not sure, but I think that would still be valid and sensible, as many modules use submodules that look like a path (eg: without leading dots/slash).
I originally had '__' to make the sub modules look 'private' but maybe that's not really necessary.
So this:
declare module 'foo/bar' {}

Instead of:
declare module '__foo/bar' {}

@poelstra What do you think?

What about this?
I use prefix = "" always ...
If nobody says anything I proceed to change it.


Compatible with CIM version 4.13.0?

Testing (single Splunk 7.20 Docker instance) with CIM version <IP_ADDRESS> and Aruba Actions do not seem to appear.

Which data model are you testing against?

I've found missing field extractions for the action and user on the authmgr. Already merged the changes in the repo.

Data Model: Authentication
Splunk Version: 7.3.2
Oct  3 23:59:56 2019 wc2 authmgr[4196]: <522008> <4196> <NOTI> <wc2 <IP_ADDRESS>>  User Authentication Successful: username=USER1 MAC=d0:c2:f3:dc:43:91 IP=<IP_ADDRESS> role=authenticated VLAN=201 AP=AP5 SSID=guestnet AAA profile=Auth_AaaProfile auth method=802.1x auth server=acs1.test.com
Thanks.

I've corrected that. Thank you for bringing it to my attention. I'll be releasing the new version today on Splunkbase.

Its already available in Splunkbase but you'll need to select the new version v0.1.1. The app inspect report is not out for this new version yet so I'll keep the v0.1.0 as default download for now.

I have re-tested successfully. Thank you.


Removed uploading of minidumps.

This changeset only removes the minidump upload functionality. We still need to handle the minidump file by preserving it on the host folder, but that's for another PR.


cmd/go: TestBinaryOnlyPackages broken

Test flake in https://storage.googleapis.com/go-build-log/ab26aac8/linux-amd64_5812f616.log
--- FAIL: TestBinaryOnlyPackages (0.02s)
    go_test.go:4232: running testgo [list -f {{.Stale}}:{{.StaleReason}} p1]
    go_test.go:4232: standard output:
    go_test.go:4232: true:missing or invalid binary-only package

    go_test.go:4232: standard error:
    go_test.go:4232: go build p1: missing or invalid binary-only package

    go_test.go:4232: go [list -f {{.Stale}}:{{.StaleReason}} p1] failed unexpectedly: exit status 1
FAIL
FAIL	cmd/go	106.462s

Failed on one trybot but passed on all the rest, and passed locally.
I didn't investigate.

git bisect confirms that it broke at https://golang.org/cl/108156.


feat(portal): Add Policy conditions

Closes https://github.com/firezone/firezone/issues/4743
Closes #4742
Closes #4741
Closes #4740

I'll do a more thorough review later, but before that, just curious if there was thought given to the constraint naming vs condition? #4743 uses the latter. I don't feel strongly, but was leaning towards condition, i.e. "conditional access policies".
Curious what @firezone/engineering thinks too

Conditional access policies sounds good to me!
I have a question regarding time-based access policiies: How much use is there in enforcing this based on UTC? Wouldn't it make more sense to enforce this based on a user's timezone? (Configured in the portal of course, not provided by the client) Not everybody's office hours are the same and as soon as you have people from different timezones in the same group, the time of day when they can access a policy is different.
Being able to just use UTC for is likely still useful but ultimately, I'd guess that we need to handle timezones here.


How to install Camunda 7 enterprise edition using helm?

Is there any guidance on how to install Camunda 7 enterprise edition using this helm?

Hello I never try but I think you can just change the image by the ee https://docs.camunda.org/manual/7.19/installation/docker/#enterprise-edition it should work


#57730 - Support custom shapes for ListTiles

Description
This PR adds support for applying custom ShapeBorders to the InkWell of ListTiles, so they can match the shapes of their parents, such as when used within Cards.
Related Issues
Fixes #57730
Tests
I added the following tests:

ListTileTheme

A selected ListTile's InkWell gets the ListTileTheme's shape

Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I signed the CLA.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Did any tests fail when you ran them? Please read Handling breaking changes.

[x] No, no existing tests failed, so this is not a breaking change.
[ ] Yes, this is a breaking change. If not, delete the remainder of this section.

[ ] I wrote a design doc: https://flutter.dev/go/template Replace this with a link to your design doc's short link
[ ] I got input from the developer relations team, specifically from: Replace with the names of who gave advice
[ ] I wrote a migration guide: Replace with a link to your migration guide

ListTileTheme update and wrap will also need to be updated. The analyzer is failing because some lines have trailing whitespace.


usage on K8S - not so trivial and mounting does not seem to work.

hi
I am trying to use this container in my K8S cluster, and I ended up by having to run the container like this:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ansible
spec:
  selector:
    matchLabels:
      app: ansible
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: ansible
      annotations:
        prometheus.io/scrape: "true"
    spec:
      containers:
      - name: ansible
        image: geerlingguy/docker-ubuntu1804-ansible:latest
        imagePullPolicy: IfNotPresent
        stdin: true
        tty: true
        env:
          - name: container
            value: docker
        resources:
          limits:
            cpu: 200m
            memory: 64Mi
          requests:
            cpu: 200m
            memory: 64Mi
        volumeMounts:
          - name: cgroup
            mountPath: /sys/fs/cgroup:ro
          - name: varrun
            mountPath: /run
          - name: varlock
            mountPath: /run/lock
          - name: fuse
            mountPath: /sys/fs/fuse/connections
          - name:  hugepages
            mountPath:  /dev/hugepages
          - name: playbooks
            mountPath: /etc/ansible:ro
        securityContext:
          allowPrivilegeEscalation: true
          capabilities:
            add: ["SYS_ADMIN"]
      restartPolicy: Always
      volumes:
        - name: cgroup
          hostPath:
            path: /sys/fs/cgroup
            type: DirectoryOrCreate
        - name: varrun
          emptyDir:
            medium: Memory
        - name: varlock
          emptyDir:
            medium: Memory
        - name: fuse
          emptyDir:
            medium: Memory
        - name: hugepages
          emptyDir:
            medium: Memory
        - name: playbooks
          hostPath:
            path:  "/mnt/c/Users/miamore/Documents/Projects/kubeverse/orchestratedRPiCluster/rpicluster/ansible"
            type: Directory

But the path where my playbooks are is never mounted (running K8S nodes on VirtualBox on a windows10 laptop, launching the yaml from the Powershell console)
No error, but nothing appears.
2020-07-13T15:13:39.911256137Z systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
2020-07-13T15:13:39.917895692Z Detected virtualization docker.
2020-07-13T15:13:39.917931888Z Detected architecture x86-64.
2020-07-13T15:13:39.917936462Z
2020-07-13T15:13:39.917940532Z Welcome to Ubuntu 18.04.3 LTS!
2020-07-13T15:13:39.917944994Z
2020-07-13T15:13:39.917948780Z Set hostname to <ansible-565979d8bb-znfxz>.
2020-07-13T15:13:40.203254035Z File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
2020-07-13T15:13:40.203271936Z Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
2020-07-13T15:13:40.296377304Z [  OK  ] Started Forward Password Requests to Wall Directory Watch.
2020-07-13T15:13:40.298128624Z [  OK  ] Created slice System Slice.
2020-07-13T15:13:40.298383970Z [  OK  ] Started Dispatch Password Requests to Console Directory Watch.
2020-07-13T15:13:40.298396018Z [  OK  ] Reached target Slices.
2020-07-13T15:13:40.298398866Z [  OK  ] Reached target Swap.
2020-07-13T15:13:40.298774115Z [  OK  ] Listening on Journal Socket.
2020-07-13T15:13:40.299259930Z [  OK  ] Listening on Journal Socket (/dev/log).
2020-07-13T15:13:40.299267257Z [  OK  ] Listening on /dev/initctl Compatibility Named Pipe.
2020-07-13T15:13:40.299269793Z [  OK  ] Reached target Local Encrypted Volumes.
2020-07-13T15:13:40.299272251Z [  OK  ] Reached target Remote File Systems.
2020-07-13T15:13:40.299346468Z [  OK  ] Listening on Syslog Socket.
2020-07-13T15:13:40.299631606Z [  OK  ] Reached target Local File Systems (Pre).
2020-07-13T15:13:40.299637542Z [  OK  ] Reached target Local File Systems.
2020-07-13T15:13:40.299884823Z [  OK  ] Reached target Sockets.
2020-07-13T15:13:40.301765509Z          Starting Journal Service...
2020-07-13T15:13:40.416381716Z [  OK  ] Started Journal Service.
2020-07-13T15:13:40.421765837Z          Starting Flush Journal to Persistent Storage...
2020-07-13T15:13:40.520704478Z [  OK  ] Started Flush Journal to Persistent Storage.
2020-07-13T15:13:40.521279757Z          Starting Create Volatile Files and Directories...
2020-07-13T15:13:40.532269755Z [  OK  ] Started Create Volatile Files and Directories.
2020-07-13T15:13:40.532307756Z          Starting Network Name Resolution...
2020-07-13T15:13:40.532328631Z [  OK  ] Reached target System Time Synchronized.
2020-07-13T15:13:40.532332980Z          Starting Update UTMP about System Boot/Shutdown...
2020-07-13T15:13:40.694509588Z [  OK  ] Started Update UTMP about System Boot/Shutdown.
2020-07-13T15:13:40.694919284Z [  OK  ] Reached target System Initialization.
2020-07-13T15:13:40.696462271Z [  OK  ] Started systemd-cron daily timer.
2020-07-13T15:13:40.697095043Z [  OK  ] Started Message of the Day.
2020-07-13T15:13:40.698591199Z [  OK  ] Started systemd-cron monthly timer.
2020-07-13T15:13:40.698848002Z [  OK  ] Started Daily Cleanup of Temporary Directories.
2020-07-13T15:13:40.699399559Z [  OK  ] Started systemd-cron weekly timer.
2020-07-13T15:13:40.699670842Z [  OK  ] Started Daily apt download activities.
2020-07-13T15:13:40.699928514Z [  OK  ] Started systemd-cron path monitor.
2020-07-13T15:13:40.700299409Z [  OK  ] Reached target Paths.
2020-07-13T15:13:40.701609709Z [  OK  ] Reached target Basic System.
2020-07-13T15:13:40.703434725Z          Starting System Logging Service...
2020-07-13T15:13:40.704926709Z          Starting Permit User Sessions...
2020-07-13T15:13:40.705381797Z [  OK  ] Started Daily apt upgrade and clean activities.
2020-07-13T15:13:40.705403005Z [  OK  ] Started systemd-cron hourly timer.
2020-07-13T15:13:40.705406763Z [  OK  ] Reached target Timers.
2020-07-13T15:13:40.705409828Z [  OK  ] Reached target systemd-cron.
2020-07-13T15:13:40.705564651Z [  OK  ] Started Network Name Resolution.
2020-07-13T15:13:40.705872469Z [  OK  ] Reached target Host and Network Name Lookups.
2020-07-13T15:13:40.711094021Z [  OK  ] Started Permit User Sessions.
2020-07-13T15:13:40.800680287Z [  OK  ] Started System Logging Service.
2020-07-13T15:13:40.800797114Z [  OK  ] Reached target Multi-User System.
2020-07-13T15:13:40.801452268Z [  OK  ] Reached target Graphical Interface.
2020-07-13T15:13:40.803345654Z          Starting Update UTMP about System Runlevel Changes...
2020-07-13T15:13:40.809684791Z [  OK  ] Started Update UTMP about System Runlevel Changes.

Any ideas?
Thanks!

That's something you'll have to try to get working on your own—unfortunately, use in K8s is not a use case that I think I'd want to support for these docker containers. They should run just like any other container, but getting them to work with the right privileges and mount options for a K8s deployment could be more challenging, since they expect to be able to run systemd and that's a little bit counter to the way Kubernetes expects containers to run.

Thanks. The issue was because of virtualbox.
Le jeu. 23 juil. 2020 à 18:54, Jeff Geerling<EMAIL_ADDRESS>a
écrit :

Closed #21
https://github.com/geerlingguy/docker-ubuntu1804-ansible/issues/21.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/geerlingguy/docker-ubuntu1804-ansible/issues/21#event-3580875182,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABM6DUY7FTSA54MMTOMEUNDR5BTKRANCNFSM4OYS4GGA
.