escape_to_c: Escape trigraphs

Produce more standard-compliant code instead of relying on the default behaviour of gcc.
At the same time, get rid of the following warning while compiling nitc:
nitc__xcode_templates.sep.1.c:2521:65: warning: trigraph ??< ignored, use -trigraphs to enable [-Wtrigraphs]
 var15 = "</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>";
 ^

See also: https://github.com/nitlang/nit/pull/1949/commits/000ac8de3c64790b0fbb0e868e406a6a280f3fa9
Signed-off-by: Jean-Christophe Beaupré<EMAIL_ADDRESS>

:recycle: Reroll

I just found a potential side effect: it breaks escape_to_nit!

I just realized that "\?" == "?" in Nit. So, I need to do some work on this PR.

:recycle: Reroll, now with FlatText also fixed.
PS: Is there any objection to have question marks escaped in escape_to_nit and escape_to_dot?

maybe extract from the escape_to_c a common base that could be used by the other escape_* ?

And lose the optimizations done by @R4PaSs? Not sure it is a good idea considering that many languages do not support the octal notation anyway.

:recycle: Reroll

ping @R4PaSs

I'm still not a big fan of the test suite, but the API and implementation look OK to me, :shipit:

Yeah, I had to workaround #2165.

+1
#2165 is still an open issue :(

Please note that the description of this PR is misleading, the warning on nitc has already been fixed and it remains only in the bootstrap. This PR won't make it more disappear.
Still, I'm OK with the changes.

@xymus I will change the description to make it more accurate.
I’m thinking about that: should I remove the -Wno-trigraph flag since it is no longer needed?

@jcbrinfo It's not worth it, fixing the description was enough.

:recycle: reword


scRNA-seq SNV calling

From discussion with Kat:

Monovar + GATK: SNV identification from single-cell RNA sequencing data
Red panda: Red panda: a novel method for detecting variants in single-cell RNA sequencing

Isn't Monovar a separate pipeline from GATK? I think we should prioritise GATK and see what the differences are in using RNA-seq data versus a regular DNA pipeline, followed by Monovar as a second choice.

Yep, that paper compares the two pipelines, just keeping notes down ;-)
And yep, agree with prioritising GATK.

Nice, I think we just need to figure out how exactly to call variants with RNA-seq (with for example, a GATK pipeline), so those papers will be a good resource. I can dig into that

Closing as this will be handled outside CPG.


generate MVTs with specific zoom levels

related to #250
per chat with @TylerMatteo, zoom levels from 15-30 would be nice for prototyping
but the max zoom we can get using gdal.VectorTranslate() seems to be 22
action runs

success using zooms 15-20?
successfully raising gdal error when exceeding max zoom
failed using zooms 15-22

the last run timed out after 6 hours and ~ uploaded 197,413 files at ~630MB in de-sandbox
will limit the number of fields and try using upload_folder() if it isn't already being used


Primes in valise representation of Adinkra diagrams

   111
  /   \
101   011
      /
   010

All numbers in the valise representations of Adinkra diagrams have same number of ones at the same level (paper).
Notice that in the diagram above, primes are connected.

11111 (31)
10111 (23 = 31 - 8), 11101 (29 = 31 - 2)
00111 (7 = 23 - 16), 10011 (19 = 23 - 4), 01101 (13 = 29 - 16)
00011 (3 = 7 - 4 = 19 - 16), 00101 (5 = 7 - 2 = 13 - 8)
00010 (3 - 1 = 2)

Primbix might be a better concept with a similar purpose.


Move input events to interfaces

Refactor Drawable input and interactions as proposed in #952

I think interfaces should probably be grouped for various method groups
IHandleDrag -> DragStart Drag DragEnd
IHandleHover -> Hover HoverLost
IHandleMouseButtons -> MouseDown MouseUp Click
IHandleKeys -> KeyDown KeyUp
Also I think you should write these:
public bool TriggerOnKeyUp(InputState screenSpaceState, KeyUpEventArgs args)
{
    var handler = this as IHandleOnKeyUp;
    return handler != null && handler.OnKeyUp(createCloneInParentSpace(screenSpaceState), args);
}

as
public bool TriggerOnKeyUp(InputState screenSpaceState, KeyUpEventArgs args) =>
    (this as IHandleOnKeyUp)?.OnKeyUp(createCloneInParentSpace(screenSpaceState), args) ?? false;

Merging interfaces will force me to add method stubs like public virtual bool OnHover(InputState state) => false; or public virtual void OnHoverLost(InputState state) { }.
However, since it looks like you do not mind, I will do it.

Where will you be adding those stubs? Generally they should only be required where a drawable is already interested in them, no?

I am in support of merging the interfaces.
I wouldn't call these stubs at all. Input events should be additive + subtractive - in most cases there's no reason to change a state without also providing a way to revert those changes (e.g. Hover/HoverLost, KeyDown/KeyUp, MouseDown/MouseUp).
Furthermore, there's no reason for OnDragStart to be split from OnDrag, since OnDrag can't be triggered if OnDragStart isn't.

@peppy @smoogipoo I would like you to check merged interfaces. If they are ok, I will update corresponding game code next evening.

Don't know why did this run failed.

How would you choose the right value for HandleInput with reflection?
On Thu, 16 Nov 2017 at 01:00, default0<EMAIL_ADDRESS>wrote:

@default0 commented on this pull request.
I'm not sure that what is suggested in #952
https://github.com/ppy/osu-framework/issues/952 is a good way to go.
The goals of the changes are to try and decouple Input and Drawables,
however given the nature of this framework, virtually all input handling
ever will be based around Drawables, so having the ``OnSomeEvent??-Methods
be part of interfaces and then explicitly implement them really does not
seem to add any value to users except requiring two places to change code
(class decl to add the interface and the spot where the methods are
declared) and potentially needing to implement event handlers they don't
care about (there's lots of situations where you would only ever care about
OnKeyDown or OnMouseDown fe, but not the other respective events).
The goal of trying to decrease coupling between Drawables and Input is
generally a good one, but the way it is done here comes at a clear cost of
usability with no obvious benefits (since most uses of input will be in
tandem with Drawable).
Further, the goal of trying to automatically choose the right value for
HandleInput, which in theory can be done with this, can also be achieved
without this (Reflection + Caching the right value per type + instance).
For what it's worth, having the interfaces at all is not what I find
problematic, what seems problematic to me is not having the basic event
methods as virtual methods in Drawable, since not having them there makes
them harder to discover and more ceremonious/verbose to use.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ppy/osu-framework/pull/1135#pullrequestreview-76833918,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABRKrZ_Og4kF-HdjIlmlUJUNVwDXLta9ks5s2wqLgaJpZM4QScwd
.

--
Regards,
Dan Balasescu

You can check the DeclaringType property of MethodInfo objects to see if a method is overridden.
So, basically need to do this for all the relevant input handling methods:
bool isOverridden = GetType().GetMethod(nameof(OnMouseDown)).DeclaringType != typeof(Drawable);

And if any of the methods is overridden, just set HandleInput to true.
As stated above, you very probably would want to cache this per type and per instance as needless to say, this check is kind of expensive (as is basically everything Reflection-related).

I would prefer public bool HandleInput => this is IHandleMouseButtons || this is IHandleClicks || and so on;

@UselessToucan any sane programmer would prefer that if the neatness of that piece of code was the focus. The whole point is, however, that we want to make using the API as simple as possible, even if it comes at the cost of a bit of extra complexity in the framework.

@Tom94 Caching isOverridden will add a complexity too.

Not for the person using the framework.

I forgot to mention that having a cheap way to determine which events can be handled by the object(for example, can it handle keyboard presses or not) may help us to improve InputManager.
I did not investigate it in details, but at least building inputQueue and positionalInputQueue looks questionable to me. I mean, inputQueue is designed to handle only keyboard events, but while building it we add everything that match CanReceiveInput == true condidion which does not mean that the object has keyboard related event handlers.

This can also be done without the interfaces, so it isn't an advantage of this approach over the current state of affairs. And this also does not refute the much more important point, ie that this change is detrimental to usability in the front and center most common use-case of input, ie in conjuction with drawables.

@default0

This can also be done without the interfaces

I would like you to explain this. How would you do it without interfaces?

Reflect on which of the input methods are actually overridden (ie used, I explained how to do that in principle a few comments above) and use that information to figure out if mouse input or keyboard input or both or none are relevant to the drawable in question.

After the previous discussion I think it's time to finally come to a conclusion on this. @peppy and I are both 50/50 on this - I like the cleanness of it but I also see the argument for the usability standpoint for someone new to the framework.
This is some solid code, and we may revisit/use this in the future. For now, however, I believe it's in the majority's interests to move forward with the way things are currently being done.
Thanks for the contribution @UselessToucan !


resolve relations refactor

Relates to #25

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


RetroPad icon

We have several gamepad icons that could be used in gui and for documentation but one we sorely lack is an official retropad icon.
The RetroPad is... think of it like a SNES pad + dual analogs that's the best description.

So would something like this work?  What you describe ends up looking like a Wii Classic Controller  the 8Bitdo NES30 Pro.
I started with the Libretro D-Pad and worked outward from there.

I think that looks good! I like that stylized shape over something curvy (think: xbox or wii u pro pads). Can we get an invader above the start/select buttons?

I can add it in, but I'm hesitant to do so.  @Kivutar tends to favor icons without branding unless that branding "is" the icon (like the Cave Story or Handheld Electronic Game icons).  After shelving the work on RetroActive marked, I really do see his point.  The logos get lost when the icons get scaled down in the XMB.
Also, when we have a RetroArch logo, we also do a version with the Lakka logo that will substitute out when using the OS instead of the app.  The best way to avoid that is to go unbranded in the first place.
Lastly, I'd like to point out that unless the branding really helps to identify the object, it's generally best to leave it off.  In this example, it's clear what the left and right icons are.  However, not everyone may be familiar with the odd shape of the Micro SD so having the logo on there helps identify what it is.  With this being a generic controller with no true real-life equivalent, is it really helpful to have a logo as part of the design?

Those are very valid points, and yes, shrinking it down could be an issue with readability.
I do think the branding is helpful in the design in this case precisely because it doesn't actually exist. With no branding, it may not be clear that it's the "retropad" vs any generic gamepad. The libretro dpad is certainly a step in that same direction, though it is even more vulnerable to loss by downscaling.
I'm not married to the idea, though. You guys have done an awesome job with all of the icons so far and I trust your ability to make good decisions.

In reading and re-reading @fr500's original request, I thought a generic controller was exactly what was requested.  Since it's meant to be for "gui and for documentation," making it generic helps the end user adapt it to their respective controller of choice.
Honestly, if the Libretro logo wasn't a D-pad, I wouldn't even bother trying to add it to the icon.  It's just meant to be an easter egg of sorts.  I think that so long as the D-pad is fit to the grid like so, we should be fine with scalability.
Fun Fact:  The Libretro D-pad has offset rounded corners because I wanted it to double as a shuriken or a yashichi.  I came up with that idea for a logo redesign that never materialized. I ended up using it anyway for RetroActive and it spilled into the other themes as well.

I really like that! I just don't like the "shuriken" dpad thing heh.
So you made those logos, I think they were good but I wasn't keen on that same thing.
I think working on an image would be important and I think you make fantastic work so if you're ever up to improving on your original ideas it would be very much appreciated

OK, let's give it a try with a traditional D-Pad.  That makes it look even more generic which probably better fulfills the objective anyway.
I made the original Libretro logo and wanted to see it evolve into a brand family for Lakka and RetroArch, which is why I pursued the failed redesign.  I'm open to revisiting it and improving the ideas on an ongoing basis if the team wants me to do so.

[quote="baxysquare"]I'm open to revisiting it and improving the ideas on an ongoing basis if the team wants me to do so.[/quote]
I think this would be really helpful. Compared with a lot of other projects, our brand identity is pretty basic, particularly when it comes to leveraging libretro but not RetroArch. We had talked a long time ago about needing some way for projects/frontends to communicate their libretro affiliation but never came up with anything good.

Alright, I'm willing to shift gears to logo design.  I went and dug up the original design proposal and we can work outward from that or something else if you prefer.  If you'd like to do this on GitHub, perhaps it deserves opening a new issue, while we focus on completing the RetroPad issue on this one.  If you'd prefer to handle it outside of GitHub, that's fine too.  Just let me know.
In terms of submitting the RetroPad icons, I'd like to get an answer to #111 so I can make these icons match a new naming syntax if one ends up being chosen.

I like it! I think that one conveys the message correctly.
In my mind the retropad looks like the nes advantage... not sure why, if you are open to experiments that could be the pad of choice.

Here's the experiment.  The NES Advantage is a challenge because the diagonals make staying on the 4x4 grid very difficult and it's such an "iconic" joystick.  To make it look a bit less like an Advantage, I dumped the turbos and inset button area.  I added an extra two action buttons and removed some of the character lines that made it distinct.  Perhaps the 4 option buttons down the side need to be removed because they are a distinguishing characteristic but they're in there for now.

LOL I was too late to mend my comment... look at it again... I meant NES Max.
That last one is great btw!

OK here's two color variations for Systematic.  The button colors come from the Libretro, RetroArch and Lakka icons.  Which style do you like better?

I like that shape a lot! I think the colored buttons are nice.

Just an opinion: Maybe the shoulder buttons could be split so it becomes visible the fact that there's an L1/R1 pair and an L2/R2 pair?
I think one of the main uses of visualizing this virtual controller would be to be able to see what controls do you have to map where, to a normal controller, so this way it becomes obvious where the 2 pairs of L/R have to be placed (I'm still unsure about where L3/R3 would be supposed to be in the retropad, but I always set them to the click button of the joysticks of my my xinput controller)

@Ferk Is this what you have in mind?  In terms of visualizing L3/R3, most button maps I've seen usually point three controls to the analog stick from a single line... the X axis, Y axis and the click button.  I think that's the best way to illustrate it.

As you can see above, I added the pad icon to Monochrome, NeoActive, RetroActive and Systematic.  You can find it as "Libretro - Pad" in the PNG or SRC folders.

I don't like this at all

This one is pretty much perfect already

Surely we could 3d print it as a shell, would be a hit 3rd party controller!

I agree with radius, this one is perfect.

So can we accept this as RetroPad's official "artwork" so it can be used in the GUI in the future, and in mockups, documents, etc?
@twinaphex

@fr500 Fine with me I guess if @kivutar and others agree with it, who am I to object?

@fr500 The icon is included in the Monochrome, NeoActive, RetroActive and Systematic sets as "Libretro - Pad".  If you need it somewhere else or in another format, let me know and I will get it added accordingly.

Thanks I appreciate it

I believe this issue has been resolved, so I'm going to close it for now.  If you need anything else, let me know!


add .idea and .vscode to .gitignore file

Proposal
I would like to add . .idea and .vscode to .gitignore files as these are system specific and may cause errors while cloning

Thanks for showing interest in this project
Go ahead


Access Modifiers (C# Programming Guide) – strange supplement formulation

Private nested types aren't accessible from outside the containing type.

All private members are not accessible outside of containing type. Why to repeat this once again for types?

Delegates behave like classes and structs.

Misleading. Delegate can take all modifiers when declared as type member, default is private; same as other members. Only when declared directly in namespace public or internal is valid while default is same as for class or struct.

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

ID: 8121f526-cfe4-091d-d031-2cdc274cd8ee
Version Independent ID: 76a389f6-b568-3568-6483-6df440f96f0c
Content: Access Modifiers - C# Programming Guide
Content Source: docs/csharp/programming-guide/classes-and-structs/access-modifiers.md
Product: dotnet-csharp
Technology: csharp-fundamentals
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

related: #27196
This should be updated using the same language as the standard.


:bug: fix(bal-ng-error): If control is  hidden ny ngIf and evaluated during that time to invalid, binded bal-ng-error doesn't show up

Current Behavior
Bare with me:
If we have control which is hidden by the ngIf and who's validity is evaluated at that time, after the ngIf becomes true and contorl shows up in DOM, bal-ng-error is missing. Suprisinglly, the form itself is red suggesting that's invalid.
Only after cliked into bal-field that contains the control, error hint shows up.
When the control is rendered and .markAsTouched() programaticaly.

When clicked on control label (email)

Expected Behavior
Error message is show right away
Steps to Reproduce
If snapshot doesn't die you'll find an example here
https://codesandbox.io/p/sandbox/angular-forked-c7qflv
Version
15.2.0
Browsers
Chrome
Device
No response
Code Reproduction URL
No response
Additional Information
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

/cib


increased dns failures in unbound 1.22

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

[x] I have read the contributing guide lines at https://github.com/opnsense/core/blob/master/CONTRIBUTING.md
[x] I am convinced that my issue is new after having checked both open and closed issues at https://github.com/opnsense/core/issues?q=is%3Aissue

Describe the bug
I am having issues with dns, specifically with unbound 1.22 sometimes not giving answers where upstream dns answeres normally. It is being resolved by downgrading unbound to 1.21.1 from a previous opnsense release.
I've searched for problems upstream: there are some reports https://lists.nlnetlabs.nl/pipermail/unbound-users/2024-November/008427.html and some fixes have been incorporated into unbound master, will go into 1.23
If you want to look into backporting:
https://github.com/NLnetLabs/unbound/commit/fd1a1d5fa0f012e8eeaa0ecc89da52d9ca25c216
https://github.com/NLnetLabs/unbound/commit/733d5f7161c5675e66e39974b912a08eeb48140c
To Reproduce
So I can not reproduce this at will.
Expected behavior
DNS works
Relevant log files
It does not show up in log files in opnsense default log levels.
Additional context
I've reverted to unbound 1.21.1 and dns is running normal again
Environment
OPNsense 24.7.9_1-amd64
Intel(R) N200

I would like to trust the good people of NLnetLabs with their release policy. They do have a good track record of releasing new versions as necessary.
Cheers,
Franco

okay, yeah no need to play with backporting, rolling back is easy enough -- for anyone else experiencing these issues: you can run opnsense-revert -r 24.7.6 unbound until a 1.23 is released and used in opnsense


Update license attribute

specifying the type and URL is deprecated:
https://docs.npmjs.com/files/package.json#license
http://npm1k.org/

Coverage remained the same at 97.5% when pulling 41f1a7fa73ac2337865ebd81c5e12f93b54517ee on pdehaan:patch-1 into 88534bbd34c5befbd1689fc71e2373c9145a9807 on Matt-Esch:master.


PID: Use last actuators to limit integrator

cleanup for harald's review of https://github.com/commaai/openpilot/pull/23244
bf -> backfeed
TODO: long feedback
save control_last

Just create a new PR into master.

moved it to master

So like we mentioned, a couple unit tests testing the override and the noise when clipping integrator would be good before merging.
I've been driving on it and didn't notice anything strange.

Converting to draft until tests are written.

I've been throwing a couple things at a noise unit test. mostly just checking a step response with noise added to check that the control stays moving towards target.
does anyone have an idea what we want to catch there?
once the error is low, the noise dominates so any directional checks trigger. Not sure what meaningful thresholds to set.
override shouldn't be too hard,
I'm thinking some short pulses of override and longer duration override to just check states/response when released.

Yep looks good!
Yeah just a test that there's no windup against the override should be enough. And that should be enough tests.

Think I got all the tests.
goal of the noise test is to detect excess noise entering the I-term and reversing it's action significantly in relation to the ramp up limits.
i_term is allowed to reverse as long as the control is not moving away from the target.
The control is allowed to move away from target due to the p term.
assertion is testing a mix of these conditions making it a bit arbitrary but should catch any destabilized I-term as is.
Need to sanity check the limits of the tests with some graphs and update the limits on the checks to be as effective/meaningful as possible.

Got good coverage of different behavior. Going to go through and re-define the tests later and remove or gate off all the extras.

Alright, Unit tests are done.
Last commit is a plotter/debugger so the tests can be plotted.
Thinking of splitting off the plots to a PID tool / demo. Interactive readme of sorts for PID tuning.

Rebased for removal of saturation check from PID class.

Cool we'll try get this merged for 0.8.14

Last commit with the plot functions can be dropped to keep it cleaner if needed.
Moved everything plot-related to the last commit for that reason. It's just easier to see what the test is doing when running manually.
Does "coverage run --append -m unittest discover" find the new unit test? or do I need to list the file somewhere like .github/workflows/selfdrive_tests.yaml

adjusted the noise test to use +/- 10% noise.
Previously was adjusting the noise based on the Kp values being checked to ensure that the rate limits were hit aggressively.
This was producing somewhat meaningless results.
now it checks that the average error is bounded to less than 1/10 of the magnitude of the noise. This just checks that the output is stable.

@HaraldSchafer Any updates on this?

I've decided not to merge this. I'm still not really sure what behavior we want. This backfeed approach doesn't seem ideal, I've decided to just freeze the integrator when it's clipping,


Preview servers tracking issue

[ ] https://github.com/decentraland/adr/pull/92
[ ] Deploy a server that can hold scenes
[ ] Make sure a proper comms schema works for that server (add to ADR)
[ ] Mini map can be hidden (add to ADR)
[ ] Skybox is configurable (add to ADR)
[ ] Scene loading can be shut down (add to ADR)
[ ] When exiting genesis city is loaded & default minimap & sky settings are restored (add to ADR)
[ ] A deployment can be loaded at the beginning (Onboarding tutuorial)
[ ] Metrics&Track events are sent using the identifier for the deployed scene

closing in favor of unified tracking issue


Apidocumentation

What does this PR do
Description of task to be completed
How should this manually be tested
What are the relevant Trello board stories
Screenshots (If appropriate)
Questions (If any):

Nice work on the documentation Antonio. Can we have the request and response in back ticks( ). give it a code like feel

Done Kells


OS License

Hi, please can you clarify what license this project is published under?

Good question. I will add a Apache v2.0 license.


Support for Visual Studio Code

Wondering if you've considered adding support for Visual Studio Code.  I'll admit I have no idea how big of differences there are writing extensions for the two.  I'd love to be able to use this again, after having switched over to Code a long time ago!

Thought about it but the issue for me is I don't use Visual Studio Code. That's mostly because I'm a .NET developer and find the older Visual Studio IDE to work better in that environment.


No support for newer Ghidra versions

All binexport versions I tried do not work on newer Ghidra versions. I do not want to use Ghidra 9.2.3, due to the log4j vulnerability. Are there any plans to support newer versions of Ghidra? Or is there maybe some workaround I could do?
Thanks in advance.

Did you look at the "pre-releases" as well? I only update "releases" proper, if a new version of BinDiff is out.
The latest one I uploaded is
https://github.com/google/binexport/releases/tag/v12-20221020-binaryninja, which was built for 10.1.5.
Building from source should also work with the latest Ghidra releases (well, I didn't test with 10.2 yet).

That version did not work with 10.2 and 10.1.1. It does work with 10.1.5 though. Thank you for the hint, I only tested the newest build of ghidra and the version with log4j 2.17.0 (10.1.1) before.

I'll upload new binaries for 10.2 as soon as I have time to test on that version.
Nevertheless, do try to build from source and let me know how it goes :)

I tried to compile it, but it threw an exception:
`Build file '/home/[redacted]/Desktop/binexport-main/java/build.gradle' line: 104
A problem occurred evaluating root project 'BinExport'.
GHIDRA_INSTALL_DIR is not defined!`
Since I dont know much about java and gradle im guessing that it did not find my Ghidra installtion for some reason?
I must be doing something wrong, Im running arch linux, jdk 18 and gradle 7.5.1.

Yes, the env var needs to be set. That is a requirement from Ghidra's Gradle build system.Yes, the env var needs to be set. That is a requirement from Ghidra's Gradle build system.

Okay it compiled fine now, my ghidra installtion was split in two directories for some reason. I tested it aswell, and it seems to work without any issues. Thank you for the help ^^

Awesome! I'll close this one, then. I should be able to upload new binaries for general use either today or tomorrow.


Added coveralls support for online coverage

Use of Coveralls for track code coverage online, actually (for my fork) https://coveralls.io/github/ZuluPro/django-dbbackup.
I added badge too.

Would be so cool if it just works!! :)

Yay, works! Just enabled it :)
https://coveralls.io/github/django-dbbackup/django-dbbackup
Good stuff! Well okay 38% isn't much, but it's cool, before you came it was 0 :)


Enable stapled OCSP verification test, investigate Windows verifier OCSP staple handling

After https://github.com/rustls/rustls-platform-verifier/pull/50 lands we should be able to enable the stapled OCSP test in the real world verification test suite: https://github.com/rustls/rustls-platform-verifier/blob/65b2a97aff062585d91c97ae3b7b1d17fbcd7b62/rustls-platform-verifier/src/tests/verification_real_world/mod.rs#L221-L239
As described in this comment (which should also be fixed up) this was commented out when it wasn't possible to specify a time to use for verification to avoid flakes from the very short OCSP response validity period.
We know that Webpki doesn't support revocation checking via stapled OCSP (see https://github.com/rustls/webpki/issues/217) so we will need to cfg gate the expected result to only assert a revocation error result for non-Linux/WASM platforms - something like:
revoked_badssl_com_stapled => TestCase {
        reference_id: "revoked.badssl.com",
        chain: &[
            include_bytes!("revoked_badssl_com_1.crt"),
            include_bytes!("revoked_badssl_com_2.crt"),
        ],
        stapled_ocsp: Some(include_bytes!("revoked_badssl_com_1.ocsp")),
        // Note: the vendored revoked badssl cert and OCSP response expired ~Dec 9 2021,
        //    so we use a verification time fixed to Dec 4 02:09:01 2021 UTC
        verification_time: SystemTime::UNIX_EPOCH + Duration::from_secs(1_638_583_741),
        #[cfg(not(any(target_os = "linux", target_arch = "wasm32")))]
        expected_result: Err(TlsError::InvalidCertificate(CertificateError::Revoked)),
        #[cfg(any(target_os = "linux", target_arch = "wasm32"))]
        expected_result: Ok(()), // https://github.com/rustls/webpki/issues/217
        other_error: no_error!(),
    },

However, it appears the Windows verifier is returning Ok(()) where Err(TlsError::InvalidCertificate(CertificateError::Revoked)) is expected. Further investigation is required.

As a quick test I also tried going back to before https://github.com/rustls/rustls-platform-verifier/pull/17 landed and enabling the test with a fixed verification time and got the same result so whatever the root cause I don't think it's a regression from those changes.

I took a look through this one today and here's what I've found so far:

Apple uses our evaluation datetime when checking revocation through any method (CRL or OSCP). Running the above test passes on my M1 and a dive into their OSS Security code shows them passing the verifyDate into revocation handling. I can't quite nail down exactly where its used though.
Windows: I'm not sure if this is doable yet. The docs state that the pTime we pass in "...does not affect trust list, revocation, or root store checking." I haven't been able to find any flags to overwrite that either.
Android should support this, and assuming the expired root doesn't get in the way (see #59), you get the error you would expect: certificate was revoked: java.security.cert.CertPathValidatorException: timestamp check failed. I haven't run it through a debugger yet though because it does that regardless of it I give the OSCP checker the right timestamp or not.

Tl;dr the platforms are a mess again, what a surprise right?


(MAINT) Change default tool dir path to 'prm-tools'

This change was made to avoid a conflict in dev environments where
the tools directory already exists at root and you wish to run
./build.sh snapshot

This PR doesn't make much sense to me. There doesn't appear to be a "snapshot" target. The tools directory should always be created in place that we know and control either binpath or binpath2 The clone path for "package" does not specify a directory path, perhaps it should?

Sorry, meant snapshot:
./build.sh package
fatal: destination path 'tools' already exists and is not an empty directory.

That was the original impetus for putting up the PR. I updated the directory names under dist/ too, for consistency, even though they would not have been affected.

@sanfrancrisko does this change also need to be reflected in build.ps1?

It does indeed, apologies. I'll blame my sick, fatigued brain yesterday, for missing that.


Java 17 compatibility

Edit: For those troubleshooting Java issues see also this page
Java 17 is the latest Long-Term Service release. Distributions are available from Adoptium as of September 22, 2021.
It is the first LTS release to have jpackage, the low-latency garbage collectors ZGC and Shenandoah, and maybe if we're lucky, the new foreign memory access API. Just to name a few things of potential interest to game development in addition to the other language niceties.
I thought it'd be good to have a tracking issue as a place to attract notes about problems that come up when people try using java 14, java 15, java 16, or java 17.
What you were trying to do
play (or develop) Terasology on the latest release of the JDK version ▁▁
What actually happened
As soon as I ▁(verb)▁ the ▁(noun)▁, Gooey Jr turned in to an ▁(animal)▁ and said: ▁▁▁▁▁▁▁▁
How to reproduce

Step 1
Step 2
Step 3

Log details and game version
Computer details

Yeah!
We many discussed about java projects on discord:
Panama(foreign memory access api)
ZDC(for using we can not compile, but run)
Jpackage - it is required modular java.
Seems, we cannot use it. We will cannot share jdk with launcher

I'm not sure if I should create an issue or write a comment here. Let me know if you need more details.
What you were trying to do
I was trying to run Gradle Wrapper jar game with a complete blank installation (no modules).
What actually happened
It failed, throwing an error. This is related to the change in Java API Method FileSystems.newFileSystem between version 11 and 14.
How to reproduce

.\gradlew jar game
wait for compilation
error will throw up

Log details and game version
TeraEd VERSION: 3.3.0-SNAPSHOT

> Task :engine:compileJava
D:\GameDev\Terasology\engine\src\main\java\org\terasology\persistence\internal\AbstractStorageManager.java:126: error: reference to newFileSystem is ambiguous
            try (FileSystem chunkZip = FileSystems.newFileSystem(chunkPath, null)) {
                                                  ^
  both method newFileSystem(Path,ClassLoader) in FileSystems and method newFileSystem(Path,Map<String,?>) in FileSystems match
D:\GameDev\Terasology\engine\src\main\java\org\terasology\persistence\internal\SaveTransaction.java:430: error: reference to newFileSystem is ambiguous
                    try (FileSystem oldZip = FileSystems.newFileSystem(oldChunkZipPath, null)) {
                                                        ^
  both method newFileSystem(Path,ClassLoader) in FileSystems and method newFileSystem(Path,Map<String,?>) in FileSystems match
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors

> Task :engine:compileJava FAILED

FAILURE: Build failed with an exception.

Computer details

Windows 10
AdoptOpenJDK 14.0.2
Branch: dev-develop
Commit used f683f12906677363da41fc261ca82566d20b8c2b

To fix this issue, I temporarily downgraded to version 11 of OpenJDK.

Hi @GIANTCRAB and thanks for the report!
Your observation is right, the Java API changed between Java 11 and Java 14. This issue is meant to collect such issues so that we are able to upgrade to Java 14 (or newer) at some point.

To fix this issue, I temporarily downgraded to version 11 of OpenJDK.
Your temporary fix is actually what is required for building from source :wink:

I see, Java 13 added new methods, so when we pass null it's ambiguous whether that's a null ClassLoader or a null something-else.
That's easy enough to make forward-compatible.
It's the sort of thing that it seems like we might be able to catch categorically with one the static analysis tools, but I haven't found anything in IntelliJ or SpotBugs that looks like "show me things that are incompatible with a future JDK," so I guess try-it-and-see will be how we find these.
(I'm also surprised the code in question needs that method, but it wouldn't be the first time Java's file-handling stuff has surprised me.)

I tried and failed to run with the current release candidate for JDK 15.
OpenJDK 64-Bit Server VM warning: You have loaded library ~/IdeaProjects/Terasology/natives/linux/liblwjgl.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
java.lang.UnsatisfiedLinkError: ~/IdeaProjects/Terasology/natives/linux/liblwjgl64.so: ~/.jdks/openjdk-15+36-1562/lib/libjawt.so: version `SUNWprivate_1.1' not found (required by ~/IdeaProjects/Terasology/natives/linux/liblwjgl64.so)
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:383)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:227)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:169)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2407)
	at java.base/java.lang.Runtime.load0(Runtime.java:747)
	at java.base/java.lang.System.load(System.java:1857)
	at org.lwjgl.Sys$1.run(Sys.java:70)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
	at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
	at org.lwjgl.Sys.loadLibrary(Sys.java:87)
	at org.lwjgl.Sys.<clinit>(Sys.java:117)
	at org.terasology.engine.internal.TimeLwjgl.<init>(TimeLwjgl.java:23)
	at org.terasology.engine.subsystem.lwjgl.LwjglTimer.preInitialise(LwjglTimer.java:36)
	at org.terasology.engine.TerasologyEngine.preInitSubsystems(TerasologyEngine.java:281)
	at org.terasology.engine.TerasologyEngine.initialize(TerasologyEngine.java:215)
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:404)
	at org.terasology.engine.Terasology.main(Terasology.java:182)

I wonder if that will be fixed by #3969? Either through something LWJGL 3 deliberately does differently, or just as a by-product of creating a newer build of the .so.

Thanks @keturn - interesting note 🤔
Will ping @DarkWeird here as an FYI - would indeed be interesting to see if LWJGL 3 will save us all.

JDK 16 is now in Release Candidate phase, with less than four weeks until its scheduled General Availability release date.
As far as we know, JDK 17 is still planned to arrive in September as the next release with long term support.

Java 16 / JDK 16 is out!
jpackage, Records, instanceof pattern matching.
Vector API and foreign memory access API are in incubation stages. At this point I'd be surprised if they're included as stable in 17. Those are interesting for gamedev so I would have liked to see them in this next Long-Term Service release, but not this time, I guess.
Not much newsworthy on 17 yet. Some stuff for macs probably. We'll see what else shows up in the next few months.

The first release candidate for Java 17 is out!
The schedule targets August 19th for the final release candidate,
and September 14th for the release to general availability.
Highlights from the release notes include:

New macOS Rendering Pipeline (-Dsun.java2d.metal=true) and macOS/AArch64 Port
Incubating features from Project Panama:

Vector API, jdk.incubator.vector
Foreign Function and Memory API, jdk.incubator.foreign an alternative to JNI and sun.misc.Unsafe

hello,
I was trying to setup my workspace with JDK 17 and I got the same error, here is what was shown on my cmd prompt...
    at org.gradle.cache.internal.DefaultCacheAccess.open(DefaultCacheAccess.

java:139)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(Defaul
tPersistentDirectoryStore.java:89)
at org.gradle.cache.internal.DefaultPersistentDirectoryStore.open(Defaul
tPersistentDirectoryStore.java:43)
at org.gradle.cache.internal.DefaultCacheFactory.doOpen(DefaultCacheFact
ory.java:103)
at org.gradle.cache.internal.DefaultCacheFactory.open(DefaultCacheFactor
y.java:68)
at org.gradle.cache.internal.DefaultCacheRepository$PersistentCacheBuild
er.open(DefaultCacheRepository.java:126)
at org.gradle.groovy.scripts.internal.FileCacheBackedScriptClassCompiler
.compile(FileCacheBackedScriptClassCompiler.java:116)
at org.gradle.groovy.scripts.internal.CrossBuildInMemoryCachingScriptCla
ssCache.getOrCompile(CrossBuildInMemoryCachingScriptClassCache.java:50)
at org.gradle.groovy.scripts.internal.BuildScopeInMemoryCachingScriptCla
ssCompiler.compile(BuildScopeInMemoryCachingScriptClassCompiler.java:50)
at org.gradle.groovy.scripts.DefaultScriptCompilerFactory$ScriptCompiler
Impl.compile(DefaultScriptCompilerFactory.java:49)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.
apply(DefaultScriptPluginFactory.java:125)
at org.gradle.configuration.BuildOperationScriptPlugin$1.run(BuildOperat
ionScriptPlugin.java:65)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(
DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(
DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(Defaul
tBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$r
un$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWith
UnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(Defa
ultBuildOperationExecutor.java:71)
at org.gradle.configuration.BuildOperationScriptPlugin.lambda$apply$0(Bu
ildOperationScriptPlugin.java:62)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext.a
pply(DefaultUserCodeApplicationContext.java:43)
at org.gradle.configuration.BuildOperationScriptPlugin.apply(BuildOperat
ionScriptPlugin.java:62)
at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.applySett
ingsScript(ScriptEvaluatingSettingsProcessor.java:74)
at org.gradle.initialization.ScriptEvaluatingSettingsProcessor.process(S
criptEvaluatingSettingsProcessor.java:67)
at org.gradle.initialization.SettingsEvaluatedCallbackFiringSettingsProc
essor.process(SettingsEvaluatedCallbackFiringSettingsProcessor.java:34)
at org.gradle.initialization.RootBuildCacheControllerSettingsProcessor.p
rocess(RootBuildCacheControllerSettingsProcessor.java:47)
at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(Buil
dOperationSettingsProcessor.java:50)
at org.gradle.initialization.BuildOperationSettingsProcessor$2.call(Buil
dOperationSettingsProcessor.java:47)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBu
ildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBu
ildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(Defau
ltBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$c
all$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWit
hUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(Def
aultBuildOperationExecutor.java:76)
at org.gradle.initialization.BuildOperationSettingsProcessor.process(Bui
ldOperationSettingsProcessor.java:47)
at org.gradle.initialization.DefaultSettingsLoader.findSettingsAndLoadIf
Appropriate(DefaultSettingsLoader.java:127)
at org.gradle.initialization.DefaultSettingsLoader.findAndLoadSettings(D
efaultSettingsLoader.java:65)
at org.gradle.initialization.SettingsAttachingSettingsLoader.findAndLoad
Settings(SettingsAttachingSettingsLoader.java:35)
at org.gradle.internal.composite.CommandLineIncludedBuildSettingsLoader.
findAndLoadSettings(CommandLineIncludedBuildSettingsLoader.java:34)
at org.gradle.internal.composite.ChildBuildRegisteringSettingsLoader.fin
dAndLoadSettings(ChildBuildRegisteringSettingsLoader.java:53)
at org.gradle.internal.composite.CompositeBuildSettingsLoader.findAndLoa
dSettings(CompositeBuildSettingsLoader.java:35)
at org.gradle.initialization.DefaultSettingsPreparer.prepareSettings(Def
aultSettingsPreparer.java:36)
at org.gradle.initialization.BuildOperationFiringSettingsPreparer$LoadBu
ild.doLoadBuild(BuildOperationFiringSettingsPreparer.java:62)
at org.gradle.initialization.BuildOperationFiringSettingsPreparer$LoadBu
ild.run(BuildOperationFiringSettingsPreparer.java:57)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(
DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(
DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(Defaul
tBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$r
un$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWith
UnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(Defa
ultBuildOperationExecutor.java:71)
at org.gradle.initialization.BuildOperationFiringSettingsPreparer.prepar
eSettings(BuildOperationFiringSettingsPreparer.java:45)
at org.gradle.initialization.DefaultGradleLauncher.prepareSettings(Defau
ltGradleLauncher.java:218)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(
DefaultGradleLauncher.java:159)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(Default
GradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultG
radleLauncher.java:124)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleB
uildController.java:72)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleB
uildController.java:67)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultW
orkerLeaseService.java:213)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBu
ildController.java:67)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildC
ontroller.java:56)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(Exe
cuteBuildActionRunner.java:31)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildA
ctionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(B
uildOutcomeReportingBuildActionRunner.java:63)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(
ValidatingBuildActionRunner.java:32)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRun
ner.run(FileSystemWatchingBuildActionRunner.java:77)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.ru
n(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(
RunAsBuildOperationBuildActionRunner.java:49)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(
RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBu
ildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBu
ildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(
DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(De
faultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(Defau
ltBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$c
all$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWit
hUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(Def
aultBuildOperationExecutor.java:76)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(Run
AsBuildOperationBuildActionRunner.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$
0(InProcessBuildActionExecuter.java:54)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBu
ildState.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:53)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProce
ssBuildActionExecuter.java:29)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.l
ambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:
49)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.e
xecute(BuildTreeScopeLifecycleBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.e
xecute(BuildTreeScopeLifecycleBuildActionExecuter.java:27)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.ex
ecute(ContinuousBuildActionExecuter.java:104)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.ex
ecute(ContinuousBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.
execute(SubscribableBuildActionExecuter.java:64)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.
execute(SubscribableBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildAction
Executer.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.j
ava:67)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildAction
Executer.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildAction
Executer.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.
execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.
execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecu
ter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecu
ter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExe
cuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExe
cuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execu
te(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execu
te(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBu
ild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(
WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute
(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.
execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(Fo
rwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(Fo
rwardClientInput.java:75)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(For
wardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogA
ndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClien
t.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBu
ild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(Build
CommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(
DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.
run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(Daemon
StateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.
onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecu
torImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoo
lExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPo
olExecutor.java:635)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnabl
e.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:833)
1 error

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 1s
"C:\Users\user\IdeaProjects\Terasology>gradlew jar game " was the cmd I executed...
I am planning to use JDK 13

It looks like you can't just reflect into Java internals anymore like you used to be able to.

Yeah. It is.
We should rewrite this part of code.
Really.. this problem can be fire in any place, which trying getting private field or access private method.
In this place.. idk how get comparable task, because some internal logic wrapping task :(
Maybe.. VarHandle with privateLookup in this future can help there...

interesting. a couple of hints here as well, including VarHandle:
https://stackoverflow.com/questions/1196192/how-to-read-the-value-of-a-private-field-from-a-different-class-in-java

interesting. a couple of hints here as well, including VarHandle:
https://stackoverflow.com/questions/1196192/how-to-read-the-value-of-a-private-field-from-a-different-class-in-java

Yeah. It is interesting feature.
I known several places where we can use it instead bytecode generation (like reflectasm for event handlers)
But don't sure that changing private fields is right place in any way. Especially it is our code.

This main issue is this part:
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.concurrent.Future java.util.concurrent.ExecutorCompletionService$QueueingFuture.task accessible: module java.base does not "opens java.util.concurrent" to unnamed module @2ef3eef9
Newer Java versions are much more strict about how you can interact with modules. Private access via reflection is now almost completely forbidden. I agree that the right solution is indeed to not be accessing private implementation details at all.

Being addressed with #5162


Tile map painting preview doesn't automatically update.

Godot version
4.0.alpha8
System information
Windows 11 (Dev Channel), Radeon RX590
Issue description
When creating a TileMap under a Node2D, adding TileSet, Texture atlas and then selecting the tiles to paint, the preview always stays where the mouse last was. It only updates when zooming in or out or pressing right-click. (Only applies when multiple tiles are selected.)
Steps to reproduce
Create Project.
Add Node2D.
Add TileMap.
Add TileSet.
Add TextureAtlas.
Select Tiles to draw.
Minimal reproduction project
any project.

Can't reproduce, unless I misunderstood something. Can you add a video or at least some screenshots?
This sounds like one of #58609's symptoms.

Yes, you are right! I've also noticed while originally writing this issue, it only occurred sometimes. So it's a duplicate of #58609

TileMap editor doesn't display ghost tiles (previews) and is glitchy (similar to Tilemap editor draws lines #24970, but permanently, i.e. lines are drawn with each click)


add new search api by location

By default the UI doesn't show anything.
It is possible to use the web browser location API to get the current location, return in longitude and latitude.
Then we can send a request to find the nearest station to the provided coordinates.
This might be as simple as adding a new 'location' parameter to the listCities operation, that accepts values like 42.6728295,23.2781873

Actually effective searching in the DB might be a little bit tricky. Here are few links that may help:
https://medium.com/datadriveninvestor/getting-started-building-location-based-gis-rest-apis-with-java-ca28a8869af3
https://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/
https://stackoverflow.com/questions/1813460/database-best-performance-way-to-query-geo-location-data

Actually effective searching in the DB might be a little bit tricky. Here are few links that may help:
https://medium.com/datadriveninvestor/getting-started-building-location-based-gis-rest-apis-with-java-ca28a8869af3
https://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/
https://stackoverflow.com/questions/1813460/database-best-performance-way-to-query-geo-location-data


PanGestureRecognizer jittering fix

Because pan recognizer needs some threshold to consider itself as "Recognised", after it change the status to "START" view scrolled by this gesture will jump on this threshold value, because startPoint was set when gesture was in "UNSURE" state and delta will not be zero, so I reset starting point and delta when state changes to "START" to avoid this "jumping" effect

👍I never noticed this before

On Switch it's really hard to notice, but on iPhone with 120HZ screen it's quite noticeable


Please add dependencies to get to five.

Hey can we get one the following dependencies going as well?

one
two
three
four

Currently my work is something like this which I think can be streamlined with better dependency support.
five() - 4 // 1
five() - 3 // 2
five() - 2 // 3
five() - 1 // 4

Thank you for this contribution to the Open source community. This will move the JS community to new heights!

No. I get that it's a stab at the left-pad thing, but no.

the-number-one
two
numeric-constant-three
always-four
these may satisfy your needs.


Add flag to mod description to determine that this mod is safe for battle.net online and changes only local string values

For example NumberedRuneNames is safe for run players on the battle.net realms.
But HoradricForging is not.
And StackableRunes is safe partly (only runes skin is changed, but stack feature is not works on battle.net realm).

Sorry, I'm not going to get into the business of supporting mods for online use. People can do so entirely at their own risk.


Alt double click properties

Fixes #2987
Details of Changes
Add details of changes here.

Added Alt key press at same time user double click on item (file/folder) to open Properties panel

Validation
How did you test these changes?

 Resolve conflicts, please.


Use of custom home option in transmission result failed to set up mount namespacing error

Describe the bug
Use of custom home option in transmission end with error:
 transmission.service - Transmission BitTorrent Service
    Loaded: loaded (/etc/systemd/system/transmission.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Thu 2022-07-28 18:17:39 UTC; 2s ago
   Process: 148145 ExecStartPre=/nix/store/k0hd73xwwvwsn0hyk0x8b4nhcrkp22z3-transmission-prestart (code=exited, status=226/NAMESPACE)
        IP: 0B in, 0B out
       CPU: 1ms

ul 28 18:17:39 nixos-server systemd[1]: Starting Transmission BitTorrent Service...
ul 28 18:17:39 nixos-server systemd[148145]: transmission.service: Failed to set up mount namespacing: /run/systemd/unit-root/mnt/storage-a/private/torrent/.config/transmission-daemon: No such file or directory
ul 28 18:17:39 nixos-server systemd[148145]: transmission.service: Failed at step NAMESPACE spawning /nix/store/k0hd73xwwvwsn0hyk0x8b4nhcrkp22z3-transmission-prestart: No such file or directory
ul 28 18:17:39 nixos-server systemd[1]: transmission.service: Control process exited, code=exited, status=226/NAMESPACE
ul 28 18:17:39 nixos-server systemd[1]: transmission.service: Failed with result 'exit-code'.
ul 28 18:17:39 nixos-server systemd[1]: Failed to start Transmission BitTorrent Service.

Service start without set home in configuration. I tried even with 777 permission for custom directory.
Is not out of question that I done something wrong but error message is pretty hard to understand .
Notify maintainers
@ju1m
Metadata
nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.15.55, NixOS, 22.05 (Quokka), 22.05.2019.d9536b9b1e3`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.8.1`
 - channels(root): `"nixos-22.05"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Also even with custom home /var/lib/transmission is created with all directories.

Possibly related, I think whatever kind of hardening this service is using also making it impossible to save specific files outside of /var/lib/transmission. Even if the destination directory is owned transmission:transmission or properly set up using ACLs it won't work.
Couldn't create "/every": Read-only file system (/build/source/libtransmission/file-posix.c:243)
Couldn't create "/every/component": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up/to": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up/to/destination": Read-only file system (/build/source/libtransmission/fdlimit.c:174)

Possibly related, I think whatever kind of hardening this service is using also makes impossible to save specific files outside of /var/lib/transmission. Even if the destination directory is owned transmission:transmission or properly set up using ACLs it won't work.
Couldn't create "/every": Read-only file system (/build/source/libtransmission/file-posix.c:243)
Couldn't create "/every/component": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up/to": Read-only file system (/build/source/libtransmission/fdlimit.c:174)
Couldn't create "/every/component/up/to/destination": Read-only file system (/build/source/libtransmission/fdlimit.c:174)

I don't think it's related but it's certainly an issue: I've opened #188059.
@pio2398 While trying all kinds of things for the issue above I've managed to use a custom home option successfully. Maybe you've set the settingsDir to an absolute path? Try adding --show-trace to your nixos-rebuild switch, it could help.
This is what transmission-prestart does as far as I can tell:
set -eu${lib.optionalString (cfg.settings.message-level >= 3) "x"}
${pkgs.jq}/bin/jq --slurp add ${settingsFile} '${cfg.credentialsFile}' |
install -D -m 600 -o '${cfg.user}' -g '${cfg.group}' /dev/stdin '${cfg.home}/${settingsDir}/settings.json'

@pio2398 I had the same problem and managed to fix it by creating the settings directory, i.e. mkdir -p /mnt/storage-a/media/transmission/.config/transmission-daemon for your use case. Guess the pre-start script isn't run or has some problem which makes it not create the directory.

@sudnam: I didn't expect so simple workaround. I tried with different chmod but creating directories(.config, .incoming and Download) solved problems. Thank you.

The issue is that the unit has paths in BindPaths that may not exist yet when pointed at an empty folder and you can see here that https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/torrent/transmission.nix#L265-L275 that the service will not create these folders unless you set services.transmission.downloadDirPermissions to something non-null, which is a very weird decision to be made tbh but atleast its an easy workaround


work-flow after CM upgrade?

upgrade to a new CM13 nigthly
re-do Needle and call patch.py

Will this work or is any reinstall of microG necessary?

For me, re-applying the su commands for granting permissions via "pm grant" were necessary after CM upgrade. Because of more tasks I like to re-apply after upgrade, I wrote a Task in Tasker for "Boot". The task automatically patches the DIR_VOLUME for my headset, /etc/hosts file, permissions, cleans temp files from /data/data and so on. No problems after upgrade I have to care about.
Often, MicroG worked after upgrade, but signatures were wrong. It would be cool, if I could run patch.py in a Tasker Boot-Task.

Thanks for that reply, can you explain to me, what "For me, re-applying the su commands for granting permissions via "pm grant" were necessary after CM upgrade." really means?
 So I formatted /system to remove GAPPS and applied patch.py and installed microG, but had problems installing APKs from my phones storage (no matter if SDCard or internal memory). It turned out that CMs com.android.packageinstaller didn't have storage access rights. By trial and error I found out, that via the Apps menu I had to grant that right in order to be able to install APKs. So in the end it feels like a wipe would have been the best idea for me :-/.

I have a Tasker Bootscript which issues following commands for my apps to work correctly with A 6.0.1, CM 13 and MicroG GMS.
pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION
pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION
pm grant de.komoot.android   android.permission.ACCESS_FINE_LOCATION
pm grant com.sygic.aura  android.permission.ACCESS_FINE_LOCATION
pm grant com.sygic.aura  android.permission.ACCESS_COARSE_LOCATION


Multiple Steam IPS not working

Issue Description:

Trying to assign multiple IPs to STEAMCACHE_IP is failing.
Docker Run Command:
#!/bin/bash

HOST_IP="<IP_ADDRESS>"
STEAM_IPS="<IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>"

sudo docker run --restart unless-stopped --name steamcache-dns --detach -p 53:53/udp -e USE_GENERIC_CACHE=true -e UPSTREAM_DNS=<IP_ADDRESS> -e LANCACHE_IP=$HOST_IP -e STEAMCACHE_IP=$STEAM_IPS steamcache/steamcache-dns:latest

Docker Container Output:
mon@mon:~$ ./sdns_install.sh
Unable to find image '<IP_ADDRESS>:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:45761->[::1]:53: read: connection refused.
See 'docker run --help'.

Pretty sure this is your shell failing to tokenise. I think you need to requote $STEAM_IPS
sudo docker run --restart unless-stopped --name steamcache-dns --detach -p 53:53/udp -e USE_GENERIC_CACHE=true -e UPSTREAM_DNS=<IP_ADDRESS> -e LANCACHE_IP="$HOST_IP" -e STEAMCACHE_IP="$STEAM_IPS" steamcache/steamcache-dns:latest

So I tried it with both "${STEAM_IPS}" and \STEAMIPS`` but neither of them seem to work.
The output doesn't yell about "Unable to find image..." anymore:
mon@mon:~$ ./monolithic_install.sh
1c8ac78bf19a934e67ec028b9259470769d13844ce6ec48f37c1ff9e4a5b4deb
817659f974857a6f8bebb33895a019248baf2a2682d04427759c8c5aad519253
435ff3e6d7196273ef9c4508cdc69a0ed0b3f0f90da09537007f74b1e4d84122
steamcache-dns running on: <IP_ADDRESS>
lancache running on: <IP_ADDRESS>
steamcache backup IPS: <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>
mon@mon:~$ ping google.com
ping: google.com: Temporary failure in name resolution

However, it still doesn't work. I try to peek into the container and it doesn't work:
mon@mon:~$ ./peek.sh steamcache-dns
Error response from daemon: Container 1c8ac78bf19a934e67ec028b9259470769d13844ce6ec48f37c1ff9e4a5b4deb is restarting, wait until the container is running
mon@mon:~$ ./peek.sh lancache
OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"/bin/\": permission denied": unknown
mon@mon:~$ ./peek.sh steamcache-dns
Error response from daemon: Container 1c8ac78bf19a934e67ec028b9259470769d13844ce6ec48f37c1ff9e4a5b4deb is restarting, wait until the container is running

The peek script is just this:
#!/bin/bash
sudo docker exec -it $1 /bin/$2

I started creating a more complex installer script that can be used on a fresh ubuntu install with the only other requirement of updating your netplan or interface file. I did this because I think because I keep stopping and removing the containers and then reinstalling with the same name without purging the actual data, it's causing issues. I'm writing this script with the expectation to constantly use fresh Ubuntu installs.
In that script, I am currently getting the following error:
creating steamcache-dns...
docker: invalid reference format.
See 'docker run --help'.

Here is the command:
sudo docker run --restart unless-stopped --name steamcache-dns --detach -p $HOST_IP:53:53/udp -e USE_GENERIC_CACHE=true -e UPSTREAM_DNS=$DNS_IPS -e LANCACHE_IP=$LANCACHE_IP -e STEAMCACHE_IP=$STEAMCACHE_IPS steamcache/steamcache-dns:latest

Disregard that last issue, I just figured it out.
At the very least, the issue still stands that for some reason, the steamcache-dns is not listening on port 53. It can boot up just fine and the instance runs for a moment, but then it dies.
I was able to quickly get a report of ifconfig and saw this:
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
          inet addr:<IP_ADDRESS>  Bcast:<IP_ADDRESS>  Mask:<IP_ADDRESS>
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:516 (516.0 B)  TX bytes:0 (0.0 B)

Is this correct? Should it not be running on <IP_ADDRESS> (the host IP I set)?

Setting the -p manually like -p <IP_ADDRESS>:53:53/udp instead of passing a variable like $HOST_IP:53:53/udp works, while the variable returns a wierd error.
Now that I passed the IP manually, which is not preferred, the steamcache doesn't crash, but I still can't resolve outside addresses, there's nothing listening on port 53, and the address is still <IP_ADDRESS>.

Was able to get a custom HOST IP to work by defining a variable as such:
BIND="${HOST_IP}:53:53/udp"

sudo docker run... -p $BIND...

Here is the htop of the steamcache. Is this right?

Still not seeing Port 53 bound on the host like it was when it was working.

Just seeing if there is any help I can get on this.

Hey there! Still looking for any input on this. It's still acting the same way, and it doesn't even seem to work with a single steam IP or no IP at all.
We haven't swapped over from our old lancache yet because that at least works, but it's slow for steam, and then kills itself when it gets full (i.e: doesn't purge games.
We would like to use monolithic since it's the most promising, but this is hindering us.

@dark-swordsman you haven't given us any log output from the containers to help diagnose!! What's the output of docker log steamcache-dns

Thanks for the reply. Sorry about the logs.
When I first looked, it gave me an error saying there was no semi-colon ; between the upstream dns ips, so I tried that.  Thanks again for replying.

Can you confirm your exact docker run command from your script? (Stick an echo in front of it, I'm less interested in the bash variables but need the actual command)


Pydantic latest

fixes https://github.com/gdsfactory/gdsfactory/issues/1591

Hey there, happy to help with this. I tried setting up a dev environment and had some issues, do I need to use conda or something? I'm currently getting
gdsfactory on  main [?] is 📦 v6.90.7 via 🐍 v3.10.5 (env3.10)
❯ gf install klayout-integration

Traceback (most recent call last):
  File "/Users/davidmontague/Programming/pydantic/gdsfactory/env3.10/bin/gf", line 5, in <module>
    from gdsfactory.cli import cli
  File "/Users/davidmontague/Programming/pydantic/gdsfactory/gdsfactory/__init__.py", line 23, in <module>
    from gdsfactory.component_layout import Group
  File "/Users/davidmontague/Programming/pydantic/gdsfactory/gdsfactory/component_layout.py", line 12, in <module>
    from gdstk import Polygon
ImportError: dlopen(/Users/davidmontague/Programming/pydantic/gdsfactory/env3.10/lib/python3.10/site-packages/gdstk.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '__ZN5gdstk12error_loggerE'

I tried using the dev container, after running the setups in the README.md on it after creation, I was at least able to run pytest, but I got:
/offset_d3fc76c5.gds')
FAILED tests/test_paths.py::test_gds[test_path] - AssertionError: Reference GDS file for 'test_path' not found. Writing to PosixPath('/workspaces/gdsfactory/gdslib/gds/gds_ref/test_path.gds')
FAILED tests/test_paths.py::test_gds[rename] - AssertionError: Reference GDS file for 'rename' not found. Writing to PosixPath('/workspaces/gdsfactory/gdslib/gds/gds_ref/rename.gds')
FAILED tests/test_paths.py::test_gds[transition] - AssertionError: Reference GDS file for 'transition' not found. Writing to PosixPath('/workspaces/gdsfactory/gdslib/gds/gds_ref/transition.gds')
FAILED tests/test_route_ports_to_side.py::test_sample_route_sides - AssertionError: Reference GDS file for '_sample_route_sides' not found. Writing to PosixPath('/workspaces/gdsfactory/gdslib/gds/gds_ref/_sample_route_sides.gds')
======================================================== 326 failed, 852 passed, 174 warnings in 105.64s (0:01:45) ========================================================
@dmontagu ➜ /workspaces/gdsfactory (main) $

Is there something else I need to do to set up a dev environment? (Sorry for the spam on your PR)

I see this in your test_docs CI job:
INFO: pip is looking at multiple versions of sax to determine which version is compatible with other requirements. This could take a while.
ERROR: Cannot install gdsfactory and gdsfactory[database,devsim,meow,ray,sax,tidy3d]==6.90.2 because these package versions have conflicting dependencies.

The conflict is caused by:
    gdsfactory[database,devsim,meow,ray,sax,tidy3d] 6.90.2 depends on pydantic==2.0a3
    sax 0.8.6 depends on pydantic<2
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

We are planning to release a package called pydantic_next on PyPI that you can use instead of pydantic>=2.0 so that it will let other dependencies of yours wait to upgrade, will let you know once that's released.

Hey guys, cheers for all the work you are doing! I love GDSFactory and Pydantic.
I thought I couldn't quite wait for this to be implemented as I needed a v2-compatible environement sooner, so I gave it a go at porting it - although I've given up now as it's a massive job. Maybe it can be used as a reference for changes that might be required as there were quite a lot. Also v2 is incompatible with 1.1 so backwards compatibility might be an issue. I am aware of the dependencies issue and pydantic_next might be the way for integration but even then there's a big refactor coming.
In case it is useful though here is my forked patched branch https://github.com/daquintero/gdsfactory/tree/pydantic_v2_test_broken

Thank you Dario,
I created a PR based on your work
https://github.com/gdsfactory/gdsfactory/pull/1658
so we can continue from there


Update giraffe to 4.0.1

Giraffe 4.0.0 had a bug, not sure what it was, that caused at least the ChannelSample to fail. updating to 4.0.1 fixes the sample.
Fixes: https://github.com/SaturnFramework/Saturn/issues/208

This was due to some bad dependencies in 4.0.0 fixed here: https://github.com/giraffe-fsharp/Giraffe/pull/378

Thanks!

Released in 0.10.1


Add lint: panicking_query_methods and panicking_world_methods

As per @alice-i-cecile's request! Closes #58.
This adds the bevy::panicking_query_methods lint, which searches for usage of panicking methods like Query::single(). It is currently Allow-by-default, so you need to explicitly opt-in to use it. (In the project it's under the Restriction category.)
This lint checks both Query and QueryState. I will write a lint for resources in another PR.  (You asked how to test this lint, right?)
I used the following example when testing. Paste it into bevy_lint/examples/lint_test.rs, run cd bevy_lint, then run cargo build && cargo run -- --example lint_test.
#![feature(register_tool)]
#![register_tool(bevy)]

#![deny(bevy::panicking_query_methods)]
#![deny(bevy::panicking_world_methods)]

use bevy::prelude::*;

#[derive(Component)]
struct MyComponent;

#[derive(Resource)]
struct MyResource;

fn main() {
    App::new().add_systems(Update, my_system);

    let mut world = World::new();

    let mut query_state = QueryState::<&mut MyComponent>::new(&mut world);
    let _ = query_state.single_mut(&mut world);

    world.insert_resource(MyResource);
    let _ = world.resource::<MyResource>();
}

fn my_system(query: Query<&MyComponent>) {
    let _ = query.many([]);
}

The warnings should look like this:
error: called a `QueryState` method that can panic when a non-panicking alternative exists
  --> bevy_lint/examples/lint_test.rs:21:25
   |
21 |     let _ = query_state.single_mut(&mut world);
   |                         ^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: use `query_state.get_single_mut(&mut world)` and handle the `Option` or `Result`
note: the lint level is defined here
  --> bevy_lint/examples/lint_test.rs:4:9
   |
4  | #![deny(bevy::panicking_query_methods)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: called a `World` method that can panic when a non-panicking alternative exists
  --> bevy_lint/examples/lint_test.rs:24:19
   |
24 |     let _ = world.resource::<MyResource>();
   |                   ^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: use `world.get_resource::<MyResource>()` and handle the `Option` or `Result`
note: the lint level is defined here
  --> bevy_lint/examples/lint_test.rs:5:9
   |
5  | #![deny(bevy::panicking_world_methods)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: called a `Query` method that can panic when a non-panicking alternative exists
  --> bevy_lint/examples/lint_test.rs:28:19
   |
28 |     let _ = query.many([]);
   |                   ^^^^^^^^
   |
   = help: use `query.get_many([])` and handle the `Option` or `Result`

Fiddle around with it and try to break it! Good luck, though. Unless you use #94, this is the most foolproof lint I've written so far! >:D

There's a little list of panicking APIs in https://github.com/bevyengine/bevy/issues/14275 FYI :)

I'm going to modify this to also check for panicking World methods.

Ok, I believe this is now ready for review again. It now supports linting against World, as well as Query and QueryState.

I merged #106 directly into this, so that will need to be merged before this can.


Fix/disable large mpu retry

Review https://github.com/scality/S3/commit/2284dd9e7b605586b9eb1eb2b246f0f575ccfde7 only, the code change accidentally made its way into the previous commit.
FIXES scality/Integration#449

end-to-end: http://ci.ironmann.io/gh/scality/Integration/9444

@bennettbuchanan The commit actually disables retries, so it should not fail due to a retry.
However, the test may still fail if it takes too long to respond and hangs up the socket. I added a comment to reference the current issue. Let me know if it's clear to you.

Ah, I had assumed that if it got to the point of needing to retry the test, then it means the test is failed instead of letting it retry repeatedly.
It sounds like it would be clear that the request was taking too long.

@bennettbuchanan Oh, OK, I think I get what you mean about the original comment being ambiguous. The retry was actually causing the test to fail because the first complete mpu request would delete some stored parts by the time the second request is sent by aws-node-sdk, and that's why we disabled it. I clarified the retry may cause the test to fail.


[Run] Adding configurable fontsize for result titles

This PR addressed feedback from #30168, and allows the user to configure the fontsize of the query text and results titles.

PR Checklist

[x] Closes: #30168
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

Amazing. And a big effort for accessibility.

Wondering if we should make the substitute configurable too as it contains useful information for some plugins. (For example: WindowWalker, Windows Settings)

Let's not forget to move those images to the online documentation too 💡

@stefansjfw is it possible to set the height in code? Like n * ActualHeight

@stefansjfw is it possible to set the height in code? Like n * ActualHeight

@Jay-o-Way @niels9001 I pushed the change to add this. It's not ideal for every font size, it's hard to set the actual relation as it's not linear change of the results list height as far as I can see. But I'd say it's good enough. If you can make it better, please do so :)

@stefansjfw is it possible to set the height in code? Like n * ActualHeight

@Jay-o-Way @niels9001 I pushed the change to add this. It's not ideal for every font size, it's hard to set the actual relation as it's not linear change of the results list height as far as I can see. But I'd say it's good enough. If you can make it better, please do so :)

Yeah think that'd be the best approach.. or fetching the ActualHeight of the parent panel in the ItemTemplate that holds the textblocks. But I could imagine that's a bit tricky to fetch / and perf repated things so I think your approach is good! We can always change later if needed :)!

I reverted the change. If we assume that majority of users will stick to default (4 results, 16pt font), initial work is better for that case. While mine was worse for that , but better for edge cases (small/large font). We can deal with this in a separate PR. No need to block this nice feature :)


proposal: log/slog: default key names as HandlerOptions, but not constants

The log/slog package has appeared in the standard library for go 1.21. Thank you!
In version 1.21.3 it provides a commonHandler which has hardcoded key names.
For ECS compatibility reasons, could the key names be HandlerOptions settings rather than constants? Please.
In ECS current release (8.10) the names of these fields are:

TimeKey → @timestamp
LevelKey → log.level
MessageKey → message
SourceKey → two fields log.origin.file.name & log.origin.file.line

Our supported way of doing this is with ReplaceAttr. See the field docs for details

Thank you very much!

Minimal code based on Sean's tips. As a hint for someone who would come here.


Feedback for pi 2

Compiled successfully for a raspberry pi 2. I had to restart compilation from a clean ~/raspi directory.
Tried to run piomxtextures_pocplayer :
pi@raspberrypi:~ $ export QT_LOGGING_RULES=qt.qpa.*=true
pi@raspberrypi:~ $ ~/piomxtextures_pocplayer /opt/vc/src/hello_pi/hello_video/test.h264
qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_brcm", "eglfs_emu")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): ("eglfs_brcm", "eglfs_emu")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_brcm"
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_brcm"
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
qt.qpa.input: libinput: input device 'Lite-On Technology USB Productivity Option Keyboard( has the hub in # 1 )', /dev/input/event1 is tagged by udev as: Keyboard
qt.qpa.input: libinput: input device 'Lite-On Technology USB Productivity Option Keyboard( has the hub in # 1 )', /dev/input/event1 is a keyboard
qt.qpa.input: libinput: input device 'Lite-On Technology USB Productivity Option Keyboard( has the hub in # 1 )', /dev/input/event2 is tagged by udev as: Keyboard
qt.qpa.input: libinput: input device 'Lite-On Technology USB Productivity Option Keyboard( has the hub in # 1 )', /dev/input/event2 is a keyboard
qt.qpa.input: libinput: input device ' USB OPTICAL MOUSE', /dev/input/event0 is tagged by udev as: Mouse
qt.qpa.input: libinput: input device ' USB OPTICAL MOUSE', /dev/input/event0 is a pointer caps
qt.qpa.input: X-less xkbcommon not available, not performing key mapping
15:35:00.840 INFO:       Showing media: /opt/vc/src/hello_pi/hello_video/test.h264.
15:35:00.842 VERB:       Can't find extension for .
15:35:00.842 VERB:       Can't find extension for image/svg+xml-compressed.
15:35:00.842 VERB:       Can't find extension for image/vnd.microsoft.icon.
15:35:00.843 VERB:       Unrecognized media: assuming video.
15:35:00.843 VERB:       Setting media source...
15:35:00.986 WARN:       Warning: "Jack server not found"
15:35:00.990 WARN:       Warning: "No decoder available for type 'video/x-h264, stream-format=(string)byte-stream'."
15:35:00.991 VERB:       Stopped signal received!
15:35:00.996 WARN:       Error: "Your GStreamer installation is missing a plug-in."

These warnings should be documented :
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).

For the official touch screen (doc), solution may be to :
export QT_QPA_EGLFS_PHYSICAL_WIDTH=154
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=86

For the others, I don't have any idea yet.

Simple test of webengine :
On the pi 2, I have cross-compiled a simple app containing a main window with a WebEngineView.
[3652:3678:0705/160228.393352:ERROR:surface_factory_qt.cpp(68)] Failed to load /home/damien/raspi/sysroot/opt/vc/lib/libEGL.so.1: /home/damien/raspi/sysroot/opt/vc/lib/libEGL.so.1: cannot open shared object file:
No such file or directory
[3652:3678:0705/160228.988572:ERROR:gl_surface_qt.cpp(661)] Requested OpenGL implementation is not supported. Implementation: 0

I seams to try to load the libraries from the cross-compiled environment...
If I make symbolic links into recreated directory as the app wants, it works, and I have also mouse interaction. But no keyboard interaction. I will make a fresh raspbian lite install to see if it is not related to additionnal things I have made...

Keyboard :
Inspired from : https://github.com/carlonluca/pot/issues/54
export QT_QPA_EGLFS_NO_LIBINPUT=1

Keyboard is working, but I didn't figure yet how to change the default US layout. Some doc : here.

Wow! I am already waiting for months to get mouse interaction on qtwebengine ... Did you use the master or dev branch of this script? Did you compile for 5.8 or 5.9?
How is performance?
Does it work flawlessly?
I experienced for example when loading html5test.com that it loads fairly quickly, but at some time it reloads and stops at 70% (if you show the progress bar) not moving any further...

I have compiled Qt 5.9, using the dev scripts, on a Ubuntu 16.04 x64
virtual machine, targeting a Pi 2.
Performances look poor, but I don't know if it is the website I am viewing,
the pi 2 or other things.
I have navigated by clicking menus, and typed things on the keyboard to a
contact form.
I have also compiled modules qtspeech and qtgamepad.
I will do more tests tomorrow, like performances, keyboard layout, video
performances.
I will also try to see if we can dual screen.
See the other issue I created for pi 2 feedback.
Le 5 juil. 2017 21:12, "Zevero"<EMAIL_ADDRESS>a écrit :

Wow! I am already waiting for months to get mouse interaction on
qtwebengine ... Did you use the master or dev branch of this script? Did
you compile for 5.8 or 5.9?
How is performance?
Does it work flawlessly?
I experienced for example when loading html5test.com that it loads fairly
quickly, but at some time it reloads and stops at 70% (if you show the
progress bar) not moving any further...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Kukkimonsuta/rpi-buildqt/issues/14#issuecomment-313061752,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABrwINTQ6vJyybBPg6kto8J29vpo8U9Uks5sK2GfgaJpZM4ON20f
.

For html5test, I score a 512/555. I ran the app 5 times, always displaying the result.
I have somme messages from the webbrowser :
js: The <keygen> element is deprecated and will be removed in M57, around March 2017. See https://www.chromestatus.com/features/5716060992962560 for more details.
js: The 'options' directive has been replaced with 'unsafe-inline' and 'unsafe-eval' source expressions for the 'script-src' and 'style-src' directives. Please use those directives instead, as 'options' has no effect.

I have pushed update to dev with hopefully working qtwebengine and maybe even keyboard without QT_QPA_EGLFS_NO_LIBINPUT. Issue with Failed to load ...libEGL.so.1... should be fixed without having to create symlinks.
I don't have time to verify whole build process again, but feel free to try. Note that there were changes (adding xkbcommon-dev as dependency) in qtbase, so full rebuild is required for that.

I have verified the 5.9.1 build on rpi 3:

keyboard and mouse seem to work fine
libEGL is loaded properly, but making some symlinks on rpi is still required, so readded to instructions
HTTPS websites now work too
html5test results in 512/555
performance is not the best, but acceptable
youtube works @ 480p; 720p/1080p lags

All tested using the "minimal" example bundled with QT.

On the pi, I ran

Found this ticket with google search and a note to others using raspbian stretch

rpi changed the .so names (see https://bugreports.qt.io/browse/QTBUG-62216)
update the symlinks using these commands instead:

sudo rm /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0 /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
sudo ln -s /opt/vc/lib/libbrcmGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
sudo ln -s /opt/vc/lib/libbrcmEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0


Cannot create database file in windows desktop

I try working with sqlite database on windows desktop but i can not create database, it alway take error
My database code:

My error

Which way i wrong

You need to install sqlite3.dll on Windows or ship it with your app. See the readme on how that could work. You can download it on https://www.sqlite.org/download.html

So how could we auto generate sqlite3.dll into debug or release folder of building application and make it can know windows x86 and windows x64

I don't know how Flutter builds executables on Windows - it might be possible to link sqlite3 statically and use DynamicLibrary.executable(). Otherwise you need to lookup the right library at runtime.


qBittorrent bug when going to copy menu

Describe the bug
Trying to copy a torrents hash with theme park on does not work.
Theme park OFF

Theme Park ON

Theme Install Method (Don't skip)
docker run -d --name='qbittorrent' --net='proxynet' -e TZ="America/New_York" -e HOST_OS="Unraid" -e 'TP_HOTIO'='true' -e 'PUID'='99' -e 'PGID'='100' -e 'UMASK'='002' -p '83:8080/tcp' -v '/mnt/cache/appdata/qbittorrent':'/config':'rw' -v '/mnt/user/data/torrents/':'/data/torrents/':'rw' -v '/mnt/cache/appdata/theme.park/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark':'/etc/cont-init.d/99-themepark':'ro' --restart unless-stopped 'cr.hotio.dev/hotio/qbittorrent'
Application Info (Don't skip)
cr.hotio.dev/hotio/qbittorrent
To Reproduce
Steps to reproduce the behavior:
Right click any torrent and hover over Copy
Expected behavior
Should see Hash instead of Info hashv1 and Info hash v2

hm, can you add -e TP_DISABLE_THEME='true'  and use the subfilter method to apply the theme?
I suspect this happens because the mod downloads the qbittorrent UI https://github.com/GilbN/theme.park/blob/master/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark#L71
and its not exactly the same.

Can confirm that using subfilter method instead of docker_mods works.

I noticed the link seems to be invalid in https://github.com/GilbN/theme.park/blob/0a3771420ec3a2de4cf30c1d4383db067e70ba16/docker-mods/qbittorrent/root/etc/cont-init.d/98-themepark#L77
Could that be the root cause of the issue?

No that's the correct url when using svn

Upstream issue, can't fix.


Github 4 col format leads to copy error on None object

Using the legacy 4 column format for Github events causes the legacy code  in BaselineMeasurements to set the object variable self.main_df_opt to None as follows (line 78) Subsequent calls to call copy() on that object (in UserCentricMeasurements.py and ContentCentricMeasurements.py) result in errors. In both cases there is a check for none directly below, suggest checking for "not self.main_df_opt is None" and moving the copy to below this check. I understand 6 columns is now required, but this fix would be helpful in order to run legacy code.
BaselineMeasurements.py
if platform == 'github' and len(self.main_df.columns) == 6:
            self.main_df_opt = self.main_df.copy()[['action', 'merged']]
            self.main_df = self.main_df.drop(['action', 'merged'], axis=1)
        else:
            self.main_df_opt = None

UserCentricMeasurements.py
def getUserPullRequestAcceptance(self,eventTypes=['PullRequestEvent'], thresh=2):

        df = self.main_df_opt.copy()

        if not df is None and 'PullRequestEvent' in self.main_df.event.values:

ContentCentricMeasurements.py
    def getRepoPullRequestAcceptance(self,eventTypes=['PullRequestEvent'],thresh=2):

        '''
        Calculate the proportion of pull requests that are accepted for each repo.
        Question #15 (Optional Measurement)
        Inputs: eventTypes: List of event types to include in the calculation (Should be PullRequestEvent).
                thresh: Minimum number of PullRequests a repo must have to be included in the distribution.
        Output: Data frame with the proportion of accepted pull requests for each repo
        '''
        df = self.main_df_opt.copy()

        #check if optional columns exist
        if not df is None and 'PullRequestEvent' in self.main_df.event.values:

Example trace:
14 2017-08-30 17:00:00 ERROR:root:Exception in run_Measurements_and_merics::run_all_metrics for: user_trustingness : 'NoneType' object has no attribute 'copy'
Traceback (most recent call last):
  File "/home/social-sim/Documents/Dev_Branch/CP1_Metrics/interfaces/run_measurements_and_metrics.py", line 478, in run_all_metrics
    plot_dir=plot_dir)
  File "/home/social-sim/Documents/Dev_Branch/CP1_Metrics/interfaces/run_measurements_and_metrics.py", line 126, in run_metrics
    measurement_on_sim = run_measurement(simulation,measurement_name,measurement_params,plot_flag=False,simulation=True)
  File "/home/social-sim/Documents/Dev_Branch/CP1_Metrics/interfaces/run_measurements_and_metrics.py", line 235, in run_measurement
    measurement = measurement_function(**measurement_args)
  File "/home/social-sim/Documents/Dev_Branch/CP1_Metrics/socialsim/december-measurements/UserCentricMeasurements.py", line 258, in getUserPullRequestAcceptance
    df = self.main_df_opt.copy()
AttributeError: 'NoneType' object has no attribute 'copy'

I moved the main_df_opt.copy() inside the if statement as you suggested in the most recent update.