The Cesium3DTileset (of Cesium1.107.1) disappears when viewed by the camera at certain angles

Sandcastle example:
Browser:
Operating System:

Hi @yuzhouzhijia520, I'm closing this due to lack of information.
Next time, it would help us to include

A description of the issue
A Sandcastle code example
The data in question

Thanks!


Successful alert pop up feature for contact page "Send" button

Feature request:
A clear and concise description of the feature.
Alert will popup on submission of contact form with a confirmation message also user will be redirected to a fresh page without back end where success message will be displayed.
A clear and concise description of what the problem is.
As when user fills all the detail and clicks on "Send" button then site doesn't take any response.
A clear and concise description of what you want to happen.
I want to add an alert which will pops up and will tell the user that message was delivered successfully with a green tick along with I would also like to add a feature without back end with which user would be sent to a fresh new page on clicking Send Message button where the message will be written, lets say "Thank you for your submission , Return back ".
Add any other context or screenshots about the feature request here.

Assigned @ROHAN842

Hey @aj3011 and @shriya030 I request you to kindly merge my PR


Bring in Pull Request to Convert webp to jpg

Checklist

[x ] I'm reporting a feature request
[x ] I've verified that I'm running youtube-dl version 2020.09.06
[x ] I've searched the bugtracker for similar feature requests including closed ones

Description

First off, thanks for doing this, as my kids have been going crazy since I haven't been able to download any age-gated videos in forever, and this fork has fixed this for me.
Is there any chance that the follow PR could be added to convert webp to jpg:
https://github.com/ytdl-org/youtube-dl/pull/25717
It isn't my PR, but it's an issue I've been having on all my YT downloads, so was hoping you might consider adding to yt-dlc.
Thanks again for your consideration!

I was just about to try to use that option for the first time, but I had to find that issue :angry: hahaha
Hope it'll be fixed eventually!

https://github.com/blackjack4494/youtube-dlc/pull/14
It's actually already merged and working.

PS D:\gitkraken\youtube-dl> python3 -m youtube_dlc "https://www.youtube.com/watch?v=ygmLEnwY4ec" --write-thumbnail -v
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['https://www.youtube.com/watch?v=ygmLEnwY4ec', '--write-thumbnail', '-v']
[debug] Encodings: locale cp1252, fs utf-8, out utf-8, pref cp1252
[debug] youtube-dlc version 2020.09.12
[debug] Git HEAD: d115dc675
[debug] Python version 3.6.5 (CPython) - Windows-10-10.0.19041-SP0
[debug] exe versions: ffmpeg 4.2.1, ffprobe 4.2.1
[debug] Proxy map: {}
[youtube] ygmLEnwY4ec: Downloading webpage
[debug] Default format spec: bestvideo+bestaudio/best
[youtube] ygmLEnwY4ec: Downloading thumbnail ...
[youtube] ygmLEnwY4ec: Writing thumbnail to: Here's why I Didn't Buy a Tesla-ygmLEnwY4ec.jpg
[debug] Invoking downloader on .....

Hmm - I'm not sure what I'm doing wrong then, since I'm also using the --write-thumbnail option and I'm still getting only webp files.  This program will provide a fun and nurturing environment in which children will be introduced to music through singing, dancing and playing musical instruments.  Our instructors are professional musicians who are committed to having fun with your child while introducing them to music!

We are all  about Kids Music, Kids Songs, Nursery Rhymes, Music Classes, Music Lessons.

The Jam Cats cartoon characters are used to inspire children and introduce them to our curriculum through monthly family guides, music cards, flash cards and poster boards.

The Jam Cats Band consists of:
Jagger - lead vocals, guitar
Jezzie - Keyboards, vocals
Jingo - Bass Guitar, vocals
Jankie - Drums, vocals' -metadata 'comment=The Jam Cats Music - Liv Wilinski sings the ABC Song
Subscribe for new videos every week!
https://www.youtube.com/user/TheJamCatsMusic?sub_confirmation=1

https://wp.thejamcatsmusic.com
https://www.instagram.com/thejamcats/
 https://www.facebook.com/thejamcats/

The Jam Cats Music is a children’s music program that comes to your school, daycare center or facility to add an exciting music class to your child’s curriculum each week! This program will provide a fun and nurturing environment in which children will be introduced to music through singing, dancing and playing musical instruments.  Our instructors are professional musicians who are committed to having fun with your child while introducing them to music!

We are all  about Kids Music, Kids Songs, Nursery Rhymes, Music Classes, Music Lessons.

The Jam Cats cartoon characters are used to inspire children and introduce them to our curriculum through monthly family guides, music cards, flash cards and poster boards.

The Jam Cats Band consists of:
Jagger - lead vocals, guitar
Jezzie - Keyboards, vocals
Jingo - Bass Guitar, vocals
Jankie - Drums, vocals' -metadata 'purl=https://www.youtube.com/watch?v=PwNcnWODeWg' -metadata 'artist=The Jam Cats Music' 'file:/home/kevin/youtube-dl/kidstmp/ABC Song - Liv Wilinski _ The Jam Cats Music _ Kids Songs _ Nursery Rhymes _ Music Classes.temp.mkv'
[ffmpeg] There aren't any subtitles to embed

Yeah it also downloads only webp for this video Xhi8qpYCf98. That is strange.
Or not. I remembered there was some odd thing going on. Anyway have to look into it again at some point. Tho you should be able to use --exec to trigger post post processing event.

Thanks, anyone have any good scripts for post processing to convert webp to jpg while keeping the name of the file?

Depends whether you are on windows or unix. When under Linux you can use something like --exec "ffmpeg -i *.webp *.jpg". For Windows you need to make a batch script since you cannot use wildcard * on command line. Maybe Powershell allows that somehow.

Thanks, I am on Unix, so I thought it would have been more complicated than that. Appreciate the assistance.

Issue is kinda solved. Only need to change code to fix the cross drive issue.
So will close it for now.


Thoughts on removing the windows-sys dependency?

Right now, if one try to vendor this crate, the vendor directory will end up being 283MB big. This feels a bit insane.
Especially since you use essentially a single winapi method - MoveFileExW.
Have you thought about dropping the the windows-sys dependency and calling MoveFileExW directly?
I'm sure winapi and windows crates have a reason to be that big, but maybe it can be avoided in this particular case?

What I have right now seems like the sanctioned way to do winapi stuff. How likely is it that an application on windows doesn't need one of those two crates?
I'm open to make the backend swappable while winapi is (still?) around, or to expand version ranges, those seem like no-brainers to me.
I however also have no idea what it would require to directly make the syscall.

Yes, this is what worries me. winapi and windows crates are huge and feel like an overkill, but there should be a reason behind this.
Afaik, this is one of the reasons: https://github.com/danburkert/memmap-rs/pull/89#issuecomment-520250831
But I'm not sure if it affects this crate or not, since you don't need that many functions to begin with.
PS: I thought about making something like atomicwrites-lite, calling system API directly and hoping for the best, but maybe it can be incorporated directly.

OK, I read up on that thread and I am not sure why you need to improve vendored archive size. Is this affecting clone speed of your repo in CI (just a guess), or something else?
I am open to adding features to disable windows support, or move windows support in a separate crate. Idk if that materially improves the situation for you?

If you want your library to be included in most Linux distros, you have to provide a vendored archive (cargo doesn't support os/target-specific vendored archives afaik). And winapi/windows crates add like 25MB even in a compressed form. And all I what to call is a single method. This is just pure bloat.
Also, the compilation speed will be much faster, because those crates are huge.
I understand that this is me problem and it's fine for me to simply fork it, not the first time, but I thought that you might be interested in this as well.

Yeah sorry, I don't think I'm going to make adjustments for that reason. I don't have much interest in working around distro things from the get-go since I have bad previous experiences with Linux distro maintainers as an application developer, and reducing bloat for bloat's sake is I think not compelling enough.
If you came to me, for example, with the argument that you need to deploy the application for some embedded usecase, and for some reason LTO doesn't work right (and I guess for some reason you're using Windows???), I think I'd want to figure it out. Idk, totally made up scenario but it's something where every MB on the end user device actually counts.
It seems to me that your energy is better spent in figuring out a story for target-specific vendoring archives if this is really a big deal on Linux distros, since it would reduce bloat across the board for absolutely all Rust packages. But I have absolutely zero knowledge about it.

Got it. No worries.


Reconsider adding gunicorn as required dependency

In the PR #36, the Gunicorn server became the required dependency which means that each app will have to download the Gunicorn and moreover if you bundle the app as a package with functions-framework, the Gunicorn will be in that package as well.
While it looks like smth that ease development and deployment and allows bootstrapping production-ready instances faster, in many cases I've seen Docker configurations where the application itself is bundled as an installable module and the Gunicorn is set up only inside the actual runner container. Moreover, I'd say such a way allows developers to fine-tune their setup better. The other case is people just using different WSGI servers.
My suggestion is to roll-back the latest change and do not require gunicorn as a dependency.

Hi @yuri-sergiichuk, thanks for the issue.
We added gunicorn as a dependency because:

we want to ensure that users have a production-ready HTTP server available to them,
that they're not unintentionally using the Flask development server in production,
and that they don't need to install and configure additional libraries.

That said, it's still possible to use different WSGI servers or even fine tune gunicorn as before. This isn't currently documented, so I created https://github.com/GoogleCloudPlatform/functions-framework-python/issues/43 to address it.
In addition, the gunicorn dependency is a requirement for Google's internal use of this library, so we're unlikely to revert this change unless it's somehow actively preventing users from using the Functions Framework.
Given that, I'm going to close this issue, but I appreciate you participating in the discussion here and on other issues!


Driver Docs

Could you provide more documentation about how to create custom Driver implementations? I'm trying to follow the GooglePlayDriver and it is hard to tell what is a requirement for this library and what is part of the GooglePlayDriver specific code.
It would be helpful to have a doc that says "To make a driver, you need to make sure it does xyz."
Thanks

In April 2019 we announced that Firebase Job Dispatcher would be deprecated today, April 7th 2020.  For this reason we are going to close all open issues and archive the repository.  We will also stop supporting FJD for new app installations (such as those targeting sdk versions greater than Android Q).  Existing apps that rely on FJD should continue to function as usual.
While we will no longer work on FJD, we encourage you to migrate to Work Manager which is a superior tool and fully supported by the Android team.
Thank you for taking the time to try the library and provide this feedback.  We sincerely appreciate your effort and we apologize for not addressing it in time.


Investigate !Sync/!Send Exclusive Systems

This is a follow up issue to this discussion, where I ran into an issue where I have !Sync + !Send state struct that I pass into an exclusive system closure:
Bevy version
c3a72e9dc85b53a1448138270c72e806fc91ec85
Operating system & version
Ubuntu 20.04, but all platforms are effected
What you did
use bevy::prelude::*;

struct NotSend {
    not_send: *const u8,
}

fn main() {
    let system = make_system();
    App::build().add_system(system.exclusive_system()).run();
}

fn make_system() -> impl Fn(&mut World) {
    let not_send = NotSend {
        not_send: std::ptr::null(),
    }

    move |_| {
        let _ = not_send;
    }
}

What you expected to happen
The program should compile because the !Sync + !Send struct should never be sent across threads in an exclusive system.
What actually happened
Program fails to compile
Additional information
Theoretically this should work, because exclusive systems should be gauranteed to run on the same thread and the state should not need to be Sync or Send, but this needs more investigation. In the interim I am required tu unsafely implement Sync + Send on my struct even though it is not actually Sync + Send which is concerning to have laying around my codebase.
cc @Ratysz

With the stageless RFC being merged, the schedule and systems being moved into Schedules as resources inside a World, and a general move away from supporting !Send and !Sync  data within World, this doesn't seem very likely to move forward, as this would require all systems to be !Send/!Sync which would have strong implications on how the system scheduler would run.
For more context, please see this discussion on Discord: https://discord.com/channels/691052431525675048/692572690833473578/1047997793375096852, and #6552.
Tentatively closing this issue due to the aforementioned change in direction.


[vgupta] Unfinished Spreading Jobs Report error

Error displayed while accessing Unfinished Spreading Jobs Report. Emailed you the screenshot.

Duplicate of #145


listed in the ExpessRoute FAQ - change to Express

[Enter feedback here]
in the url link, just check the misssed writing

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

ID: b29b475d-056b-ba43-5309-dd1ee50b4318
Version Independent ID: 55d5f203-32ef-40a1-62fa-83e8c81cdb14
Content: Azure ExpressRoute: Routing requirements
Content Source: articles/expressroute/expressroute-routing.md
Service: expressroute
GitHub Login: @duongau
Microsoft Alias: duau

@ehsf973 , thank you for your feedback. We'll review this and get back to you shortly!

@ehsf973 , we've fixed the typo as advised. It will reflect in the doc soon.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


APPS: Add OSSL_STORE loader for engine keys, and use it

The idea is to be able to have our apps load engine keys using a URI:
org.openssl.engine:{engineid}:{keyid}

This also includes supporting the old way, by detecting -keyform ENGINE and recoding the -key argument into a suitable URI.  In other words, when the application gets this sort of argument:
-engine {engineid} -key {keyid} -keyform ENGINE

... then it's recoded internally to be the same as:
-key org.openssl.engine:{engineid}:{keyid}

This is an alternative to the solution presented in #13406

This causes new errors in the minimal github test:
apps/lib/engine_loader.c: In function 'OSSL_STORE_LOADER_CTX_free':
apps/lib/engine_loader.c:56:9: error: implicit declaration of function 'ENGINE_free'; did you mean 'NCONF_free'? [-Werror=implicit-function-declaration]
         ENGINE_free(ctx->e);
         ^~~~~~~~~~~
         NCONF_free
apps/lib/engine_loader.c: In function 'engine_open':

Yeah, I noticed...  it took me a moment to find out why; it seems I've momentarily forgotten how to perl...

I've momentarily forgotten how to perl...

Who are you and what have you done with the real Richard?

Who are you and what have you done with the real Richard?

[moahahaha]
[ahem]
Hi, I'm back now :wink:

My PR #13406 also includes due adaptations to the doc of various apps, but once this is merged I can rebase on that and take care of this - or you take over those changes here.

I can pull your doc changes over and make you co-author, that seems to be the simplest.

I can pull your doc changes over and make you co-author, that seems to be the simplest.

Yes, please.
All my other change requests are already fulfilled.

Yes, please.

Done

Now it seems there is just some deprecation issue to be solved.

Done

Now a doc nit is reported (and likely will be #13503).

Now a doc nit is reported

Fixed

Labels, @DDvO, labels! :wink:

Labels, @DDvO, labels! wink

This gives me comfort that you are the same Richard as last week :laughing:

24 hours has passed since 'approval: done' was set, but as this PR has been updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

Merged
0b27381fd544beca44df905991923a7fa374d80a APPS: Add OSSL_STORE loader for engine keys
f91d003a0ef0c748a11ccdb19c7661a3f2df9ab0 APPS: Adapt load_key() and load_pubkey() for the engine: loader
0a3b330cf09dd3746f4f9c5bb82d9bbcfff809c1 Add test to demonstrate the app's new engine key loading


Added my name.

Let me know if my link works. :)
Related issue

What changes does this PR do?
Screenshots (If any)
Questions

@maharshi-sinha please review

Kindly make it next line, also check alphabetical order .

Can you reference the line number that I need to place my name please?

I hope it works this time

I hope it works this time

Now your name is in next line.

I hope it works this time

Now your name is in next line.

So I did this correctly @E-fais?


White cells look bad on dark android theme

Could we maybe get some options to change the colors?
On Android, if you don't specify any colors, it looks exactly like it does on iOS.  Could the unselected cells instead have the option of being transparent, and use the default text color?  Using a dark theme, it really doesn't look very good currently.
It seems like specifying the background color has no effect whatsoever on Android.
  Setting the TintColor to Default is closest to the desired behavior, except the unselected cells are white, which makes the text invisible.

Thats exactly the behavior of it: unselected cells will be white with text using tintColor. So, you want it to be transparent instead of white, dont?

Background color has not effect, tintColor instead. Basically you want same behavior as iOS where unselected cells are transparent. Makes sense.

Will do.

Yes, just you have to be careful about the text color.  I notice in your renderer you are hard coding it to white, i think you should be using some combination of Default or Accent, or let user specify.  Thanks for the great control.

Text color is equal to TintColor in unselected tabs and white in selected one. You want the selected one text color transparent?

Unselected cells should have a transparent background.
Selected cell background should be Accent.
A text color of Default works for both these cases, I believe.
I am not sure the text color needs to change at all.

Fixed.


Added documentation about suggest

@saimaz I think it would be nice if ElasticsearchDSL supports all types of suggest. Currently only Term suggest is supported. I can take care of that. What do you think?

I'm still testing a suggestion usage. So far I think we should rename Suggest to TermSuggest and add the other suggestions as well.

I will merge this docs, and the naming can be fixed with next suggest type implementation.

I created an issue #69 related to suggest endpoint problem. @sbofirov if you want you can fix it, it's quite an easy to fix but very necessary for the next release.


Update H3 error codes

Update error codes with the latest ones.
https://datatracker.ietf.org/doc/html/rfc9114#name-error-codes
https://github.com/apache/trafficserver/blob/2402444b5864411f2415ae142ba81d7637656531/proxy/http3/Http3Types.h#L75

The new error codes are quite different compared to the current ones, do we want to keep the current error codes or completely replace them with the new ones?


Add QC rule: list of all Connect IDs and Collection IDs for participants with multiple collections

Please add this item to the QC report:
Identify all participants with more than one collection at baseline (ignoring any non-finalized collections), list connect ID and collection IDs under the following categories:
Multiple Research collections
Research and Clinical collections
Multiple Clincal collections

@erincschwartz  Would these be different then the current duplicates report? https://nih.app.box.com/file/1590922024431

@KELSEYDOWLING7 I did not remember/may have not been aware of that duplicates report. Let me discuss with Bio team tomorrow, we may just request slight change to how the current report is formatted (i.e. limiting each participant to one row, which includes all data; limiting to Finalized collections only, adding collection setting etc.). I will be in touch.

Sounds like a plan! It's posted each week here https://nih.app.box.com/folder/221297686961 with the other QC outputs

The Duplicates report will work for this purpose if we can add a few thing:

can you add another column to flag somehow for "True Duplicate" which would be yes only if both/all collections for a given participant had been finalized?
can you add another column to indicate Collection Setting (Research or clinical)

Once this is updated, I will begin checking this report weekly when I do my QC report review.

@erincschwartz  Great, please let me know how this looks: https://nih.app.box.com/file/1599523196858
I can also upload this as an xlsx if you need to be able to play with/search through the document easier

@KELSEYDOWLING7 This looks good. Are you able to add columns with tube level collection data (yes/no)? No rush on this, it would just be an easy way for anyone reviewing these duplicate collections to understand what was actually collected at each visit, to determine if there is a site issue that needs to be addressed.

@erincschwartz Yes! Actually in doing so I'm noticing that many of these new duplicates are the separate MW collections. Should I update this to only look for Collection IDs like CXA instead of both CXA and CHA?

This looks much more accurate after having removed the HMW collections: https://nih.app.box.com/file/1601852227065

@KELSEYDOWLING7 This is much more accurate without the home mouthwash collections included, good catch. It will likely be easiest for me to work with this file in xlsx format. Thank you for making these changes.

@erincschwartz This will be run manually today and should be updated in the automation update on Thursday

@erincschwartz  Did the duplicates report from Monday look as expected?

@KELSEYDOWLING7 The report is looking pretty good. However, I am wondering about the definition used for True Duplicate, when I filter for "yes" there are still un-finalized cases showing up. I am hoping to have an easy way to filter for participants who have more than one finalized collection. Can you look at this and let me know what you find?

I'm only seeing 4 cases from last week that have a true duplicate flag of yes without all finalized collections, and those are all HMW. Not sure how those 4 got in but I'll fix that. Connect IDS:<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>
The others all look correct to me unless you see others.

Hopefully now this looks as expected: https://nih.app.box.com/file/1619626767908

@KELSEYDOWLING7, this looks as expected now. Thank you! We can close this issue


Remove confirm message from alching

When i do alching on the OSB i always get a 2nd message that i need to confirm that i want to alch the items. First time its fine, BUT when the trip is done and it asks if it wants to do another trip, and i press the random letter asigned i would still need to confirm the alching. Is there any possibility that you could remove the "confirm" from alching? Would make mage training abit easier :)

same issue as #1355


Implementation: What should happen when .lintstagedrc.js is dirty/unstaged?

For full context, see: https://github.com/okonet/lint-staged/issues/1062
It is my somewhat subjective opinion that lint-staged should fail when there are dirty/unstaged changes to files which affect the behavior of pre-commit checks.
The linked thread includes an elaboration on which files can/could affect pre-commit checks, just in the context of automatically staging those changes.

[As I was] iterating on my hooks+scripts [I've come to] prefer just getting an error instead of automatically staging stuff. I set it to automatically stage config changes if less than 5 files related to pre-commit checks are modified, but even that is getting a bit annoying to me. I find that creating very small commits are best, since it makes it easier to cleanly squash all the little bits into different logical chunks.
I believe an error makes the most sense because the pre-commit checks cannot provide the developer a predictable experience. There could be an option to change the error to just a warning. I believe an error is the best default. If the commit checks pass fast enough.. there's a chance they don't see the warnings. If they are committing inside of some git gui (I use vscode git sidebar a LOT) then they just don't see the warnings.
(Actually my original issue was not understanding the stashing behavior since the files always appeared inside of vscode - so that's another reason to simply fail with an error. I originally went down this rabbit hole precisely because I was committing inside vscode.)

We can get the discovered config filepath here in result.filepath:
https://github.com/okonet/lint-staged/blob/96a1a29ab49009d3d7edc98cc7344b1ac9c1cce6/lib/loadConfig.js#L72
Alternatively, it's the explicit path from --config here:
https://github.com/okonet/lint-staged/blob/96a1a29ab49009d3d7edc98cc7344b1ac9c1cce6/lib/index.js#L47
We could have something like this in the validateConfig function:
https://github.com/okonet/lint-staged/blob/96a1a29ab49009d3d7edc98cc7344b1ac9c1cce6/lib/validateConfig.js
I think printing a warning might be enough, for example:
⚠ lint-staged config file contains uncommited changes (`path/to/config.json`)

I don't think this is strictly necessary though, because if the config changes are staged, they will be applied when linting and committed along with the changes. If the changes are not staged, it will still be applied because lint-staged doesn't touch the file. The only case where the behavior is unexpected is when there are partially staged changes, because those will be hidden/stashed while running.


[operator] Fix Gardenlet deployment

How to categorize this PR?

/area ops-productivity
/kind bug
What this PR does / why we need it:
When deploying a Gardenlet to a remote cluster, it happened that the Kubeconfig reference was deleted from the Gardenlet object, but the Seed was not yet registered.
In the next reconciliation run, the controller tries to deploy the Gardenlet chart with the in-cluster Kubeconfig, i.e. to a totally different and undesired cluster.
This PR fixes said scenario. The controller does not remove spec.kubeconfigSecretRef anymore for this purpose.
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
/cc @ScheererJ thanks for reporting
/cc @rfranzke
Release note:

An issue was fixed that cause `gardener-operator` to deploy the `gardenlet` into the runtime cluster instead of another intended remote cluster.

/assign

/assign

After the discussion in https://github.com/gardener/gardener/pull/10609#discussion_r1785813165, we are back to square one. This PR is closed to serve as a reference, a new one will be opened with an alternative approach discussed with @ScheererJ and @rfranzke.


⚠ PrivateHD has degraded performance

In cb92a34, PrivateHD ($PHD) experienced degraded performance:

HTTP code: 200
Response time: 1891 ms

Resolved: PrivateHD performance has improved in a29961a.


Nicomanga not working

Source name
Nicomanga
Source language
Japanese
Source link
https://www.nicomanga.com
Other details
No response
Acknowledgements

[X] I have updated all installed extensions.
[X] I have opened WebView and checked that the source website is down.
[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a meaningful title with the source name.
[X] I will fill out all of the requested information in this form.

Source is up


URL doesn't change after manual context change (for automatic site config)

Steps to reproduce:

set backend base url to devcom17
remove context chunk from Spartacus configuration (to enable automatic site configuration)
run yarn start --disableHostCheck (to allow for domains other than localhost)
open url electronics-spa.localhost:4200
Change the language or currency with a dropdown in top left menu and verify that URL doesn't change

Note: With hardcoded context configuration the URL changes properly whenever language or currency changes

QA: Url not changing on language and currency change


proposal(docs): add an example of how to work with Supabase Auth

This would be a helpful guideline: https://github.com/thorwebdev/everydaylytics

Is something like this what you had in mind?
https://dev.to/morlinbrot/simple-auth-with-denos-fresh-supabase-2e68

The repo I provided in the initial comment is a better example. It's more up-to-date and takes advantage of PKCE.

Quick heads up that I now finally found the time to get into this again, should have something up at the end of the week.

PR is up, lmk what you think!


Add "reporter" and "assignee" fields in subscription filters

Summary:
Added "reporter" and "assignee" fields to subscriptions modal to filter notifications in channels by users
Also added a field "reporter" to the issue create dialog if the project supports it

Ticket Link
Fixes https://github.com/mattermost/mattermost-plugin-jira/issues/891

Hello @shigalovalexs,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.
Per the Mattermost Contribution Guide, we need to add you to the list of approved contributors for the Mattermost project.
Please help complete the Mattermost contribution license agreement?
Once you have signed the CLA, please comment with /check-cla and confirm that the CLA check is green.
This is a standard procedure for many open source projects.
Please let us know if you have any questions.
We are very happy to have you join our growing community! If you're not yet a member, please consider joining our Contributors community channel to meet other contributors and discuss new opportunities with the core team.

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

/update-branch

@shigalovalexs Is the target branch here really correct?

@shigalovalexs Are you open to signing the CLA?

@hanzei Hi, yes, I`m agree to sign the CLA

@shigalovalexs Could you please sign the form at https://mattermost.com/mattermost-contributor-agreement/?

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

/update-branch


Signature with lock mode

We have a new property for Signature Pad... this is useful for flutter UI because scrolling is done with touch events.
I'm not sure if this property is relevant for reactUI.
But it's maybe a good idea to have the same UX as in flutter UI.

I've put the reactUI in "phone/mobile mode" (F12 and mobile icon at the top left) and checked if the scrollpanel would scroll when I was drawing, but the ScrollPanel didn't scroll, so I guess this property isn't relevant for me. If I understood the property right.

You scroll with mouse wheel?
By touch events its the case that scroll event is consumed if you try to scroll a signature pad. It's painting instead of scrolling. In your case it should continue scrolling...

When scrolling with mouse wheel, scrolling works.
When touching the scroll event is consumed

Did you test with a real phone? Is usage clear?

Just tested with my iPhone 13, imo works as expected, when touching/scrolling outside of the signature pad, scrolling is possible, when you are touching/drawing inside of the signature pad, scrolling isn't possible

and this is the reason for this ticket. If you touch the signature pad but think the page should scroll.... it's not what you expect.
If you lock the signature pad, you can't draw... so you scroll until you unlock - to - edit.

please check flutter implementation as reference

should now work as in flutter


Mouse cursor should change when hovering over hyperlinks

Opened 2011-02-12
We should change the cursor to whatever the system default is for followable links, when it is over a hyperlink in a Glulx game.

@wmvanvliet commented 2011-02-14:

Since GtkTexTags don't have a mouseover event, this could be tricky.

@ptomato commented 2011-02-20:

I came to the same conclusion, enter-notify and leave-notify don't work because the GtkTextTag's event signal fires when the text buffer gets an event within the coordinates of the text tag.
However, I found these, maybe we can adapt them:
http://www.gtkforums.com/about1841.html
http://www.kksou.com/php-gtk2/articles/insert-links-in-GtkTextView---Part-4---Change-Cursor-over-Link.php
Only if we have nothing more important to do, though.


MGMT-9019: Download full ISO in parallel, but build the mionimal ISO sequentially

Description
In order to reduce the temporary space used to build the minimal ISO image, we don't want to extract all the images in parallel, then remove the rootfs and build it again. Instead, we'll download all the required images in parallel, as it is right now, and the build the images sequentially one by one, to reduce the space consumption.
Before the PR:
All in parallel:
Download ISO 1 ------- Download ISO 2 ------ Download ISO 3
         |                   |                       |
Build min ISO 1 --------- Build min ISO 2 ------ Build min ISO 3

After the PR:
Download in parallel:
Download ISO 1 ------- Download ISO 2 ------ Download ISO 3
Build sequentially:
- Build min 1
- Build min 2
- Build min 3

How was this code tested?
Monitoring the folder where the images are extracted and checking that there is no more than 1 extracted image at the same time
Assignees
@mkowalski
Links
Internal ticketing system: MGMT-9019
Checklist

[x] Title and description added to both, commit and PR
[x] Relevant issues have been associated
[x] Reviewers have been listed
[ ] This change does not require a documentation update (docstring, docs, README, etc)
[ ] Does this change include unit tests (note that code changes require unit tests)
qqqq

Looks good, but can you add the details you put in the PR into the commit message as well?

and update the title: feat(MGMT-9019) - not sure what feat stands for :)

/uncc gamli75
/uncc nbalacha
/cc mkowalski

/test ?

/approve

/assign @CrystalChun


Update introduction.md

Typo: duplicated .new method on cache config

Thank you for correcting that 🙏


Update tokens for the canvas navigations and menus for whiteboards and alignment

I have also squeezed in the menu offsetting and changes are on this branch
@tsnikolov let me know also how it looks to you as you gave me the reminder about that on last week's sync


Split beta+ and EC decays

I was interested in the decay scheme plotting capabilities and tried out Cu-64:

Is there a way to split the beta+ and EC decays like in this diagram?
https://www.researchgate.net/figure/Detailed-decay-scheme-for-copper-64-radionuclide-2_fig1_312059806
Or is it a limitation of the database?

Hi @jvavrek
Thanks for raising this. The origin is the decay datasets grouping beta+ and EC decays together as a single decay mode, because the outcome nucleus is the same. This behaviour is not specific to ICRP-107, but also occurs with the ENDF/B-VIII.0 and ENDSF datasets.
Presumably by splitting, you mean having a diagram like this:

Please excuse the quality - this was quickly sketched up in paint using the branching fractions from the paper you linked to.
I think modifying radioactivedecay to do this is technically possible, but it will be somewhat involved. The things required are:

Parsing the ICRP-107 radiation emissions data to pick out the intensities of the beta+ emissions for all the current nuclides with  beta+ and EC decay modes. The respective branching fractions for the beta+ and EC components can then be calculated.
The core code will have to be modified to cope with these special cases. The decay calculator doesn't care about this distinction because the outcome nuclide is the same, so I think that side should be left alone. Just modifying the decay modes, branching fractions and progeny data arrays should be sufficient.
Modifying the decay scheme plotting algorithm to split the lines and separate the beta+/EC pathways per the example image. This could be the most difficult part, I fear, because the matplotlib/networkx backend is not so flexible. I'm not sure how easy it would be to stop the lines and the edge labels overlapping. I recall difficulties in this area when coding this function originally.

Please may I ask how important this issue is to you? Was this just an issue you noticed in passing? Or is it something you feel strongly should be fixed?
Ultimately I guess these modifications will be needed if radioactivedecay adds decay radiation data functionality. Currently the package is focused just on decay calculations, but I've had a few requests for adding decay radiation data now.

@alexmalins good to know. This is not so important; I've just been looking for codes to produce my own decay schemes with a focus on the decay radiation. Do you know of any such packages?

@jvavrek
Nothing off the top of my head for software. The NuDat2 and Nucleide-Lara websites both plot decay schemes, so you could try looking into what they are using on the backend.

Looking further into this, the main difficulty is separating the respective beta+ and EC branching fractions from the ICRP-107 data (point 1 in my earlier post). There is a problem if two sets of beta+ & EC decay pathways head off from one radionuclide. Take Rb-81 as an example:

One EC & beta+ set heads off to a metastable state of Kr-81, while the other decays directly to the ground state.
In the ICRP-07.RAD decay radiations file, there is no way to know which of the beta+ emissions result in Kr-81m and which result in Kr-81. I thus could not split the two total branching fraction numbers (EC + beta+) in the diagram above into four separate numbers for (EC, beta+) and (EC, beta+).
This is a shame as I could solve points 2 and 3 from above. Here is an example diagram from the development code when there is only one EC & beta+ pathway from the parent:

I think I'll put this issue on hold for now. A solution may arise by better controlling the decay dataset production, e.g. by creating parsers for ENDF/ENSDF files and getting a better control of decay pathways, outcomes and emissions data. This is something I have been looking into and will continue to do so in future.

I second the above addition to radioactivedecay. I will also add the need to generate the beta spectrum.

hey @gakabani - I'm not sure I can offer any suggestions here given the main datasets available don't readily distinguish EC and beta+

The origin is the decay datasets grouping beta+ and EC decays together as a single decay mode, because the outcome nucleus is the same. This behaviour is not specific to ICRP-107, but also occurs with the ENDF/B-VIII.0 and ENDSF datasets.

you may be able to back out the fraction that is EC vs beta+ from the total energy released by either decay mode (EC or beta+), which should be the same right, and the energies and intensities of the component radiations that they respectively relase

Dear Alex,
I wonder how Janis (NEA) does it. Many years ago, I contacted Dr. Sopera at NEA, and he was able to add the beta (+,-) spectrum to the Janis code. However, it is very tedious and time-consuming. Also, RADLST was able to generate the beta spectrum, but I lost the capacity to run the code on my current computers. RADLST and Janis use ENSDF. I wonder if Dr. Tuli is still around at BNL to help us out implementing his code.

Hi @gakabani - IIRC references 12 & 13 here and those contained within go into some of the theoretical aspects of how beta spectra are calculated, and some of the codes they used to make ICRP-107. I've no personal experience unfortunately.

Dear Alex,
Thank you for getting back to me so quickly. I will look into it.


About the Vt constraint in box estimator

Hello. Thanks for the code.
I have a question about the Vt (top edge of left 2D box) constraint.
It seems that this implementation hardcodes the vertex that should project to the top edge of left 2D box.
Maybe it's based on the assumption that the camera is able to see the top plane of 3D box ?
However, when the top plane of 3D box is invisible, this specific vertex seems depends on the observation angle and viewpoint as well.

Basically, the top plane of the 3D box will be visible in driving scenarios. The top plane of the 3D box might be invisible if the camera has 3-DoF rotation, where we need 3-axis viewpoints estimation to determine the 3D-2D relations.


Pop up "neuer Defi" einmitten

Das Pop-Up neuer Defi sollte mehr in die Mitte des Bildschirms rücken

Please give an printscreen, on both ios (iPhone8) and android (SGS7) it it works fine.

Please give an printscreen, on both ios (iPhone8) and android (SGS7) it it works fine.

changed ui, should be centered now

changed ui, should be centered now


Write 16b files

Required Info

Camera Model
ZR300

Operating System & Version
Ubuntu 16.04

Hi,
I'm trying to obtain pgm files ( ZR300 camera) from the depth stream (so the real value given by the camera) to be able to use them after. Any idea how should I do that ? (or any file format with which I can store the depth value directly without scaling).
Thank you,
Maud

you really should not do it. :)
lets assume you use float values for each pixel in the image to represent the depth directly: this makes 32 bit per each pixel. Compared to 8 bit, this is 4 times more.
So lets assume you hav 640x480 8bit images, which makes 2492160 bytes (2.433 MB) per each image.
Using float would result in 9.7 MB per image.
And if you make a video with only 3 fps, this would give you 1.7GB instead of  427 MB .
Ok, you might say, I dont care. I have enough storage...
but reading such large data files also requires time. On a standard HDD you would need 500ms to read one single image with 32 bit and only 120ms for a 8 bit one.
However, I fully understand that in some cases it is necessary to use more bits for depth. Especially when you deal with remote sensing or high precision stuff...
What you might do is the following:

use 16 bit.
scale it in a non-linear fashion. Perspective cameras have higher resolutions for 3d distances closer to the camera and coarser resolution further away. So you might expose it. Consider this: Lets assume you have a depth pixel value of 5. What distance difference would result to change the pixel value to 6?
Lets just say 1mm.
So, consider a depth value difference between 54000 and 54001 which represents an object far away from the camera. Lets say far away would mean 4m (for a standard rgbd camera its a fair max distance).
The resolution of the sensor is at this distance somewhat about 10cm. So it would would be a waste of storage to scale the depth difference between 54000 and 54001 to 1mm. Scale it to 10cm then. :)

If you like this idea and need some help implementing this, let me know.
I hope this helps.
PS: Regarding the data format output from the ZR300 I am not sure what is supported for now. I also git one some days ago. But I saw that they also deliver pure 3d points as a ros topic, which you might want to project on an image plane and save as a depth image.

Hi @mbuffier , do you still need further help on this issue?
Jesus
Intel Customer Support

Hi @muffier , you can try to use OpenCV imwrite function to save the depth image into the PGM or 16bit PNG file. Then, you can use imread and imshow to display the image. The demo code as follows:
cv::Mat depth16(_depth_intrin.height, _depth_intrin.width, CV_16U, (uchar *)_rs_camera->get_frame_data(rs::stream::depth));

imwrite("depth16.png", depth16);
imwrite("depth16.pgm", depth16);

Mat depthMap1 = imread("depth16.png", CV_LOAD_IMAGE_ANYDEPTH);
imshow("depthMap1", depthMap1);
Mat depthMap2 = imread("depth16.pgm", CV_LOAD_IMAGE_ANYDEPTH);
imshow("depthMap2", depthMap1);

Thank you, Freeman. Closing this case. Status: Abandoned by Customer.
Jesus
Intel Customer Support


Implemented revoke token in RedditOAuthAgent

We implemented the revoke() function within the RedditOAuthAgent class. We've provided examples of how to revoke a token in the example files and we've written JUnit tests for the implemented functionality.

Looks good in general, I don't have the time to pull and validate the method. Added small suggestion. Also add a test when the method fails and for the execution branches created by various input values?

Hey! Thanks for reviewing this. I've made the changes you requested. For the tests, there are only really two test cases here since the api itself only returns a 401 if client authentication was incorrect or 202 in every other case, even if the token is not valid, or if it was revoked multiple times.


[ACS RP] remove orchestratorRelease for versioned api model

What this PR does / why we need it:
This change is scoped under versioned api model. It has nothing to do with vlabs.
versioned api model need to be conformed with ARM spec, we need to make it clear.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #1545
Feel free to correct the issue, I only put in my understanding.
Special notes for your reviewer:
Release note:

Close this, as I don't know if i want to push forward.

close again.


Automated TC-ACE-1.6 test

Automated test
TC-ACE-1.6
Added auto generated files
Tested
Execution logs:
Execution_Logs.zip

@tehampson @andy31415 Test Suites - Linux (no-ble-tsan-clang) check is failing for test ACE-1.6 in step 5 and the expected outcome is Unsupported_Access script check for it but for Test Suites - Linux (no-ble-tsan-clang) got response as  chip.exceptions.ChipStackError: src/transport/SessionManager.cpp:194: CHIP Error 0x000000AC: Internal error and fails the test. Locally it worked fine but failing for this check. Please take a look at it.
Testplan screenshot:

YAML screenshot:

I am OOO on leave for the next bit, so I will not be able to take a closer look at the moment. If there is a rush to get this in we could add that test to the list here https://github.com/project-chip/connectedhomeip/blob/master/scripts/tests/chiptest/init.py#L130. That will also make it a little easier to work on a few of these issue at once without having the need to pull in individual branches and just being able to work from tip of tree

@manjunath-grl See https://github.com/project-chip/connectedhomeip/pull/27910#discussion_r1263874398


Problem with README.md

In the README.md, here, it says sudo npm install -g live-server
But according to this and this, using sudo with npm is not recommended.
So it would be better to change it to npm install -g live-server

agreed.

Fixed.


add tcp_flags matching to forwarding module

match only on ovs>=2.1.0 when tcp_flags in introduced.

@allewwaly please the unit test failures for both your pull requests. We also need to wait on your PR https://github.com/floodlight/loxigen/pull/512 to be merged.

I don't know why there is checking error. It builds and works ok on my machine. (just run ant and java -jar target/floodlight.jar under root directory)

@allewwaly where specifically did you reference the TCP flag definitions for this OXM? You've obviously tested them working with your use case, but I'd like to cross reference them to be certain.

From http://openvswitch.org/support/dist-docs/ovs-ofctl.8.txt
in the  tcp_flags options:

tcp_flags=[+flag...][-flag...]
Bitwise  match on TCP flags.  The flags and mask are 16-bit num‐
bers written in decimal or in hexadecimal prefixed by 0x.   Each
1-bit  in mask requires that the corresponding bit in flags must
match.  Each 0-bit in mask causes the corresponding  bit  to  be
ignored.
          Alternatively,  the  flags  can  be  specified by their symbolic
          names (listed below), each preceded by either + for a flag  that
          must  be  set,  or  - for a flag that must be unset, without any
          other delimiters between the flags.   Flags  not  mentioned  are
          wildcarded.   For  example,  tcp,tcp_flags=+syn-ack  matches TCP
          SYNs that are not ACKs.

          TCP protocol currently defines 9 flag  bits,  and  additional  3
          bits  are  reserved (must be transmitted as zero), see RFCs 793,
          3168, and 3540.  The flag bits are,  numbering  from  the  least
          significant bit:

          0: fin No more data from sender.

          1: syn Synchronize sequence numbers.

          2: rst Reset the connection.

          3: psh Push function.

          4: ack Acknowledgement field significant.

          5: urg Urgent pointer field significant.

          6: ece ECN Echo.

          7: cwr Congestion Windows Reduced.

          8: ns  Nonce Sum.

          9-11:  Reserved.

          12-15: Not matchable, must be zero.

Is there anybody to check this pull request?  As the PR floodlight/loxigen#512 is already merged.

@allewwaly Not sure why the build failed (says no symbol MatchFields.OVS_TCP_FLAGS...). Might have been done before the loxi pull request was merged. I'm rerunning it now

@allewwaly looks suspicious: https://travis-ci.org/floodlight/floodlight/builds/155709121#L1185

@allewwaly the issue is that codehaus, who was hosting our openflowj jar is no longer hosting it. Thus, maven is broken

@rizard I've updated the openflowj jar with that of  PR floodlight/loxigen#512

@rizard anything need to check or improve?

@allewwaly sorry for taking such a long time with this. Looks great now, thanks!


the wavesurfer.js container cannot have width: fit-content

I replicated this on a forked version of wavesurfer where I ran npm run start to start the local examples.
If the body, i.e., the wavesurfer's container, is given width: fit-content, then the wavesurfer will start flicering and redrawing in an infinite loop.

@Johnrobmiller wrap it with fit-content outside the wavesurfer container instead. Do you have a sample to view online?
<div> // fit-conent css to this div
<wavesurver>
</div>

Wavesurfer requires a width to render, so it either takes the width of the container, or a fixed width from the options. E.g.
WaveSurfer.create({
  container: '#waveform',
  width: 300
})

If you set the container to have width: fit-content and no width for wavesurfer, it won't render anything as the container will have an initial width of 0px.


Update Porter + Add flag to disable auto build

Resolves #3146
What is being addressed
Updated Porter and added the --autobuild-disabled  flag to commands that support it.
How is this addressed

Updated Porter version (along with plugins and mixins)
Remove Porter v0 from the dev container
Added the --autobuild-disabled flag to Porter commands in the Makefile

/test

/test-extended


Number field: impossible to place a 0 after the decimal point

It's impossible to write a decimal number like 0,05. When entering a 0 after the decimal point, it's removed automatically.
{
  amount: alinea.number("Amount"),
}

The number field now accepts whatever the browser accepts. I notice in Chrome decimal numbers are formatted by locale, so 0,05 is a valid input there.


migrating to a new machine: one way of reducing sudo waits

i've been migrating, and re-migrating, to a new machine.  (i run arch linux, in case that turns out to be relevant.)  i've seen various discussions here of how to deal with sudo (like #907).
one approach i'm playing with now is to do installation of the AUR packages in a many-phased fashion (using a Makefile).  the input to the whole thing is, of course, all the AUR packages i need from the previous machine.  i then use aur depends (or the meta file) to produce the transitive closure of depends and makedepends, as well as whatever pacman packages are needed.  after than, i start my phased install; certainly this list isn't optimal, but here are my current (or, almost current) phases.

download all the packages (just the PKGBUILDs, whatever aur-fetch does)
[should do] make sure all keys listed in any validpgpkeys in the downloaded PKGBUILDs are installed (using gpg --locate-keys and --recv-keys)
install all pacman packages needed by any of our packages (including depends, makedepends)
[messy -- building and sudo]  if any packages that are makedepends themselves have makedepends, build and synchronize those latter makedepends to pacman (sudo) and then pacman -S (sudo) them  (trying to split this into build/install phases seems problematic, given that some of these packages may themselves have makedepends)
process the remaining makedepends:

build all the remaining makedepends
[sudo] install these packages by synchronizing the repository to pacman, and then pacman -S them

process the rest of the packages

build all the remaining packages
[sudo] install these packages by synchronizing the repository to pacman, and then pacman -S them

i know this looks like a hack, but it seems to work (in the sense of reducing the number of sudo prompts, and, if a sudo prompt times out, getting back to the prompt is fairly quick [except maybe in step 2?]), at least on my fairly simple system.  BUT, to make it work, i had to add two new flags to aur-sync, one of which needed to be added to aur-build.

--no-sync: this flag is added to aur-sync and, if specified, passed on to aur build, which prevents aur-build from (oh, i see it's changed in 10; congrats on, and thanks for, the release) doing any pacsync or pacman operations for its packages.  [it is weird to call aur sync --no-sync, but aur-sync provides a lot of functionality to download and build packages.]
--nodeps: aur-sync passes this -- instead of --syncdeps -- to aur-build, which in turn passes it to makepkg.  this keeps makepkg from worrying about any missing dependencies (that it would have fulfilled, had the --syncdeps flag had been passed to it).

in addition to those two modifications, it feels to me in my ignorance it would be nice if an aur-synch-with-pacman "porcelain" command existed, to do what aur-build does at the end (currently using pacsync, etc.).
thoughts?
cheers.

in case anyone wants to experiment with this, here is a patch for --no-sync (in aur-sync) and --nodeps (in aur-sync and aur-build).  i guess github won't let me attach a Makefile, so i'll put that in here, also.
the Makefile is just what i developed for my own use; it isn't likely to work "out of the box" for anyone else.  but, maybe the first few variable definitions will be enough.

MY_INSTALL_MACHINE_DIR: probably the default is fine
IGNORES_FILE: a file in the local directory of packages to not install.
MY_AUR_PACKAGES: a file with the packages to be installed
AURLIB: where the aurutils library with my mods lives
AUR_REPO: the name of the local repository aurutils uses

here is the patch:
From 4f82f0544a1f4993aa00607dbc5bc94be3c77d5c Mon Sep 17 00:00:00 2001
From: Greg Minshall<EMAIL_ADDRESS>Date: Thu, 14 Jul 2022 19:35:49 +0300
Subject: [PATCH 2/2] lib/aur-build lib/aur-sync: add --nodeps and (to
 aur-sync) --no-sync

---
 lib/aur-build |  4 +++-
 lib/aur-sync  | 26 ++++++++++++++++++--------
 2 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/lib/aur-build b/lib/aur-build
index 5c39ebf..4450a29 100755
--- a/lib/aur-build
+++ b/lib/aur-build
@@ -111,7 +111,7 @@ opt_long=('arg-file:' 'chroot' 'database:' 'force' 'root:' 'sign' 'gpg-sign'
           'verify' 'directory:' 'no-sync' 'pacman-conf:' 'remove' 'pkgver'
           'rmdeps' 'no-confirm' 'no-check' 'ignore-arch' 'log' 'new'
           'makepkg-conf:' 'bind:' 'bind-rw:' 'prevent-downgrade' 'temp'
-          'syncdeps' 'clean' 'namcap' 'checkpkg' 'user:' 'makepkg-args:'
+          'syncdeps' 'nodeps' 'clean' 'namcap' 'checkpkg' 'user:' 'makepkg-args:'
           'margs:' 'buildscript:' 'dry-run')
 opt_hidden=('dump-options' 'ignorearch' 'noconfirm' 'nocheck' 'nosync' 'repo:'
             'results:' 'results-append:')
@@ -178,6 +178,8 @@ while true; do
             makepkg_common_args+=(--rmdeps) ;;
         -s|--syncdeps)
             makepkg_common_args+=(--syncdeps) ;;
+        --nodeps)
+            makepkg_common_args+=(--nodeps) ;;
         # makepkg options (build)
         -C|--clean)
             makepkg_args+=(--clean) ;;
diff --git a/lib/aur-sync b/lib/aur-sync
index d36abac..ffb6522 100755
--- a/lib/aur-sync
+++ b/lib/aur-sync
@@ -12,7 +12,10 @@ AUR_SYNC_USE_NINJA=${AUR_SYNC_USE_NINJA:-0}
 PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

 # default arguments
-build_args=(--clean --syncdeps) depends_args=() repo_args=() view_args=() filter_args=() fetch_args=()
+build_args=(--clean)
+# this argument may be turned into `--nodeps` by the `--nodeps` flag
+build_args_syncdeps=--syncdeps
+depends_args=() fetch_args=() repo_args=() view_args=() filter_args=()

 # default options
 build=1 chkver_depth=2 download=1 view=1 provides=1 graph=1 keep_going=1
@@ -106,13 +109,13 @@ fi

 opt_short='d:D:k:U:AcfLnorRSTuv'
 opt_long=('bind:' 'bind-rw:' 'database:' 'directory:' 'ignore:' 'root:'
-          'makepkg-conf:' 'pacman-conf:' 'chroot' 'continue' 'force'
-          'ignore-arch' 'log' 'no-confirm' 'no-ver' 'no-graph' 'no-ver-argv'
-          'no-view' 'no-provides' 'no-build' 'rmdeps' 'sign' 'temp' 'upgrades'
-          'pkgver' 'rebuild' 'rebuild-tree' 'rebuild-all' 'ignore-file:'
-          'remove' 'provides-from:' 'new' 'prevent-downgrade' 'verify'
-          'makepkg-args:' 'format:' 'no-check' 'keep-going:' 'user:'
-          'rebase' 'reset' 'ff')
+          'makepkg-conf:' 'no-sync' 'nodeps' 'pacman-conf:'
+          'chroot' 'continue' 'force' 'ignore-arch'
+          'log' 'no-confirm' 'no-ver' 'no-graph' 'no-ver-argv' 'no-view'
+          'no-provides' 'no-build' 'rmdeps' 'sign' 'temp' 'upgrades' 'pkgver'
+          'rebuild' 'rebuild-tree' 'rebuild-all' 'ignore-file:' 'remove'
+          'provides-from:' 'new' 'prevent-downgrade' 'verify' 'makepkg-args:'
+          'format:' 'no-check' 'keep-going:' 'user:' 'rebase' 'reset' 'ff')
 opt_hidden=('dump-options' 'allan' 'ignorearch' 'ignorefile:' 'noconfirm'
             'nover' 'nograph' 'nover-argv' 'noview' 'noprovides' 'nobuild'
             'rebuildall' 'rebuildtree' 'rm-deps' 'gpg-sign' 'margs:' 'nocheck'
@@ -190,6 +193,10 @@ while true; do
             shift; build_args+=(--margs "$1") ;;
         --makepkg-conf)
             shift; build_args+=(--makepkg-conf "$1") ;;
+        --no-sync)
+            build_args+=(--no-sync) ;;
+        --nodeps)
+            build_args_syncdeps=--nodeps ;;
         --pacman-conf)
             shift; build_args+=(--pacman-conf "$1")
             repo_args+=(--config "$1")
@@ -237,6 +244,9 @@ while true; do
     shift
 done

+# now, do `--syncdeps` or `--nodeps`, as needed
+build_args+=(${build_args_syncdeps})
+
 # shellcheck disable=SC2174
 mkdir -pm 0700 "${TMPDIR:-/tmp}/aurutils-$UID"
 tmp=$(mktemp -d --tmpdir "aurutils-$UID/$argv0.XXXXXXXX")
--
2.37.0

and, here the Makefile
# try to phase in the builds, to try to reduce 'sudo timeouts'
#
# 1. all dependencies not managed by aur (so, presumably by pacman)
#
# 2. the dependencies (all) of all aur-based make dependencies of
# anything being installed
#
# 3. all the aur-based make dependencies
#
# 4. then, all the rest.  presumably, this won't ask for any sudo.
# bakalım.

# where things might be on the new machine
MY_INSTALL_MACHINE_DIR = /var/tmp/toit

# packages in that we do not, in fact, wish to install
IGNORES_FILE = ./ignores-file.txt

# the packages i want to install
MY_AUR_PACKAGES = ${MY_INSTALL_MACHINE_DIR}/pkglist_aur.txt

# use my my version of `aur sync` which, oxymoronicly, allows a
# `--no-sync` flag.  and, a new `--nodeps` flag (also in my `aur-build`)
AURLIB = $(shell ls -dt ${HOME}/src/import/arch-linux/aur/aurutils/lib ${MY_INSTALL_MACHINE_DIR}/lib 2> /dev/null | head -1)

# name of the local repository that `aurutils` controls
AUR_REPO=aurutils

# aur-sync cache -- kind of where everything seems to happen
AUR_SYNC_CACHE = ${HOME}/.cache/aurutils/sync

# provided by the AUR team, the AUR database in one simple .json file
AUR_META_FILE = $(shell ls -t {${HOME}/.cache/pacaur-list,${MY_INSTALL_MACHINE_DIR},/var/tmp}/packages-meta-ext-v1.json.gz 2> /dev/null | head -1)
# https://github.com/AladW/aurutils/issues/1011
AUR_QUERY_RPC = https://server.moson.rocks/rpc
# and, communicate this to lower level
export AUR_QUERY_RPC

# directory where things are built
BDIR = ./built

# which AUR packages i want to install
# all the packages that are dependencies of the above
AUR_DEPENDS_TABLE = ${BDIR}/depends.table
# of which, which are from AUR
DEPENDS_AUR = ${BDIR}/depends.aur
# and which are from Pacman
DEPENDS_PAC = ${BDIR}/depends.pac
# of those which are from AUR, which are *make* dependencies?
MAKE_DEPENDS_AUR = ${BDIR}/make_depends.aur
# and, what are *their* dependencies?
MAKE_DEPENDS_DEPENDS_AUR = ${BDIR}/make_depends_depends.aur

# this is for user to add
AUR_SYNC_EXTRA_FLAGS =
AUR_SYNC_FLAGS = --no-view --no-sync --nodeps ${AUR_SYNC_EXTRA_FLAGS}

PACMAN_S_FLAGS = --needed --noconfirm

all: ${AUR_SYNC_CACHE} ${DEPENDS_AUR} ${DEPENDS_PAC} \
		${MAKE_DEPENDS_AUR} ${MAKE_DEPENDS_DEPENDS_AUR} | built

built:
	mkdir ${BDIR}

${AUR_SYNC_CACHE}:
	mkdir -p ${AUR_SYNC_CACHE}

# this is the table we use.
${AUR_DEPENDS_TABLE}: ${AUR_META} ${IGNORES_FILE} | built
	@echo making ${AUR_DEPENDS_TABLE} > /dev/stderr
	@cat ${MY_AUR_PACKAGES} | \
		egrep -v -f <(grep -v '^#' "${IGNORES_FILE}") | \
		xargs -r aur depends -t > ${AUR_DEPENDS_TABLE}

# which make dependencies are from AUR
${DEPENDS_AUR}: ${AUR_DEPENDS_TABLE} | built
	@echo making ${DEPENDS_AUR} > /dev/stderr
	@aq() { \
		unset names; \
		unset sep; \
		while read -r name; do \
			names="$${names}$${sep}$${name}"; \
			sep="|"; \
		done; \
		if [ -n "$${names}" ]; then \
			zcat "${AUR_META_FILE}" | \
                jq -r --arg search "^($${names})\$$" \
                   '[.[] | select(.Name | test($$search)) ] | .[] | .Name'; \
		fi \
	}; \
	awk '$$5~/Depends/{print $$2}' ${AUR_DEPENDS_TABLE} | \
	aq | \
	sort -u > $@

define AURELS
		(grep -w -f <(sed 's/^/^/;s/$$/$$/' ${DEPENDS_AUR}) || sleep 0)
endef

# which make dependencies are from pacman (really: *not* from AUR)
${DEPENDS_PAC}: ${DEPENDS_AUR} ${AUR_DEPENDS_TABLE} | built
	@echo making ${DEPENDS_PAC} > /dev/stderr
	@awk '$$5!~/Self/{print $$2}' ${AUR_DEPENDS_TABLE} | \
		(grep -v -w -f <(sed 's/^/^/;s/$$/$$/' ${DEPENDS_AUR}) || sleep 0) | \
		sort -u > $@

${MAKE_DEPENDS_AUR}: ${DEPENDS.AUR} | built
	@echo making ${MAKE_DEPENDS_AUR} > /dev/stderr
	@awk '$$5~/MakeDepends/{print $$2}' ${AUR_DEPENDS_TABLE} | \
		${AURELS} > $@

${MAKE_DEPENDS_DEPENDS_AUR}: ${AUR_DEPENDS_TABLE} ${MAKE_DEPENDS_AUR} | built
	@echo making ${MAKE_DEPENDS_DEPENDS_AUR} > /dev/stderr
	@cat ${MAKE_DEPENDS_AUR} | \
		aur depends -t - | \
		awk '$$5!~/Self/{print $$2}' | \
		${AURELS} > $@

# phase 0: *download* all the AUR packages.  no `sudo` problems here,
# and (try to) eliminate random network problems
phase0: ${DEPENDS_PAC} ${AUR_SYNC_CACHE}
	@(awk '$$5~/Self/{print $$2}' ${AUR_DEPENDS_TABLE}; \
		cat ${DEPENDS_AUR}) | \
		sort -u | \
		(cd ${AUR_SYNC_CACHE} && aur fetch -)

# phase 1: scan all PKGBUILDs, and make sure any needed `validpgpkeys`
# are installed.  otherwise, a phase below where things are built will
# fail if a key is missing.
phase1:
	@for pb in ~/.cache/aurutils/sync/*/PKGBUILD; do \
		if grep -q validpgpkeys $${pb}; then \
			unset validpgpkeys; \
			. "$${pb}"; \
			if [ -n "$${validpgpkeys[*]}" ]; then \
				for key in "$${validpgpkeys[@]}"; do \
					echo "$${key}"; \
				done; \
			fi; \
		fi; \
	done | \
	sort -u | \
	while read -r key; do \
		if ! gpg --locate-keys "$${key}" | awk 'END{if (NR == 0) exit 1}'; then \
			gpg --recv-keys "$${key}"; \
		fi \
	done;

# phase 2: install whatever pacman packages are needed for whatever
# AUR packages we need.
# msmtp-mta doesn't allow procmail to install.
phase2: ${DEPENDS_PAC}
	@if pacman -T msmtp-mta; then \
		echo removing msmtp-mta && sudo pacman -R msmtp-mta; \
	fi
	@echo installing packages
	@cat ${DEPENDS_PAC} | grep -v msmtp-mta | xargs -r sudo pacman -S ${PACMAN_S_FLAGS}
	@echo removing postfix, installing msmtp-mta
	@sudo pacman -R postfix && sudo pacman -S ${PACMAN_S_FLAGS} msmtp-mta

# XXX for the `sudo pacman -Syu` below -- really, we'd like to synch
# just from our repository (to avoid system upgrads in the middle of
# the instal process).  but, i don't see that aur-build (which might
# normally do this) allows this as an isolated action. there are old
# pacman feature requests, e.g., https://bugs.archlinux.org/task/15561
# https://bugs.archlinux.org/task/16132 to allow this, but i guess
# they haven't achieved any enthusiasm.  aur-build shows the code one
# would use to do this, but i'm lazy

# phase 3: of the aur packages that are make dependencies, what are
# *their* dependencies?
phase3: ${MAKE_DEPENDS_DEPENDS_AUR}
	@cat ${MAKE_DEPENDS_DEPENDS_AUR} | AUR_EXEC_PATH="${AURLIB}" xargs -r aur sync ${AUR_SYNC_FLAGS}
	@if grep -q . ${MAKE_DEPENDS_DEPENDS_AUR}; then sudo pacsync ${AUR_REPO}; fi
	@cat ${MAKE_DEPENDS_DEPENDS_AUR} | xargs -r sudo pacman -S ${PACMAN_S_FLAGS}

# phase 4: build all other AUR make dependencies of our targets
phase4: ${MAKE_DEPENDS_AUR}
	@cat ${MAKE_DEPENDS_AUR} | AUR_EXEC_PATH="${AURLIB}" xargs -r aur sync ${AUR_SYNC_FLAGS}

# phase 5: now, install all other AUR make dependencies of our targets
phase5: ${MAKE_DEPENDS_AUR}
	@if grep -q . ${MAKE_DEPENDS_AUR}; then sudo pacsync ${AUR_REPO}; fi
	@cat ${MAKE_DEPENDS_AUR} | xargs -r sudo pacman -S ${PACMAN_S_FLAGS}

# phase 6: build our targets and all other dependencies
phase6: ${AUR_DEPENDS_TABLE} ${DEPENDS_AUR}
	(awk '$$5~/Self/{print $$2}' ${AUR_DEPENDS_TABLE}; \
		cat ${DEPENDS_AUR}) | \
		sort -u | \
		AUR_EXEC_PATH="${AURLIB}" xargs -r aur sync ${AUR_SYNC_FLAGS}

# phase 7: synchronize and install our targets and all other
# dependencies.  actually, probably shouldn't *need* to use
# DEPENDS_AUR
phase7: ${AUR_DEPENDS_TABLE} ${DEPENDS_AUR}
	sudo pacsync ${AUR_REPO}
	@(awk '$$5~/Self/{print $$2}' ${AUR_DEPENDS_TABLE}; \
		cat ${DEPENDS_AUR}) | \
		sort -u | \
		xargs -r sudo pacman -S ${PACMAN_S_FLAGS}

clean:
	-rm -f ${AUR_DEPENDS_TABLE} ${DEPENDS_AUR} ${DEPENDS_PAC} \
			${MAKE_DEPENDS_AUR} ${MAKE_DEPENDS_DEPENDS_AUR}

You're definitely on to something. I usually run makepkg --rmdeps so I have O(N) sudo calls in the number of packages. Package conflicts aside, a phased approach could lead to O(log N) sudo calls. This assumes part 3. is repeated for each layer of the dependency tree, e.g. makedepends of makedepends of makedepends ...
Note that makepkg (and by extension, PKGBUILDs) has no strict separation between depends and makedepends, and makepkg --syncdeps will install both. In particular, when installing a makedepends package one should assume all depends in that package are also required.
Regarding the suggestions:

aur-sync --no-sync - the oxymoronic nature of the option is not a first, see aur depends --no-depends. That said, I'd investigate if aur sync --no-build suffices.
aur-sync --nodeps - this can be passed to makepkg with aur-sync --margs=--nodeps, and overwrites aur-build --syncdeps. aur-sync puts any --margs arguments after the default build_args.
aur-sync-with-pacman - I support this idea though for different reasons: it allows to easily make e.g. sudoers rules for removing the password prompt on the sync step. I've made an initial draft in perl - the tainted mode is useful when the script is run through setuid wrappers that fail to sanitize the environment (e.g. old versions of doas).

Some remarks about the Makefile:

validpgpkeys can be retrieved from .SRCINFO, removing the need to source the PKGBUILD at this stage
--no-view is a bad idea unless you are the maintainer of the AUR packages. I see people do this more often, so I wonder if the vifm review process is not sufficiently convenient, or it should be complemented by other mechanisms like an abort or notification on maintainer change (#737).

Another point: this could be done relatively easily if aur-depends would output the depth of each dependency in the dependency tree. For example:
foo 9001 foo foo Self 0
foo 9001 foo bar Depends 0
foo 9001 foo baz MakeDepends 0
bar 667 bar bing Depends 1
bing 42 bing zarg MakeDepends 2

However aur-depends does not collect dependencies level by level, so simply appending the request number to the --table output would not work. aur-graph could be extended for this - though data structures in awk might be too limited for this.

thanks for looking at this.
one thing that maybe i didn't clearly explain: the intent is that (other than the messy step 3, building the makedepends) is that the steps that download and/or build packages -- in theory -- do not do any sudo.  and, the steps that do do a sudo do not do any downloading or building.
the idea there is that any step that is going to run a long time (because of downloading/building) can safely be run "unattended".  then, an hour or two later, come back -- hopefully all the builds succeeded.  and, then do the next step, which should (almost?) immediately do a sudo, prompting you for your password, do all the syncs, installs, etc., and finish.  then, you move on to the next download/build step.
so, i think this means one needs the --no-sync flag for aur-sync, as one wants aur-sync to invoke aur-build  to download and build packages, but not sync anything (i.e., i guess, by invoking makepkg with --nodeps).
that i can pass --nodeps to aur-build via --margs and that it will override --syncdeps is good to know.  is it documented, or community knowledge, that makepkg will in fact ignore an earlier --syncdeps in favor of a later --nodeps?
thanks for the pointer at .SRCINFO.  i'm a bit of a newbie with AUR stuff.  i'll convert to it.
in terms of --no-view, also being a newbie, i couldn't really figure out the purpose.  i guess the idea is that i shouldn't really trust AUR packages, and therefore should make sure a package i'm about to install seems to be doing safe things?  that makes sense, and i will reform.  :)
the dependency depth is probably doable in awk, though i haven't looked at aur-graph to really see how it is working; data structures in awk are pretty complete.  if you'd like me to look at that, let me know (and, the output you'd like to see).

is it documented, or community knowledge, that makepkg will in fact ignore an earlier --syncdeps in favor of a later --nodeps?

No, I don't think it's documented yet. The man page should mention that --margs overrides default arguments.

the dependency depth is probably doable in awk, though i haven't looked at aur-graph to really see how it is working; data structures in awk are pretty complete. if you'd like me to look at that, let me know (and, the output you'd like to see).

Sure, feel free to take a look if you have the time. :+1:

here's some awk code.  i was lazy and i didn't look at aur-graph, but just took the --table output from aur-depends.  the code assigns a "level" number for each package: 0 for those that have no reverse make depends (i.e., the inputs to the process); N > 0 or higher for those that have reverse make depends of levels up to, but not including N.
if the file my-packages.txt includes the (AUR) packages one is interested in, one per line, then
cat my-packages.txt | aur depends --table - | awk -f deplevel.awk | sort -n -k2

is supposed to give you a sorted list of levels.  (my own list of packages contains no loops, no long lists of dependencies [2 is the highest], etc.)
the awk code (deplevel.awk) is
#!/usr/bin/env awk -f

# collect the dependencies
$5 == "MakeDepends" {
    packages[$1]++
    packages[$2]++
    if (debug) print "added", $1, "to packages"
    if (debug) print "added", $2, "to packages"
    mdeps[$1,$2] = 1
    if (debug) print $1, "makedepends on", $2
}

# find all packages (or, for level == 0, desired packages) at a given
# level.

# a package at level zero has no reverse dependencies.

# a package at level N has at least one reverse dependency at level
# N-1, and no reverse depdencies at level N or higher

# (the ",            combined, separate, ..." is the awk "idiom" to
# specify local variables.)
function sweep(level,      combined, separate, pkg, rdep, depends, found, INF, saw) {
    if (debug) print "sweep(" level ")"
    INF = level + 1            # everything is relative
    for (combined in mdeps) {   # "Scanning multidimensional arrays"p
        split(combined, separate, SUBSEP)
        pkg = separate[2]       # this package has
        rdep = separate[1]      # this as a "reverse make depends"
        if (pkg in packages) { # only if this package's level isn't already known
            if (debug) {
                print "pkg", pkg, "; rdep", rdep, "(levels", levels[rdep] ")"
            }
            if (levels[rdep] == "") {
                saw[pkg] = INF # we don't know total story for this pkg yet
            } else if ((saw[pkg] == "") || (levels[rdep] > saw[pkg])) {
                saw[pkg] = levels[rdep]
            }
        }
    }
    found = 0
    for (pkg in packages) {
        if (debug) print pkg, "saw", saw[pkg]
        if (saw[pkg] == "") {
            saw[pkg] = -1       # *no* package depends on this one
        }
        if (saw[pkg] + 1 == level) {
            levels[pkg] = saw[pkg] + 1 # we found one
            delete packages[pkg]   # this package is done
            if (debug) {
                print pkg, "has level", levels[pkg], "; length(packages) =", length(packages)
            }
            found++
        }
    }
    if (debug) print "sweep(" level ") returning", found
    return found
}

END {
    # now, compute levels 0 ..
    level = 0
    while (sweep(level)) {
        level++
    }

    # error check -- we *hope* that all packages have been computed.
    # i don't see how this wouldn't be the case.  but, ...
    if (length(packages)) {
        print "error: can't compute for package(s):" > "/dev/stderr"
        for (pkg in packages) {
            print pkg
        }
        exit 2
    }

    # generate the output
    for (pkg in levels) {
        print pkg, levels[pkg]
    }

    exit 0
}

and, i will (hopefully) look at DAG.

btw, the above awk script leaves a few things to be desired.  a script with fewer things left to be desired is available.
one still unresolved issue is how to (efficiently) tell if a candidate package is a virtual package, like sh or smtp-server.  pactree is fast, but is not a current dependency:
pactree imagemagick | grep " provides " | sed -E 's/^[^[:alpha:]]*//' | cut -f3 -d" " | sort -u

(and, the grepping/sedding is a bit of a hack.)

the maintainer of gawk-xml points out that in a PKGBUILD file, depends lists any dependencies needed to build the package that are also needed to run the package (runtime dependencies).  so, those dependencies will not be listed in makedepends.
  makedepends

  An array of packages that are only required to build the software.
  The minimum dependency version can be specified in the same format
  as in the depends array. The packages in the depends array are
  implicitly required to build the package, they should not be
  duplicated here.

Well, that's one interpretation. PKGBUILD(5) only lists the following:
depends (array)
An array of packages this package depends on to run. [...] If the dependency name appears to be a library (ends with .so), makepkg will try to find a binary that depends on the library in the built package and append the version needed by the binary. Appending the version yourself disables automatic detection.
makedepends (array)
An array of packages this package depends on to build but are not needed at runtime. Packages in this list follow the same format as depends.
As I was testing this with ros-noetic-desktop, I got side-tracked with the newly introduced rate limiting on AUR git repositories. Anyway, my basic idea to implement this is the following:

Retrieve all source files and inspect them with aur-sync --no-build
Run aur-depends + deplevel.awk to get dependency layers (this is less than ideal because aur-sync already ran aur-depends with the same arguments)
For each make/depends layer, build AUR packages, then install them (sudo pacman -S --asdeps) together with repo make/depends assuming there are no package conflicts. To allow for easy removal later, keep a package of which packages have been installed (and possibly removed). Then proceed to the next layer.
(optional) if some packages fail to build, continue building any that are left on the same layer. This is similar to what ninja(1) does if AUR_SYNC_USE_NINJA is enabled.
After completing layer 0, remove all installed make/depends.

Regarding provides: aur-graph handles provides, but not the deplevel stuff. Perhaps a new aur-graph could combine the provides and dependency tree functionality, but leave .SRCINFO parsing to a different tool. (that is, the input would be a table or package -> dependency edges).
On Sat, 30 Jul 2022 21:54:02 -0700
greg-minshall @.***> wrote:

the maintainer of gawk-xml points out that in a PKGBUILD file, depends lists any dependencies needed to build the package that are also needed to run the package (runtime dependencies).  so, those dependencies will not be listed in makedepends.
  makedepends

  An array of packages that are only required to build the software.
  The minimum dependency version can be specified in the same format
  as in the depends array. The packages in the depends array are
  implicitly required to build the package, they should not be
  duplicated here.

--
Reply to this email directly or view it on GitHub:
https://github.com/AladW/aurutils/issues/1012#issuecomment-1200348358
You are receiving this because you commented.
Message ID: @.***>

--
alad @.***>

that sounds good.  one point that maybe you already had in mind:

For each make/depends layer, build AUR packages, then install them (sudo pacman -S --asdeps) together with repo make/depends assuming there are no package conflicts.

i would have two separate steps for this (on each layer).  the first -- building the AUR packages -- can take an arbitrary amount of time (downloading, building), but doesn't require sudo.  the second -- installing them -- should run very quickly, but does require sudo (and, therefore, the user's attention).  thus, the user can walk away during the build, come back and quickly do the install part.  then, walk away again while the next layer builds.  maybe the UI could (optionally) be something like, "wait for a user confirmation after building, but right before installing, each layer".
(thanks for --asdeps.)

The problem with not installing them is if they are dependencies for subsequent builds in the chain.

@Earnestly yes.  the procedure i was thinking of is, for each "link" in the chain, do the non-sudo parts first (downloading, patching, building, installing in the local aurutils repository).  then, pausing
press ENTER to sudo:

after which, doing the sudo pacman -S ... (or whatever it would be).  then, repeating for the next "link" in the chain.
that way, by the time a package needs a (make) dependency, that dependency will have already been installed in a previous "link" of the chain.

This is something I once wanted to look into: Directed Acyclic Graphs with Parallel Regions.
For example to build vi one gets this dependency graph:

Here filesystem, linux-api-system and tzdata can be built in parallel, as can glibc and glibc2 afterwards (not sure what glibc2 is here).
I'm sure there's probably literature on this form but I didn't dig too deeply.

@Earnestly indeed, i think, while not the optimal parallelization, one can run all the builds in a single make/dependency layer in parallel.  cheers.

if you look at this nice video with Brian Kernighan about awk, you'll (somewhere) hear him point out that awk programs start small, but often get longer than reasonable.
here is an example (which will expire in a year).  this purports to produce the DAG.
echo ros-noetic-desktop | \
    aur depends --table - | \
    ./depdag.awk SEEDS=ros-noetic-desktop | \
    sort -u | \
    less

(in this case, of ros-noetic-desktop, the sort -u takes a very long time, reducing the output from about 5 million lines to less than 500 thousand lines; patches welcome.)
basically, you feed depdag.awk a table from aur depends for a given set of AUR packages you wish to install; you also specify those packages as the SEEDS variable to depdag.awk itself.  if i have a list of AUR packages to install, i might invoke depdag.awk like this:
cat my-packages.txt | \
    grep -v python-mistletoe | \
    aur depends --table - | \
    ./depdag.awk debug=0 SEEDS="`cat my-packages.txt`" | \
    sort -u | \
    less

here's something one might apply to the output file to rank dependencies (and the seeds); higher numbers should be built and installed before lower numbers.
  echo ros-noetic-desktop | \
      aur depends --table - | \
      ./depdag.awk SEEDS=ros-noetic-desktop | \
      sort -u | \
      awk '
  {
   for (i = 1; i <= NF; i++) {
     level = i;
     pkg = $level;
     if (level > levels[pkg]) {
       levels[pkg] = level
     }
   }
  }

  END {
    for (i in levels) {
      print levels[i], i
    }
  }
  ' | \
      sort -nr | \
      less

feedback welcome.  cheers.

there's an "optimization" one can do.  if A makedepends on B, and B depends on C, the above will normally output something like
% echo -e 'A B x x MakeDepends\nB C x x Depends' | ./depdag.awk SEEDS=A
A B C

but, in fact, C doesn't need to be available until B runs, i.e., when A is being built.  there is a LABEL=yes parameter (yes could be anything other than blank or 0) which prepends a tag before each dependency specifying whether that dependency is a makedepends (mdep, for brevity) or depends (dep):
% echo -e 'A B x x MakeDepends\nB C x x Depends' | ./depdag.awk SEEDS=A LABEL=yes
A mdep B dep C

when determining levels, a depends dependency can be built at the same level as its nearest makedepends ancestor (which, in fact, means, "as its parent").
(there are LABELWITH and LABELSEP parameters to customize the output.)
then, with a reasonable-sized awk-script
% echo -e 'A B x x MakeDepends\nB C x x Depends' | \
   ./depdag.awk SEEDS=A LABEL=yes | \
   awk '{ level = 1; for (i = 2; i < NF; i += 2) { if ($i == "mdep") level++; $i = level }; print}'
A 2 B 2 C

where the number preceding each dependency shows the level for that dependency (higher levels need to be built before lower levels).
if one of the seeds has a depends dependency, that will show up at level 1 on that line.
% echo -e 'A B x x Depends' | \
    ./depdag.awk SEEDS=A LABEL=yes | \
    awk '{ level = 1; for (i = 2; i < NF; i += 2) { if ($i == "mdep") level++; $i = level }; print}'
A 1 B
% echo -e 'A B x x Depends\nC B x x MakeDepends' | \
    ./depdag.awk SEEDS=A,C LABEL=yes |  \
    awk '{ level = 1; for (i = 2; i < NF; i += 2) { if ($i == "mdep") level++; $i = level }; print}'
A 1 B
C 2 B

Here is an example of how to use the <details> HTML element to post large documents without it always taking up a lot of room:

depdag.awk
#!/usr/bin/env -S awk -f

# XXX this doesn't know how to deal with "virtual provisions"
# (PKGBUILD `provides`), such as `bash` providing `sh`, "smtp-server".
# so, if `sh` is provided by `bash` (all within pacman), we will still
# output `sh`, as if it is *not* in pacman.  if we rely on pactree

# XXX how to deal with version numbers

# 1. if A `makedepends` on B, and B `depends` on C, then, effectively,
#    A `makedepends` on C.

# 2. and, if A is a seed, and A `depends` on B, then B should be
#    (basically) a seed, also.

# so, for 1
# : A B
# : A C
# and, for 2
# : A
# : B

# to implement, when processing `depends`, ellide "package".

# NB: if A both `depends` and `makedepends` on B, B should be treated
# as `makedepends`.  i.e., B needs ot be installed before A is built.

BEGIN {
    # default options

    # do we "memoize", i.e., short cut calculations we've done before,
    # returning the previous results (speeds up processing, at penalty
    # of suffering some possible code bug[s])
    MEMOIZE = 1

    # should we prefix each dependency on a line with a label to
    # differentiate "makedepends" from "depends"
    LABEL = ""
    LABELWITH = "mdep,dep"
    LABELSEP = " "

    # XXX name "our" aurutils respository is known to pacman
    aurutils = "aurutils"

    # separator between dependencies in one chain
    SEP = " "
}

# this is my way of allowing defaults to be set (in the "BEGIN" clause
# above), and variables to be set on the command line using the
# "foo=bar" notation.
NR == 1 {
    # this is the list of seeds, i.e., the roots of the graphs
    if (debug) print "SEEDS: '" SEEDS "'"

    if (! SEEDS) {
        print "need to specify (comma-separated) seeds: -v SEEDS=pkga,pkgb" > "/dev/stderr"
        exit 1
    }

    split(SEEDS, x, "[ ,\n]")
    for (i in x) {
        if (x[i] in seeds) {
            seeds[x[i]]++
        } else {
            seeds[x[i]] = 1
        }
    }

    for (seed in seeds) {
        ndepends[seed] = 0
    }

    initpaclist()

    # process label parameters
    if (LABEL) {
        # if we are labeling, what labels to use: a comma-separated list
        # of two "labels"
        if (!LABELWITH) {
            LABELWITH = "mdep,dep"
        }
        # now, process LABELWITH
        split(LABELWITH, labelwith, ",");
        # portably determine length of labelwith
        len = 0;
        for (i in labelwith) {
            len++;
        }
        if (len != 2) {
            print "invalid \"LABELWITH\" (should be a string of two elements, separated by a comma)" > "/dev/stderr"
            exit(1)
        }
        # set up assoc array for ease of computing
        labels["makedepends"] = labelwith[1]
        labels["depends"] = labelwith[2]

        # how the label should be separated from the dependency in
        # question
        if (!LABELSEP) {
            LABELSEP = " "
        }
    }

}

# collect the dependencies
$5 == "MakeDepends" || $5 == "Depends" {
    if (! ($2 in paclist)) {
        # get all the ndepends set to 0
        if (! ($1 in ndepends)) {
            ndepends[$1] = 0
        }
        if (!($2 in ndepends)) {
            ndepends[$2] = 0
        }
        # find location of this entry XXX this means we "loose track"
        # of duplicates, e.g., a "makedepends" and a "depends" on the
        # same package from the same package.  i'm not sure if this is
        # a feature or a bug.  i don't think i need to do this; but,
        # it's in the code right now.  and, removing it causes
        # "Killed" because of memory consumption (with
        # ros-noetic-desktop).
        if ($1 SUBSEP $2 in location) {
            where = location[$1,$2]
        } else {
            # if not there, enter this dependency for this package
            where = ndepends[$1]++
            depends[$1,where] = $2
            location[$1,$2] = where
        }
        if (debug) print $1, tolower($5), "on", $2, "(" ndeps($1) ")"
        # now, what "flavor" of dependency is this?  favor the
        # `makedepends flavor over all else (i.e., over blank, or
        # `depends`)
        if (($1 SUBSEP where in flavors) && (flavors[$1,where] == "makedepends")) {
            # do nothing (i.e., don't change it
        } else {
            flavors[$1,where] = tolower($5)
        }
        if (debug) print "[" NR "] flavors[" $1 "," where "]", flavors[$1,where], $0
    }
}

# we need to know which packages pacman knows about, that do not come
# from *our* "aurutils" repository (named by the awk variable
# `aurutils`).  initialize this list.
function initpaclist(       cmd, fregex, save) {
    save = $0      # save $0 (restored at end)
    # https://bbs.archlinux.org/viewtopic.php?id=187277
    cmd = "pacman -Ss | grep -v '^ '" # this generates a list of all pacman knows about
    fregex = "^" aurutils "/"
    while ((cmd | getline) > 0) {
        if ($0 !~ fregex) {
            if (debug > 9) print "accepted", $0
            sub("^.*/", "", $1)
            if (debug > 9) print "converted to", $1
            if ($1 in paclist) {
                paclist[$1]++
            } else {
                paclist[$1] = 1
            }
        } else {
            if (debug > 9) print "rejected", $0
        }
    }
    close(cmd)
    if (debug > 9) print "initpaclist done"
    $0 = save
}

function ndeps(package,                      i, result) {
    if (ndepends[package]) {
        result = "ndepends: " ndepends[package]
        for (i = 0; i < ndepends[package]; i++) {
            result = result " " depends[package,i]
        }
        return result
    } else {
        return ""
    }
}

# compute the dependency graph for PACKAGE considered as a FLAVOR
# ("makedepends" or "depends").  the output is a string of
# (newline-separated) lines; each line lists a different dependency
# chain, starting from PACKAGE.  so, if A depends on B, and B in turn
# depends on B' and B'' (which themselves have no dependencies), then
# the output might be
#
# A B B'
#
# A B B''

# (the ", i, computed, result, line, nl, junk" is the awk "idiom"
# to specify local variables.)
function compute(package, level,                          i, computed, result, nl, sep, junk, dep, label) {
    if (debug) print "[" level "] computing", package, ndeps(package)
    if (package in results) {
        result = results[package]
        if (debug) {
            junk = result
            gsub("\n", "\n\t", junk)
            print "[" level "]", "returning result: " junk
        }
        return result
    }
    if (package in paclist) {
        print "paclist[" package "] !!!" > "/dev/stderr"
        exit 4
    }
    result = ""
    if (ndepends[package]) {
        nl = ""
        sep = SEP
        for (i = 0; i < ndepends[package]; i++) {
            dep = depends[package,i]
            if (LABEL) {
                label = labels[flavors[package,i]] LABELSEP
            } else {
                label = ""
            }
            computed = compute(dep, level + 1);
            # need to put the name of *this* package in front of each line
            gsub("\n", "\n" package sep label, computed)
            result = result nl package sep label computed
            nl = "\n"  # subsequent dependency chains are separated by a newline
            sep = SEP
        }
    } else {
        result = package
    }
    if (debug) {
        junk = result
        gsub("\n", "\n\t", junk)
        print "[" level "]", "returning result: " junk
    }
    if (MEMOIZE) {
        results[package] = result
    }
    return result
}

END {
    if (debug) print "seeding"
    if (debug) fflush("/dev/stdout")
    for (seed in seeds) {
        if (debug) print "seed computing", seed
        result = compute(seed, 1)
        if (debug) print "seed printing", seed
        print result
        if (debug) fflush("/dev/stdout")
    }

    exit 0
}

@Earnestly thank you, very much!  for future reference, something like
<details>
<summary>depdag.awk</summary>

```
#!/usr/bin/env -S awk -f

# XXX this doesn't know how to deal with "virtual provisions"
# (PKGBUILD `provides`), such as `bash`
...
    exit 0
}
```
</details>

The blank lines (\n\n) between ``` and <summary> and </details> are necessary as otherwise the "code" portion is interpreted strangely as markdown.

This looks like some great work. Thanks for your continued efforts on this.
Regarding provides, I think the main issue is how to describe something is an actual provides. aur-graph knows this because it looks directly at .SRCINFO, but when the input stems from aur depends --table, things are less clear: any Depends or MakeDepends could be a package name, provided by a different package name, or both.
Perhaps the --table output could include a fifth column, stating which provides are available. If there are none, it would default to pkgname.
XXX how to deal with version numbers

It should suffice to split a depends on <, >, <=, >=, or = and use vercmp accordingly. Note that vercmp would only be run if there is an operator (most dependencies are unversioned and running vercmp once per package should be avoided).

thanks for the reply.  so, the first thing my code in my makefile does is decide which of the dependencies are pacman and then pacman -S all of those.  so, for provides, one "requirement" is to be able to figure that out fairly easily.
how does aur-graph know which packages, e.g., "provide" shell?  you mention it looks in .SRCINFO files.  but, if none of sh, bash, etc., are downloaded, where does it get this information?  it seems like you have to have the entire databases (both pacman and aur) to know this.  are there RPC queries that can be used to ask this?  (sorry for my ignorance/inexperience.)
cheers, Greg

You're absolutely right that it doesn't handle repo provides. It does, however, deal with any provides that are part of AUR packages in the dependency chain - e.g. aurutils-git would provide aurutils.
For a related issue, see https://github.com/AladW/aurutils/issues/837

https://github.com/AladW/aurutils/commit/dbdfe61d94cfed96d3780724fde941b05ff87956 added aur-depends --raw. This way you can use aur-format to get a table with any information you need, including provides. For example:
aur depends --raw | aur format --union Name -f '%n:%P\t%b\t%v\t%D\t%M\n' --delim=,

would have name:provides1,provides2,... in the first column and similarly depends1,depends2,..., makedepends1,makedepends2,... in the last two columns. This includes any versioned dependencies or provides.


Update installation instructions to use miniforge/mamba

Addresses #391

A couple of links to NOAA NCEI are failing. These are due to impacts from Hurricane Helene and should eventually work again.

Ignoring the expected link check failures in order to finally get this in.


Upgrade Brotli4j to 1.9.0

Motivation:
Brotli4j 1.9.0 is released and we should upgrade to it.
Modification:
Upgraded Brotli4j from 1.8.0 to 1.9.0.
Result:
Latest version of Brotli4j

Thanks!


exception button bar

Needed for Alpha to notify user when a bug occurs
TODO:

[ ] Report issue button (link to GH)

#615


Support for asking user password input in kernels

While PR #107 enables user input api in Jupyter environment would be useful to have a gesture to request password input making sure that the object returned is kept obfuscated and never logged or stored

I believe this one can be closed now 😄


collision name with table fields

Hi,
It seems Propel uses un-prefixed names in model generation, which results in collision with table fields such as deleted/new which also results in collision with methods such as setDeleted()
so i think it's best to rename the default methods or prefix the table fields

Is someone able to make a PR here with suggested changes?


⚠ Bofrost.es has degraded performance

In a28c6cb, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1454 ms

Resolved: Bofrost.es performance has improved in 5a724b5 after 27 minutes.


HDDS-1995. Generate renewTime on OMLeader for GetDelegationToken

What changes were proposed in this pull request?
Use renewTimeInterval of the OM leader across quorum of OM's.
Right now each OM generates renew time when updating token in-memory and DB using its own configured HDDS_BLOCK_TOKEN_EXPIRY_TIME.
If different OM's have different token renew interval set, for the same token we will have different renewal time across a quorum of OM's.
This Jira is to fix this issue.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-1995
How was this patch tested?
Currently no unit tests for GetDelegationTokenRequest. Will be added in https://issues.apache.org/jira/browse/HDDS-3178

Test failure is unrelated to this PR.

Thank you @hanishakoneru for the contribution.

One more issue is for a token generated, it will use leader token renewal time. But if 3 OM's have different renewal time, so token generated by OM's, whenever leader changes will have a different expiry time.

One more issue is for a token generated, it will use leader token renewal time. But if 3 OM's have different renewal time, so token generated by OM's, whenever leader changes will have a different expiry time for different tokens.
Yes, but how do you propose to fix this? If the OMs have different renewal times, we cannot pick one over the other.


fix definition of how population is defined

Let's try a general label of " Population (magnitude)"
and then the first 6 choices are:
1s
10s
100s
1000s
10^4
10^5
...and so on.
This way, the first 4 choices show a simple to understand pattern, that cues even a minimally math-capable to the progression.  The label qualifier "magnitude" should reinforce/help.


add autowall and hitchance

just untick the visible only

He probably meant on the Triggerbot

just untick the visible only

He probably meant on the Triggerbot


fix typo: "double" should be times, not plus

x + 2 seems like a typo -- double should be x * 2, right?

!!! Thanks for this correction :)