[Request]: Have interaction commands' default permission set to everyone

Is your feature request related to a problem? Please describe.
Currently, the bot has its all interaction commands' permission set to administrator. While this doesn't seem to be too huge of an issue, it could cause some problems when the bot is being used in a server with members that are not roled as an administrator.
Describe the solution you'd like
Maybe have the default permission set to everyone, but still allow the option to use the old behaviour (administrator only) by setting an environment variable

Hi, thanks for your issue.
I am not sure if "everyone" having access to it by default is a good idea.
I must admit that I mostly use the bot myself though.
Would the reverse be okay?
(Having an environment variable to allow everyone)

Yeah that could be great.
I know you can override the permissions, but this require you to have access to the commands first, either way having to override all of them one by one manually, would be very tiring

so maybe you could add a command to add users to the auto-managed bot role it creates, and only the admin can use that command?
its definitely not enough to just allow administrators

Why not?
I think this is out of scope for this Discord bot.
This bot will play music - and not manage your server roles.
There are plenty of open source / free / paid bots, that have much more complex roles management.

Why not? I think this is out of scope for this Discord bot. This bot will play music - and not manage your server roles. There are plenty of open source / free / paid bots, that have much more complex roles management.

well i have over 20 people that use my jellyfin and discord server and id like them to be able to use the bot without having admin access, no other method gave them access to the bot, and if giving everyone access to the bot is bad im sure you can see why giving everyone admin access to the discord server would not be good.

Additionally, it's a bad idea to give everyone access (see https://en.m.wikipedia.org/wiki/Principle_of_least_privilege ). Admins are in charge of enforcing the correct permissions, not the bot :)

i agree that this is not the solution, but disagree that there isnt a problem. there should be a way to allow users access to commands, and the overrides didnt seem to work for me.

overrides didnt seem to work for me, if they do for you could you perhaps outline the steps to override the permissions of the commands?

I wasn't aware of that. I think I'll have to do some testing on my own and figure out the discord.js and Discord API.
Thanks for the info and clarification :)

This is something I would like as well. I was trying to set it up today and couldn't figure out why the bot was completely ignoring my commands. Then I discovered it was because I was using it in a server I was only a mod in. I COULD ask the admin to go in and edit each of the commands, but he's pretty busy and our schedules don't exactly line up anyway.
opening up the commands would be greatly appreciated!

Hi,
since more people are requesting this, than I expected, I will prioritize this for the next release.
I did some research on the topic. Generally, the official documentation advises against using this:

The slash command permissions for guilds are defaults only and can be altered by guild administrators, allowing them to configure access however best suits their moderation and server roles. Your code should not try to enforce its own permission management, as this can result in a conflict between the server-configured permissions and your bot's code.

The text explains the obvious reasons very well. For this reason, the option to do this will be disabled by default.
However, there is still a problem to solve. Discordjs API can do this imperatively using the API:
https://discordjs.guide/slash-commands/permissions.html#member-permissions
However, this bot uses the Nest.js abstraction, where this is done using a decorator:
https://github.com/fjodor-rybakov/discord-nestjs/blob/3acd3fe8435d9aa01d379ea6fcc5dde62c02a931/packages/core/src/decorators/command/base-command-options.ts#L17
This decorator is declarative, which means it can't incorporate any logic (eg. reading the environment variables).
Therefore, I am not sure yet if this will work.
I'll try out a few things and let you guys know, once I have news.

Yeah, I don't see much of a reason to keep this to admins only. Wanted to use it in a friend's server with a low amount of people and was shocked that the commands are admin locked.

I am working on this now. Hopefully I have something ready soon

appreciate it. @manuel-rw


added the Develop for good program

Successfully added the Develop for good program to the project.
Fixes #46

@ feel free to create more issues and also create more issues.


Add some spinners

Inspired by https://github.com/sindresorhus/cli-spinners

any chance of this getting merged? I'd kinda like to use a few of those..


Future Zipkin architecture (post-UI-refactoring)

The work on refactoring the UI is complete - it's now just a bundle of assets, with client-side rendering, and it talks to Zipkin via the query HTTP API.
Should we go ahead and move zipkin-web into zipkin-query? It's already been discussed, my impression is that most people want to go in that direction. In which case I suggest we change the zipkin-web gradle build; delete all the Scala code, and produce a .zip file (or .tar/tar.gz) with the static assets. Gradle basically becomes a thin wrapper around npm/webpack.
Then, zipkin-query can import that artifact as a dependency, and serve the static assets.
This means zipkin-java can also import the same dependency.
While we're at it - we could also merge zipkin-collector and zipkin-web into one application. Possibly with a configuration option to only enable the "collector" role, the "query" role, or the "all" role. Zipkin is known to be hard to deploy, operations-wise; if we could reduce the number of separate applications to run from 3 to 1, that would be a huge win. Also, from a zipkin developer perspective, I'm sure our code base could look a lot simpler, with fewer submodules.

I agree with everything you've said. For example zipkin-java calls the
server simply zipkin-server. I will be writing the Kafka listener this
week, which would be an optional module. The same base code can be
configured in clusters which have different roles, as necessary.
Ex it could be deployed to a "web" cluster or a "collection" cluster with
different heap args and options. The configuration story is easier to deal
with when there's a single entry point, and modularization at the component
level keeps the codebase clean.

Incidentally, I think @yurishiko already bundles query and web in the same
process!

Here's a rough transition plan idea:

move zipkin-web's assets and tests to a separate repo (non-gradle). This
would make it more natural to maintain.
Once above is in, have the "old zipkin-web" import those assets, so that
it is drop-in, similarly do the same in zipkin-query (I suppose adding the
config endpoint?). we cut a release where the experience from a packaging
POV is the same.
Next release would be to drop the "zipkin-web" in scala, suggesting folks
just deploy zipkin-query over their old zipkin-web deployment (should they
still want 3-tier). This also affects our docker deployments.

@abesto Do you have any input on how we could publish the UI to some remote artifact repo, and then re-fetch it for zipkin-web/zipkin-query/zipkin-java?
Maybe something like using npm to publish to bintray?

There are a lot of unknowns in this for me (that I'd be OK exploring). It looks like https://www.npmjs.com/package/bintray can be used to publish programmatically from NPM / Grunt / whatever to Bintray. The question then is what structure the uploaded package should have. I have practically zero experience on that front, so I'll be asking for help on that front.

Let's start with #1024 as a middle ground for now?

Closing in favor of #1044.


Problem with compile on Hashlink

I want to compile the game on Hashlink, but I get an error
D:\Projects\hashlink\src\module.c(513) : FATAL ERROR : Invalid signature for function lime@hl_audio_load_file : POBi_OiiOiOiB_iiii_iDDDDDOiD_i__OiiOiOiB_iiii_iDDDDDOiD_i_ required but POBi_OiiOiOiB_iiii_iDDDDDOiD___OiiOiOiB_iiii_iDDDDDOiD__ found in hdll
What should I do?

Are you using the Haxelib or Git version of Lime? And if Git, which branch?

Haxelib

I understand everything, it turns out I have a modified AudioBuffer, which is saved in "source / lime / media" and that's why it doesn't compile for me.


SQL Fields with invalid TS/GQL names, need to be mapped properly in the Repo

A SQL field with the name 123test is renamed to _123test in TS/GQL. However, there is no mapping between the two. This should happen in the Repo

Fixed in 0.1.3


Closes #7 by adding a Tweet molecule component

Adds the molecule component called 'tweet' that has props to embed a tweet. The molecule has dark theme and do-not-track by default. There's a script that will only conditionally include the third-party script when a tweet is present on the page.

Confirmed, merged, and closed myself


[spi_host, dv] Add baseline DV for csr_test

Add baseline DV for csr_test

add spi_host_agent (device mode)
add env dv supports *csr tests
add tb.sv with 2 independent clock and reset sources
add spi_host_testplan.hjson to the list in build_docs.py script

Signed-off-by: Hoang Tung<EMAIL_ADDRESS>

@weicaiyang PR is updated to address your comments

Reopen this PR due to accidentally closing


Remove email validations using Sendgrid

Using the Sendgrid API ads significant latency to a request, anything in between
700ms and 4s.
It is unclear what value brings this validation so we've decided to remove it
and analyse the emails later on to see if it is worth reconsidering the problem.

I've left the Sendgrid client code so that we can analyse the emails later on. It can be deleted later on if we keep this approach.

How satisfying to remove all this code :)


ants registration

STYLE: Revert "STYLE: Rename in files ANTS -> ANTs"
STYLE: Revert "STYLE: Rename files ANTS -> ANTs"
ENH: Bump Python package version to 0.4rc3

We need the Python snake case function to be:
ants_registration

not
an_ts_registration


[JWT] Adding jwt secondary validatory (validating exp in payload)

In order to reduce false positive in SCA, it was decided to add a secondary validator that would consider non valid JWT and expired JWT as false positive
This decoding part of the base64 token has been largely inspired by other repo such as https://github.com/GildedHonour/frank_jwt (decoding base64 + extracting its json, fairly straightforward)
JIRA

@vinckama thanks for the review and as always good comments. I addressed them let me know what you think


How to guide out of order

The guide on "Manage Workbench Users" should really be listed before the "Create blockchain app" since without assigning an admin no one can create an app
Referring to this link:
https://docs.microsoft.com/en-us/azure/blockchain-workbench/blockchain-workbench-create-app
Left hand side, under "How-to guides"

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

ID: 6aafd72c-d1d2-9514-3bc1-cc1022a02d95
Version Independent ID: a737a1cb-3cf1-402a-d243-afb673cc76df
Content: Create a blockchain application in Azure Blockchain Workbench
Content Source: articles/blockchain-workbench/blockchain-workbench-create-app.md
Service: azure-blockchain
GitHub Login: @PatAltimore
Microsoft Alias: patricka

@injector22 Thank you for the feedback!  I will assign this to the document author so they can make changes accordingly.

@injector22 Thanks for the feedback.   Your suggestion is the original ordering of the TOC. I received feedback that it makes more sense to create an application first and then manage users.  So, I switched them. The ordering issue is caused by configuring workbench administrators and application member in the same article. So, there's a pre-req in "create" to add and administrator. There are some changes coming to simplify "pre-configuration".  Ordering issues should be minimized in the future.

@injector22 I'm going to leave the order as is. I'll put this feedback on the backlog and work on ordering for future release. I'm requesting this issue be closed. #please-close
Thanks,
Pat


⚠ WSINGRESOS - GENERICO has degraded performance

In 9ced500, WSINGRESOS - GENERICO (https://srvshyweb.yucatan.gob.mx/cgi-bin/wspd_cgi.sh/WService=wsingresos/internet/servicios/wsGenericoPagosWeb.r) experienced degraded performance:

HTTP code: 200
Response time: 6200 ms

Resolved: WSINGRESOS - GENERICO performance has improved in e66c408 after 19 minutes.


Fix replication concurrency

This PR fixes replication concurrency in OrbitDB.
Long ago we made the changes in ipfs-log to support parallel fetching of entries but those updates never made it into OrbitDB side. This PR adds those changes thus adding full replication concurrency support to OrbitDB. This in turn means that databases are replicated faster than before in addition to loading faster than before.
This has a major impact on the perceived (and actual) speed of OrbitDB 🎉
This PR depends on https://github.com/orbitdb/orbit-db-store/pull/117 and https://github.com/orbitdb/ipfs-log/pull/340.

This PR also depends on https://github.com/orbitdb/orbit-db-counterstore/pull/44

Tests seem to pass now reliably, beside the random times when ipfs can't find peers. Need to still do a bit of clean up.


[#806] Fix Goblins TH-splicing for GHCi

I'm pulling in a dependency on https://hackage.haskell.org/package/file-embed, which we could arguably reimplement, if we don't want the dependency. The function is fairly straightforward: https://hackage.haskell.org/package/file-embed-0.0.11/docs/src/Data.FileEmbed.html#makeRelativeToProject

Sorry, this isn't ready for review yet. There are issues with Windows & TH which are turning out to be a bit of a nightmare.


No way to flush multiline events

There's no way to specify a flush interval, which means that a multiline event is only ever delivered after the next event is delivered. This can cause some headaches in production - if you log a multiline error, fluentd won't output it until at least one more message has been logged.
For example, the following config and input will hang forever with no output
<source>
  type tail
  path /var/log/*.log
  pos_file /var/log/varlog.log.pos
  format json
  tag jsonlog.*
  read_from_head true
</source>

<filter jsonlog.**>
  @type concat
  key log
  stream_identity_key container_id
  multiline_start_regexp /^\S+/
</filter>

<match **>
  type stdout
</match>

{"log":"Error connecting to database...","stream":"stdout","time":"2016-04-15T19:25:46.655449074Z", "container_id": "1234"}
{"log":"  sadly this stacktrace","stream":"stdout","time":"2016-04-15T19:25:46.655490401Z", "container_id": "1234"}
{"log":"  and associated error message","stream":"stdout","time":"2016-04-15T19:25:46.655498254Z", "container_id": "1234"}
{"log":"  will not be delivered for an indeterminate time","stream":"stdout","time":"2016-04-15T19:25:46.65550259Z", "container_id": "1234"}

Some sort of background job should run through all the in-flight multiline buffers and flush them after a timeout has expired.

Thank you for reporting issue.
I think this is very important issue.
I will try to fix this issue in next week.

Support flush interval and release v0.4.0!
@dpratt please try it!


from rdkit.Chem import AllChem has grown a six dependency

Description:
EnumerateStereoIsomers imports the six module which is now an unspoken dependency.
This should be "from rdkit import six" I believe.
@coleb @greglandrum

resolved by #1638
@bp-kelley : please re-open if that's not true.


Cesium should stop rendering when the browser is not active

Wondering if it might be useful to use the Visibility API to pause rendering of cesium while the page is not visible to save battery life?
http://www.smashingmagazine.com/2015/01/20/creating-sites-with-the-page-visibility-api/

@mmacaula it's a possibility but the user may not want to stop processing just because it's in the background (for example if you are loading a large data set).  And browsers already stop rendering if you are on a separate tab or minimized.
In either case, we already have #1865 for this issue, so I'm going to close this.  There's also a mailing list discussion about it at https://groups.google.com/forum/#!topic/cesium-dev/cGXhVoUacMg

Fair enough, thanks as always for the super fast response @mramato !


root application in rtmp

I defined application config as this:
rtmp {
    server {
        listen 1935;
        application / {
            live on;
        }
    }
}

And checked with FFMPEG
ffmpeg -i Princess.avi -f flv rtmp://localhost/massoud
It won't work :| but when I change application to something like myApp it works. Any idea?
Thanks

Why do you want the root system to be writeable?
Always is a good practice to use a subdirectory writeable for the application, something like /tmp/live

Thanks for answer... I don't want to have an application name in my RTMP address e.g rtmp://localhost/massoud use massoud as streamName just that :)

I guess you are confusing directories with application name.
As far as I know, is mandatory the application name.
I suggest ingest the video with rtmp and play it with HLS

No... I know it's mandatory but I want to delete the application name from the first request and pass it to an another RTMP server with 3xx redirection and put my app name is second RTMP config. I don't need to have an application name in my first RTMP server.

I understand what you want to do.
Instead using a redirect I recomend trying to use a proxy. Here I found something http://serverfault.com/questions/622141/rtmp-proxy-server

Thanks but that's just a pull and not wy answer... I just want to have this format in first RTMP request  rtmp://localhost/streamName without application name... Thanks for this incredible repo anyway

I don't know if its possible to stream rtmp without an application name, I guess not. I did a search online and didn't find anything. =(

Maybe modifying the c++ module code and compile it. But that's another story

Thanks I thought I have to do this I can do it and push that in this repo. Thanks :)


We need a colour scheme and branding for the service

What?

UI elements
Font styles
Emails

Why?

We need something that reflects the nature and ownership of the service

Canada.ca's most recent design uses Lato as its main display font - could be a good candidate.


Add tooltip to the node selection

Description
A clear description of the bug is:
Based on the comment here, automation and manual node selection did have a tooltip: https://github.com/threefoldtech/home/issues/1466#issuecomment-1817854334.

but it doesn't anymore, and it looked a lot more helpful for the user to have them again.

verified on devnet
version : 3b91b1f
the tool tip message is visible now and clear and not confusing

Verified:

Devnet
76f44e6


Example that uses the 9p backend

I see that in theory at least there's some 9p support in HyperKit, which is awesome, but I don't see any obvious examples of how to use it, in tests or anywhere else. Can someone point me in the right direction, or add something to the tests?

I see that at least in the current implementation, it expects to be plugged into a 9p server. In the longer term, it might be more user-friendly to allow users to run hyperkit and pass folders in to be shared and have the hyperkit executable take care of serving up the 9p stuff.

Hi @copumpkin

I don't see any obvious examples of how to use it

It is (briefly) documented in the hyperkit man page (hyperkit.1 in the repo). There's also a little bit of info in https://github.com/docker/hyperkit/pull/3 including links to some possible backends.

@ijc25 that makes sense, thanks. Any thoughts on whether incorporating 9p directly into the runner is planned? For now I'll run my own daemon, but it'd be nice not to need to do that. Makes it hard to run a short-lived VM inside a script if I need to set up concurrent processes and make sure to clean them up, etc.

I'm not aware of anyone who is planning to implement such a thing.

Alright, thanks.


Fix regexp strings

improperly quoted regex pattern strings induce warnings when run:
mansnip:59: SyntaxWarning: invalid escape sequence '\s'
  '^\s*',
mansnip:62: SyntaxWarning: invalid escape sequence '\+'
  '(\+\||)',
mansnip:69: SyntaxWarning: invalid escape sequence '\s'
  '([\s_\[=].*|, .*|)',
mansnip:76: SyntaxWarning: invalid escape sequence '\s'
  '([\s_\[=].*|)',
mansnip:84: SyntaxWarning: invalid escape sequence '\s'
  getopts_simple_re = '^\s+(-{1,2}\w+\s?\w*)+\s*$'
mansnip:112: SyntaxWarning: invalid escape sequence '\['
  clean_ansi = lambda w: re.sub('(.\x08|\x1B\[\d*m)', '', w)
mansnip:148: SyntaxWarning: invalid escape sequence '\s'
  indent = re.match('^(\s*)', line).end()
mansnip:324: SyntaxWarning: invalid escape sequence '\s'
  buf[0] = re.sub('^\s{%d}' % rs, '', buf[0])

(tested with python 3.12)

My notifications window is a flood of garbage. Sorry I don't see these. Let me try this out.

behavior confirmed with 3.12.1. Checking your fix now.

ok i tested it and the test behavior is identical. The tests are pretty out of date - not robust to man page updates. I should probably figure that out.
Thanks for the patch


Website skipped running migrations to avoid modifying an arbitrary database. If you'd like to run migrations on this database, remove the safety check in SiteInitialization.RunMigrations method.

We tested Serenity in our dev environment and didn't see this message. We are building a UI for some existing tables in a database and when we published the changes to production we got this (very scary) message:

Website skipped running migrations to avoid modifying an arbitrary database. If you'd like to run migrations on this database, remove the safety check in SiteInitialization.RunMigrations method.

This makes me worry that Serenity will someone make unwanted changes to our production database without us knowing.
How can I be sure that Serenity will never change our database structure in production?
Any ideas on why we didn't see this message in dev but we did in production?

A description is here.
https://github.com/volkanceylan/Serene/blob/master/Serene/Serene.Web/App_Start/SiteInitialization.Migrations.cs#L156

Serenity cares about you, plays safe and doesn't run migrations that will create users, roles etc. on a production database. You didn't get that in development because your DB name was something like MyProject_Default_v1 which is the default one it creates. I really don't understand what is so scary about that.

Thanks for your reply; I think I understand what happened. Because our production server doesn't have the localdb engine installed, we migrated the "MyProject_Default_v1" database aka the "Administration DB" to a regular SQL Server database. That's why it was different than dev.

So is the error message only applicable to the "Administration DB"?

Even though we close the error at the top of the page, it keeps coming back. Is there a way to hide it forever?

Very nice project, BTW. You guys do great work! :)
Thanks again.

Remove the check


change the event from 'devicemotion' to 'deviceorientation'

when i ran this lib's code in Chrome, i found that :

[Deprecation] The devicemotion event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

when i modified the event from 'devicemotion' to 'deviceorientation', i also got the same warning!

DeviceMotionEventAndVibrate.html:81 [Deprecation] The deviceorientation event is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

Why you choose  'devicemotion' not  'deviceorientation' to wrote this lib? 3ks in advance.

The solution here is to update your site to HTTPS.


Configuration update: document id as non required param

Fixnuto od verze 0.2.3 https://github.com/keboola/elastic-writer/pull/9


⚠ Bofrost.at has degraded performance

In adb92a8, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1522 ms

Resolved: Bofrost.at performance has improved in 06e7b17.


Some font-awesome icons are missing

comments-o and comments are missing .
Please add them ASAP!

http://fontello.com/#search=chat


How to set automatic width to the bar chart

Hello,
The problem is that I have too many labels sometimes (it depends on the request).
when I have more than 200 labels :

only 3 labels :

So, I want to set automatic width to the component so it always fits all the labels ( the parent div is set to overflow-x:scroll , so there is no problem even if the width is more than 5000)
Thank you,

@souuu  where you able to fix this?

Hello,
Yes I have fixed this.
I have made a function in the component called calculateWidth()
which returns the width depending on the count of lables.
So after some tests I have defined manually what are the counts that make problems.
                <Bar
                    height={400}
                    width={this.calculateWidth()}
                    data={data}
                    options={options}
                />

    calculateWidth() {
        const { x } = this.props
        let length = x ? x.length : 0
        switch (true) {
            case length >= 0 && length <= 3:
                return 400
            case length >= 4 && length <= 50:
                return 1200
            case length >= 51 && length <= 100:
                return 2000
            default:
                return 5000
        }
    }

I am here for any question

Does this make the chart to be horizontal scrollable?  Reason: older than 6 months and not enough or outdated information supplied. Please re-open this issue if the problem persists, but provide more information. (including a sandbox link if possible)


KAFKA-6632: Very slow hashCode methods in Kafka Connect types

Objects.hash function is very slow method to calculate hashCode.
This PR change it to more efficient implementation.
Tests.

Simple String Schema

Original hashCode: 2995ms
My implementation: 517ms

Struct Schema

Original hashCode: 18880
My implementation: 6026

In real world application this PR increase throughput of Kafka Connect by 20%.
Committer Checklist (excluded from commit message)

[X] Verify design and implementation
[X] Verify test coverage and CI build status
[X] Verify documentation (including upgrade notes)

@hachikuji
I was thinking even about simplifying this hashCode function to use only subset of fields for hash:

name
version
optional
type
This will probably give massive speedup and still will fulfill equals/hashCode contract.
WDYT ?

PS. Patch was created because I observed very slow hashCode behavior when running Kafka Connect.

@maver1ck Reducing hashCode down to name and version might be reasonable, but I noticed they are listed as optional fields in the schema. I guess we could check the other fields only if they are not provided..
I'm actually really surprised that this is an issue given the fact that we cache the computed hash code. It sounds like you have done some profiling. Would you mind sharing the results? I'd be interested to know 1) whether we are not reusing schema objects when possible, and 2) whether the code can be refactored to not depend on these expensive checks.

I checked with latest Kafka version and don't see this problem anymore.
So cacheing hashcode is working.
Closing.


Final level cleanup

Category

[x] Content fix
[ ] New article

Ensured level names are consistent

Docs Build status updates of commit 6ca9260:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

CHANGELOG.md
:white_check_mark:Succeeded

Community/microsoft365-maturity-model--business-process.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--collaboration.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--communication.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--customization-and-development.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--people-and-communities-competency.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--search.md
:white_check_mark:Succeeded
View

Community/microsoft365-maturity-model--staff-and-training.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


two-phase processing of activation records

From @sjfink :
Right now when an activation finishes, we try to drain the logs and create the activation record as an atomic operation.
@rabbah has an idea to split the activation processing into two phases: 1. get the result and then 2. fetch the logs. The idea is that we can return the activation status immediately after step 1. without waiting for step 2., which currently must wait for the dreaded "slack".
Note that we would still not release the container to the pool until step 2. is done. So, the "slack" would not manifest as latency, but it would still impact efficiency since the container would not be reusable until the logs are drained.

done?

https://github.com/openwhisk/openwhisk/pull/868 Yes.

To clarify - done for blocking invokes (fast response is sent to client and logs/activation record written later).


Move rustc queries to hax

We would like to move as much rustc queries as we can to hax, to avoid duplicating work and to separate concerns.

After https://github.com/AeneasVerif/charon/pull/453, the remaining queries in charon are:

Getting the source text for each file in register_file;
Retrieving the appropriate MIR in get_mir.

That's it! Everything else is done via either hax::DefId or hax::FullDef. The only other direct interactions with rustc within charon are for printing errors (but see #409) and the driver callbacks.

I'm counting this as done: the intent was to deduplicate the maintenance effort between the two projects and to improve maintainability of both. This was a success, and we can track more specific points in other issues.


Fix Inventory consume_one

Since ItemStack::set_count() is bound to 1-127 inclusive it is impossible to set the count to 0. Previously consuming one from a stack of one would do nothing. Now the count is only set if there are more than one item in the stack.

Just noticed that #118 resolves this issue. I'm not sure if it would be worth merging this if #118 is going to fix it soon anyways. If so I could just close this PR and wait for #118.

Yeah a lot of the inventory stuff including this function is temporary so I wouldn't worry about it.


Use new YAML API (for ruamel.yaml >= 0.18)

The old .load() API has been removed in v0.18, as outlined in the changelog.
Closes #20
Avoids restricting the ruamel yaml version (unlike #21)

Thanks!


fix amounts to mint and deposit, swap order btyes

Trying to mint and deposit reflects a wrong amount. Proposal is to swap the order of  bytes are passed to low and high in scoI128.

Good solution! Waiting for merge

Did a quick manual test with:
let i = convert.bigNumberToI128(BigNumber(10000));
console.log("scval:", i.toXDR("base64"));
console.log("decoded:", convert.scvalToBigNumber(i).toString());

Seems to work. Thanks!


Compatible python scripts with python3

cocos2d-x version:
devices test on:
developing environments

NDK version:
Xcode version:
VS version:
browser type and version:

Steps to Reproduce:

https://blog.csdn.net/blateyang/article/details/89492570

since alpha18


Fix for issue #121

Downselects loaded jro data to correspond with supplied date.

I can certainly add it to madrigal methods. I don't see that there is any downside. Back in a few.

Changes are in

Coverage decreased (-2.2%) to 75.453% when pulling 12a7fb790a8cfd57c54ca7db19a2ea9a354222d3 on issue121 into 4bfdeb994598eb0fd786b752e3f31772006a604e on develop.

The pull passes all tests in python 2 but the push, same code, isn't passing the test because of pyglow. The directory is small, and is being deleted (or the command is being issued), but git clone fails every time. I'm going to merge as this is a pyglow and travis issue, not a pysat one.


Onboarding

Hi! I think we should add a link to this (https://url.ce.pdn.ac.lk/onboarding/ ) document from FAQ.

The following is a general idea.
There should be one place where students can find all the avenues they can take. It should have answers to questions like “how can I get started in robotics?”, “what should I do from the second year if I want to work in google after graduation?” “What is the path to becoming a university professor?”


Add "Show Password" Checkbox to Forms

This PR adds a "Show Password" checkbox below the password input fields in both forms. When the checkbox is checked, the password field's type changes to text , allowing users to see their password. When unchecked, the field type changes back to password, hiding the input text.

Nice touch!
I think this would look better if it's within the input box. E.g. an eye icon here:

Could we make that change? 👀


Vigilant feature marks cryptographically verified signatures (whose GPG key's email has been verified by github) as unverified.

There is no issue on this repo already wrt. to this technically wrong usage of the (paraphrased) phrase "(cryptographically) unverified".
What article on docs.github.com is affected?
See diff in https://github.com/github/docs/pull/8172. And below picture.

What part(s) of the article would you like to see updated?

Read https://github.com/github/docs/pull/8172.
Additional information
None, but I'll be happy to follow up/answer any questions if I haven't presented the issue in an understandable way.

Can you guys re-open this?
Ref. https://github.com/github/docs/pull/8172#issuecomment-881446508

I've now solved this myself by adding the noreply users github email to my GPG key and re-uploaded it to my github settings.
For want of a nail, a kingdom was lost.
-> For want of a new github product/initiative, they mark cryptographically verified (with verified emails) git commits as unverified - if the GPG key doesn't have the committer author email listed as an UID.


add samples on connecting to Zivid camera using Halcon C++ SDK and ge…

Added samples for connection to Zivid camera using:

GenIcam and Halcon C++ SDK
Zivid SDK and covert point cloud to Halcon format

Both samples save the point cloud to file

I am not sure if I put the samples in the right subfolder. I can also rewrite samples to a more Halcon HDev type (functional programming style) rather than object-oriented style. See example below:
Object-oriented:
pcHalcon.SetObjectModel3dAttribMod(HalconCpp::HTuple("red"), "points", Rtup);
Functional programming:
HalconCpp::ObjectModel3D::SetObjectModel3dAttribMod(pcHalcon, HalconCpp::HTuple("red"), "points", Rtup);
What do you guys think?

I am not sure if I put the samples in the right subfolder. I can also rewrite samples to a more Halcon HDev type (functional programming style) rather than object-oriented style. See example below:
Object-oriented:
HalconCpp::ObjectModel3D pcHalcon;
pcHalcon.SetObjectModel3dAttribMod(HalconCpp::HTuple("red"), "points", Rtup);
Functional programming:
HalconCpp::ObjectModel3D::SetObjectModel3dAttribMod(pcHalcon, HalconCpp::HTuple("red"), "points", Rtup);
What do you guys think?

I would put them in source/Camera/Basic/ as they are capture samples. This is if we agree that they are basic.
@torbsorb what do you think?

I am wondering whether these samples belong on cpp-extra-samples actually.
I see two reasons for this:

it is C++ code
we have CI set up for c++
I see one reason against:
cpp-extra-samples are probably not the first place to look for these samples, halcon-samples are.

However, we could do two things to deal with this: a) include links in the halcon-samples capture tutorial and in the halcon-samples Readme file to the cpp-extra-samples location of these samples.
If we keep the samples here (which is their natural place I think), we don't have control (CI) unless we set it up for this repository.
Opinions? @torbsorb @chrisasc  @trym-b @nedrebo

I can go over this on Monday if you'd like, and can wait :)

I am not sure if I put the samples in the right subfolder. I can also rewrite samples to a more Halcon HDev type (functional programming style) rather than object-oriented style. See example below:
Object-oriented:
HalconCpp::ObjectModel3D pcHalcon;
pcHalcon.SetObjectModel3dAttribMod(HalconCpp::HTuple("red"), "points", Rtup);
Functional programming:
HalconCpp::ObjectModel3D::SetObjectModel3dAttribMod(pcHalcon, HalconCpp::HTuple("red"), "points", Rtup);
What do you guys think?

I would put them in source/Camera/Basic/ as they are capture samples. This is if we agree that they are basic.
@torbsorb what do you think?

I agree with you @SatjaSivcev, basic capture

I am wondering whether these samples belong on cpp-extra-samples actually.
I see two reasons for this:
* it is C++ code

* we have CI set up for c++
  I see one reason against:

* cpp-extra-samples are probably not the first place to look for these samples, halcon-samples are.

However, we could do two things to deal with this: a) include links in the halcon-samples capture tutorial and b) in the halcon-samples Readme file to the cpp-extra-samples location of these samples.
If we keep the samples here (which is their natural place I think), we don't have control (CI) unless we set it up for this repository.
Opinions? @torbsorb @chrisasc @trym-b @nedrebo

Even if we hosted them in cpp-extra-samples it would take a while before we had CI on them. I would guess we wouldn't have a Halcon license available to build?

I am wondering whether these samples belong on cpp-extra-samples actually.
I see two reasons for this:
* it is C++ code

* we have CI set up for c++
  I see one reason against:

* cpp-extra-samples are probably not the first place to look for these samples, halcon-samples are.

However, we could do two things to deal with this: a) include links in the halcon-samples capture tutorial and b) in the halcon-samples Readme file to the cpp-extra-samples location of these samples.
If we keep the samples here (which is their natural place I think), we don't have control (CI) unless we set it up for this repository.
Opinions? @torbsorb @chrisasc @trym-b @nedrebo

Even if we hosted them in cpp-extra-samples it would take a while before we had CI on them. I would guess we wouldn't have a Halcon license available to build?

Even if we had a license available to build? What would be needed to be done? I don't understand exactly how the current CI on cpp-extra-samples works. I thought it was only opencv/eigen/pcl samples that we can't run on the CI. Hmm, maybe I have just answered my own questions. CI would have to install Halcon on its own and that is probably not simple to set up right?

I am wondering whether these samples belong on cpp-extra-samples actually.
I see two reasons for this:
* it is C++ code

* we have CI set up for c++
  I see one reason against:

* cpp-extra-samples are probably not the first place to look for these samples, halcon-samples are.

However, we could do two things to deal with this: a) include links in the halcon-samples capture tutorial and b) in the halcon-samples Readme file to the cpp-extra-samples location of these samples.
If we keep the samples here (which is their natural place I think), we don't have control (CI) unless we set it up for this repository.
Opinions? @torbsorb @chrisasc @trym-b @nedrebo

Even if we hosted them in cpp-extra-samples it would take a while before we had CI on them. I would guess we wouldn't have a Halcon license available to build?

Even if we had a license available to build? What would be needed to be done? I don't understand exactly how the current CI on cpp-extra-samples works. I thought it was only opencv/eigen/pcl samples that we can't run on the CI. Hmm, maybe I have just answered my own questions. CI would have to install Halcon on its own and that is probably not simple to set up right?

Pretty sure that you don't need a license to build. Only to run.

Great work.
@SatjaSivcev already covered most of what I would have commented on :)

Thanks for the feedback! Ready for round 2

If we had another license to work with we could set up a CI with HDevelop, which could run the Halcon C++ samples. I got quite far with when I looked at this about a year ago. We are supposed to have 4 licenses, but we only have 1. We need to get the other 3 back.

If we had another license to work with we could set up a CI with HDevelop, which could run the Halcon C++ samples. I got quite far with when I looked at this about a year ago. We are supposed to have 4 licenses, but we only have 1. We need to get the other 3 back.

But that license must be the type that works without a physical dongle?

Fixed changes only for HalconConnectUsingGenICam sample.
HalconConnectUsingZivid sample is not pushed yet

I think we should change the file names. Some suggestions:

CaputreUsingGenICam CaptureUsingZivid
CaputreWithGenICam CaptureWithZivid
CaputreViaGenICam CaptureViaZivid - my favorite
CaptureZividSDK CaptureGenICam

I can't run these samples. They compile but break at Halcon lines. Did you have to do anything with environmental variables / paths? Some manual linking?

I can't run these samples. They compile but break at Halcon lines. Did you have to do anything with environmental variables / paths? Some manual linking?

Do you have a license dongle plugged in?

I can't run these samples. They compile but break at Halcon lines. Did you have to do anything with environmental variables / paths? Some manual linking?

Do you have a license dongle plugged in?

I don't, that's it. I had a trial license that didn't require dongle but it has expired...

You will need a halcon dongle to run the code (you can compile it without)

I think we should change the file names. Some suggestions:

CaputreUsingGenICam CaptureUsingZivid
CaputreWithGenICam CaptureWithZivid
CaputreViaGenICam CaptureViaZivid - my favorite
CaptureZividSDK CaptureGenICam

Changed names, ready for next round

I see that the correct CMakeLists.txt have not been uploaded!

I see that the correct CMakeLists.txt have not been uploaded!

I think the problem is that if you just rename the file it will not recognize ti. You have to remove one and add another one after, something like that. Also, you haven't removed the old files, same reaons, renaming is adding new (not really renaming).

Ready for next round!


Let JS components handle their own initialization

Also:

Remove unused JS components.
Scope currently-online and post-form CSS.
Use the same JS component for private-topic-form and topic-form.
For the topic forms, un-expand if the form is empty and clicked
outside the form.

@glebm this looks on point. Feel free to merge at your leisure, of course, but just have one question to pick your brain on. The use of local_assigns in the partials, is there a compelling reason to use this instead of referencing the getter method that is provided to the partial? Speed? Clarity? Combination of both? It's not a pattern I've seen often, rather rarely actually, but would love to know the use cases behind it for my own personal usage.
Thanks again for everything, dude :)

If a local a is not provided, just calling a will blow up. One workaround is to do a ||= nil before using it, another is to use local_assigns[:a] directly (it's simply a hash with all the locals).


institution_id registration of NUIST

institution_id = NUIST
institution = Nanjing University of Information and Science & Technology, Nanjing, 210044, China

@peace2016 NUIST was registered back on the 4th October 2016 the current registered information is below
"NUIST":"Nanjing University of Information Science and Technology, Nanjing, 210044, China"

and can be found in CMIP6_institution_id.json. As the institution is already registered, I will close this issue - please reopen if an amendment is required


Number.bytes() doesn't return the correct suffix

>>> 1000..bytes(6)
"0.976563kB"
>>> 1024..bytes(6)
"1kB"
>>> 1000000..bytes(6)
"0.953674MB"
>>> 1048576..bytes(6)
"1MB"

As you can see by these examples, technically, it should return "1KiB" and "1MiB"
Perhaps through an option or separate function? (even though MB is always `wrong' in a technical sense, some people might prefer it ...)
Thanks :-)

Ok I'm really stretching the definition of "forever" here. This will finally be going out in v2.0.0. The method signature in the end will be precision, si, units. If si is true, the base will be 1000 instead of 1024. Additionally units is a notation for describing both which units to use and also the range. Will have a section in the docs about how to customize, but long story short for KiB you want to do this:
n.bytes(0, false, '|,Ki,Mi,Gi,Ti,Pi,Ei');

This will produce the units you're expecting.

One more change, binary can serve as a shortcut to the above, so all you have to do is:
n.bytes(0, false, 'binary');

Ok this was finally release with 2.0.0, so closing!


[NEW] SetCommand may be need more compatible with redis.

[ set key val nx px ] should be reply with "syntax error", but kvrocks can works
[ set key val px 1000 ex 1000 ] should be reply with "syntax error", but kvrocks can works.
redis supports  [ set key val keepttl ], but kvrocks not supports

Yes, kvrocks doesn't check the parameters carefully,
And currently keepttl  ,PXAT, EXAT and some other flags, kvrocks doesn't support.
Do you want to fix this and support these flags? @guoxiangCN

i 'm trying my best~

@guoxiangCN has no spare time to do that, if someone wants to do that, go ahead

comments from @PragmaTwice
I feel that it might be a bit too cumbersome to operate a vector<string> for each command to parse, and there would be a lot of duplicated logic. It might be nice to design some unified abstraction, but I haven't figured out how to do that yet.
Here are some initial ideas.
To parse SET key value [ NX | XX] [GET] [ EX seconds | PX milliseconds | EXAT unix-time-seconds | PXAT unix-time-milliseconds | KEEPTTL] (ref):
#define CHECK(x) if(!x.ok()) return parse failed
#define CHECK_ASSIGN(x, v, default) if(x == default || x == v) x = v else return parse failed

iter = parsing iterator(args...);

CHECK(iter.pick_str(&key)); // insure the arg exists, eat it and dump to `key` if exists
CHECK(iter.pick_str(&value));

while(!iter.reach_end()) {
  auto pos = iter.get_pos();

  if(iter.pick_eq("NX")) { // check the current arg is NX, eat it and return true if it is, otherwise return false
    CHECK_ASSIGN(set_flag, nx, none)
  } else if(iter.pick_eq("XX")) {
    CHECK_ASSIGN(set_flag, xx, none)
  }

  if(iter.pick_eq("GET")) {
     get_flag = true;
  }

  if(iter.pick_eq("EX")) {
    CHECK_ASSIGN(expire_flag, ex, none);
    CHECK(iter.pick_int(&expire_value));
  } else if(iter.pick_eq("PX")) {
    CHECK_ASSIGN(expire_flag, px, none);
    CHECK(iter.pick_int(&expire_value));
  } else if(iter.pick_eq("EXAT")) {
    CHECK_ASSIGN(expire_flag, exat, none);
    CHECK(iter.pick_int(&expire_value));
  } else if(iter.pick_eq("PXAT")) {
    CHECK_ASSIGN(expire_flag, pxat, none);
    CHECK(iter.pick_int(&expire_value));
  } else if(iter.pick_eq("KEEPTTL")) {
    CHECK_ASSIGN(expire_flag, keepttl, none);
  }

  if(iter.at(pos)) return parse failed;
}

or a shorter version with string literal as enums:
#define CHECK_ASSIGN(x, v) if(x == nullptr || x == v) x = v else return parse failed

const char *iter.pick_eq_literals(const char *strs[]) {
  for(str : strs) {
    if(iter.pick_eq(str)) return str;
  }
  return nullptr;
}

iter = parsing iterator(args...);

CHECK(iter.pick_str(&key));
CHECK(iter.pick_str(&value));

while(!iter.reach_end()) {
  auto pos = iter.get_pos();

  if(new_set_flag = iter.pick_eq_literals("NX", "XX")) {
    CHECK_ASSIGN(set_flag, new_set_flag)
  }

  if(iter.pick_eq("GET")) {
     get_flag = true
  }

  if(new_expire_flag = iter.pick_eq_literals("EX", "PX", "EXAT", "PXAT", "KEEPTTL")) {
    CHECK_ASSIGN(expire_flag, new_expire_flag);
  }

  if(new_expire_flag && new_expire_flag != "KEEPTTL"s) {
    CHECK(iter.pick_int(&expire_value));
  }

  if(iter.at(pos)) return parse failed;
}

We can design it as an utility class, so command authors are free to use it or not.
Advantages:

do not need to maintain the parsing state by ourselves (mostly)
do not need to parse integer, float, or any input type by ourselves; report parse error for these types
as efficient as previous

What do you think? I would appreciate any comments! @git-hulk  @ShooterIT

@PragmaTwice move your comments here, and discuss here to avoid far too many comments for #595

Thanks! BTW I think this idea is applicable to all commands, including SET, especially some complex ones.

@PragmaTwice oh, it will be a big change, i think we should open a new issue to discuss

Thanks. Moved to #598.

Closing as partially resolved...
set key val nx px and set key val px 1000 ex 1000 have been aligned with Redis behavior now. "set key val keepttl" is a new feature that we can track in a new issue.


Add support for automatic debug assertion insertion to the CFE

There's a section in the spec that describes insertion of assert statements for debug purposes.  This functionality may be supported by the CFE and enabled on a per-target basis.
Context: https://dart-review.googlesource.com/c/sdk/+/135320

/cc @johnniwinther

Putting this on backlog until the new rules for strong mode as pure strong mode arrives. This change might not be necessary.

Backends are added the necessary assertions.


[Proposal] Route Registration API

Ideally route registration would be something like either:
Ember Inspired
import Router from 'driven-api/router';

const router = new Router();

router.register(function() {
  this.group('posts', function() {

    this.get('posts', {action: 'posts.all'});
  });

  this.get('version', {action: 'version.info'});
});

export default router;

Or more Laravel inspired (less magical this keyword):
import Router from 'driven-api/router';

const router = new Router();

router.group('posts', function(resource) {
  resource.get('posts', {action: 'posts.all'});
});

router.get('version', {action: 'version.info'});

export default router;

Technically, I think this is more of a RouteManager but want to keep the end user :grinning: so...
The module that takes this map and reduces it into middleware to run through express can be named anything really.

This is the es5 version of this I had working in the app built with Driven.
const Router = require('../driven/services/router');

const AppRouter = Router.compose({

    map() {
        this.namespace('v1', { path: '/api/v1' }, function() {
            this.endpoint('auth', function() {
                this.action('sign-in');
                this.action('sign-out');
                this.action('me');
            });
            this.endpoint('set', function() {
                this.action('list');
                this.action('single', { path: '/:id' });
                this.action('update', { path: '/:id', method: 'PUT' });
                this.action('create', { path: '/', method: 'POST' });
            });
        });
    }

});

module.exports = AppRouter;


Compiling with cross-rs to aarch64-unknown-linux-gnu

I am trying to cross-compile a package that uses opencv-rust (as well as tflitec-rs) to arm64.
For this, I am using cross, with the following configuration:
Cargo.toml
[package]
name = "encoder-host-rs"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
anyhow = "*"
opencv = { version = "*", features = ["imgproc", "videoio", "highgui"], default_features = false}
tflitec = { version = "*", default_features = false }
# tokio = "1.28.*"
# tungstenite = "0.19.*"

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
ar = "aarch64-linux-gnu-ar"

[build-dependencies]
openssl = { version = "*", features = ["vendored"] }

Cross.toml
[build]
default-target = "aarch64-unknown-linux-gnu"
pre-build = [
    "dpkg --add-architecture $CROSS_DEB_ARCH",
    "apt-get update",
    "apt-get install apt-transport-https curl gnupg -y",
    "curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg",
    "mv bazel-archive-keyring.gpg /usr/share/keyrings",
    "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8' | tee /etc/apt/sources.list.d/bazel.list",
    "apt-get update && apt-get install --assume-yes aptitude",
    "DEBIAN_FRONTEND=noninteractive aptitude --assume-yes install clang:arm64 libclang-dev:arm64 libopencv-dev:arm64 python3-numpy bazel"
]

The image is Ubuntu 20.04. On the last line of the pre-build commands, I am installing libopencv-dev for the required architecture. Still, the build fails since opencv.pc or opencv4.pc cannot be found. Why is that? Do I have to install any other packages?
In any case, do you have any instructions on how to cross-compile this crate to aarch64-unknown-linux-gnu?

Output
❯ RUST_BACKTRACE=full cross build --target=aarch64-unknown-linux-gnu -vv
+ cargo metadata --format-version 1 --filter-platform aarch64-unknown-linux-gnu
+ rustc --print sysroot
+ /usr/bin/docker
+ /usr/bin/docker version -f '{{ .Server.Os }},,,{{ .Server.Arch }}'
+ rustup toolchain list
+ rustup target list --toolchain stable-x86_64-unknown-linux-gnu
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu
+ /usr/bin/docker buildx build --progress auto --build-arg 'VERBOSE=1' --label 'org.cross-rs.for-cross-target=aarch64-unknown-linux-gnu' --label 'org.cross-rs.runs-with=x86_64-unknown-linux-gnu' --label 'org.cross-rs.workspace_root=/home/christoph/src/repos/tohokudai/encoder-host-rs' --tag localhost/cross-rs/cross-custom-encoder-host-rs:aarch64-unknown-linux-gnu-fbc93-pre-build --build-arg 'CROSS_CMD=dpkg --add-architecture $CROSS_DEB_ARCH
apt-get update
apt-get install apt-transport-https curl gnupg -y
curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor >bazel-archive-keyring.gpg
mv bazel-archive-keyring.gpg /usr/share/keyrings
echo '\''deb [arch=amd64 signed-by=/usr/share/keyrings/bazel-archive-keyring.gpg] https://storage.googleapis.com/bazel-apt stable jdk1.8'\'' | tee /etc/apt/sources.list.d/bazel.list
apt-get update && apt-get install --assume-yes aptitude
DEBIAN_FRONTEND=noninteractive aptitude --assume-yes install clang:arm64 libclang-dev:arm64 libopencv-dev:arm64 python3-numpy bazel' --build-arg 'CROSS_DEB_ARCH=arm64' --file /home/christoph/src/repos/tohokudai/encoder-host-rs/target/aarch64-unknown-linux-gnu/Dockerfile.aarch64-unknown-linux-gnu-custom --output 'type=docker' /home/christoph/src/repos/tohokudai/encoder-host-rs
[+] Building 0.6s (6/6) FINISHED
 => [internal] load build definition from Dockerfile.aarch64-unknown-linux-gnu-custom                                                                   0.0s
 => => transferring dockerfile: 247B                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main                                                                        0.5s
 => [1/2] FROM ghcr.io/cross-rs/aarch64-unknown-linux-gnu:main@sha256:f988d4b4c59e6a5233698a7b6c3d1241da3f656030e0561d8cf74ce9f8a75207                  0.0s
 => CACHED [2/2] RUN eval "dpkg --add-architecture $CROSS_DEB_ARCH
apt-get update
apt-get install apt-transport-https curl gnupg -y
curl -fsSL https:/  0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:a3b3ab56bd3d646a8aa5736cfe62a37e250168c47ed8e181de3d797c88012af3                                                            0.0s
 => => naming to localhost/cross-rs/cross-custom-encoder-host-rs:aarch64-unknown-linux-gnu-fbc93-pre-build                                              0.0s
+ /usr/bin/docker run --userns host -e 'PKG_CONFIG_ALLOW_CROSS=1' -e 'XARGO_HOME=/home/christoph/.xargo' -e 'CARGO_HOME=/home/christoph/.cargo' -e 'CROSS_RUST_SYSROOT=/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu' -e 'CARGO_TARGET_DIR=/target' -e 'CROSS_RUNNER=' -e TERM -e 'USER=christoph' -e 'CROSS_RUSTC_MAJOR_VERSION=1' -e 'CROSS_RUSTC_MINOR_VERSION=65' -e 'CROSS_RUSTC_PATCH_VERSION=0' --name cross-stable-x86_64-unknown-linux-gnu-ed820-897e37553-aarch64-unknown-linux-gnu-fbc93-1682836739735 --rm --user 1000:1000 -v /home/christoph/.xargo:/home/christoph/.xargo:z -v /home/christoph/.cargo:/home/christoph/.cargo:z -v /home/christoph/.cargo/bin -v /home/christoph/src/repos/tohokudai/encoder-host-rs:/home/christoph/src/repos/tohokudai/encoder-host-rs:z -v /home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu:/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu:z,ro -v /home/christoph/src/repos/tohokudai/encoder-host-rs/target:/target:z -w /home/christoph/src/repos/tohokudai/encoder-host-rs -t localhost/cross-rs/cross-custom-encoder-host-rs:aarch64-unknown-linux-gnu-fbc93-pre-build sh -c 'PATH="$PATH":"/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin" cargo build --target=aarch64-unknown-linux-gnu -vv'
warning: unused manifest key: target.aarch64-unknown-linux-gnu.ar
warning: unused manifest key: target.aarch64-unknown-linux-gnu.linker
       Fresh jobserver v0.1.26
       Fresh cc v1.0.79
       Fresh pkg-config v0.3.26
       Fresh glob v0.3.1
       Fresh cfg-if v1.0.0
       Fresh regex-syntax v0.7.1
       Fresh unicode-ident v1.0.8
       Fresh openssl-src v111.25.3+1.1.1t
       Fresh libloading v0.7.4
       Fresh memchr v2.5.0
       Fresh proc-macro2 v1.0.56
       Fresh shlex v1.1.0
       Fresh aho-corasick v1.0.1
       Fresh clang-sys v1.6.1
       Fresh quote v1.0.26
       Fresh minimal-lexical v0.2.1
       Fresh libz-sys v1.1.9
       Fresh regex v1.8.1
       Fresh nom v7.1.3
       Fresh openssl-sys v0.9.87
       Fresh syn v2.0.15
       Fresh either v1.8.1
       Fresh cexpr v0.6.0
       Fresh log v0.4.17
       Fresh prettyplease v0.2.4
       Fresh curl-sys v0.4.61+curl-8.0.1
       Fresh which v4.4.0
       Fresh clang v2.0.0
       Fresh socket2 v0.4.9
       Fresh autocfg v1.1.0
       Fresh openssl-probe v0.1.5
       Fresh lazy_static v1.4.0
       Fresh peeking_take_while v0.1.2
       Fresh bitflags v1.3.2
       Fresh rustc-hash v1.1.0
       Fresh percent-encoding v2.2.0
       Fresh lazycell v1.3.0
       Fresh maplit v1.0.2
       Fresh dunce v1.0.4
       Fresh curl v0.4.44
       Fresh bindgen v0.65.1
       Fresh opencv-binding-generator v0.60.0
       Fresh semver v1.0.17
       Fresh vcpkg v0.2.15
       Fresh fs_extra v1.3.0
   Compiling tflitec v0.6.0
       Fresh libc v0.2.142
       Fresh once_cell v1.17.1
     Running `CARGO=/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo CARGO_CRATE_NAME=build_script_build CARGO_MANIFEST_DIR=/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/tflitec-0.6.0 CARGO_PKG_AUTHORS='ebraraktas<EMAIL_ADDRESS>CARGO_PKG_DESCRIPTION='A safe Rust wrapper of TensorFlow Lite C API supporting x86_64 and ARM (iOS, Android)' CARGO_PKG_HOMEPAGE='' CARGO_PKG_LICENSE=MIT CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=tflitec CARGO_PKG_REPOSITORY='https://github.com/VoysAI/tflitec-rs' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.6.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=6 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' LD_LIBRARY_PATH='/target/debug/deps:/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib' rustc --crate-name build_script_build --edition=2018 /home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/tflitec-0.6.0/build.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=cb08e39b5feecde8 -C extra-filename=-cb08e39b5feecde8 --out-dir /target/debug/build/tflitec-cb08e39b5feecde8 -L dependency=/target/debug/deps --extern bindgen=/target/debug/deps/libbindgen-b9d0985b033f526a.rlib --extern curl=/target/debug/deps/libcurl-ffcc67f08c43f129.rlib --extern fs_extra=/target/debug/deps/libfs_extra-8a8ed39704e44c8c.rlib --cap-lints warn -L native=/target/debug/build/curl-sys-2edb881453cd4a3d/out/build -L native=/target/debug/build/openssl-sys-3a30c50041ed18b2/out/openssl-build/install/lib`
       Fresh num-traits v0.2.15
   Compiling opencv v0.80.0
       Fresh anyhow v1.0.71
     Running `/target/debug/build/opencv-6eb3e2b6ba049448/build-script-build`
[opencv 0.80.0] === Using environment job server with the the amount of available jobs: 6
[opencv 0.80.0] === Running: "/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo" "build" "--release" "--package" "opencv-binding-generator" "--bin" "binding-generator"
[opencv 0.80.0] === Crate version: Some("0.80.0")
[opencv 0.80.0] === Environment configuration:
[opencv 0.80.0] ===   OPENCV_PACKAGE_NAME = None
[opencv 0.80.0] ===   OPENCV_PKGCONFIG_NAME = None
[opencv 0.80.0] ===   OPENCV_CMAKE_NAME = None
[opencv 0.80.0] ===   OPENCV_CMAKE_BIN = None
[opencv 0.80.0] ===   OPENCV_VCPKG_NAME = None
[opencv 0.80.0] ===   OPENCV_LINK_LIBS = None
[opencv 0.80.0] ===   OPENCV_LINK_PATHS = None
[opencv 0.80.0] ===   OPENCV_INCLUDE_PATHS = None
[opencv 0.80.0] ===   OPENCV_DISABLE_PROBES = None
[opencv 0.80.0] ===   CMAKE_PREFIX_PATH = None
[opencv 0.80.0] ===   OpenCV_DIR = None
[opencv 0.80.0] ===   PKG_CONFIG_PATH = Some("/usr/lib/aarch64-linux-gnu/pkgconfig/:")
[opencv 0.80.0] ===   VCPKG_ROOT = None
[opencv 0.80.0] ===   VCPKGRS_DYNAMIC = None
[opencv 0.80.0] ===   OCVRS_DOCS_GENERATE_DIR = None
[opencv 0.80.0] ===   DOCS_RS = None
[opencv 0.80.0] ===   PATH = Some("/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin")
[opencv 0.80.0] === Enabled features:
[opencv 0.80.0] ===   HIGHGUI
[opencv 0.80.0] ===   IMGPROC
[opencv 0.80.0] ===   VIDEOIO
[opencv 0.80.0] === Detected probe priority based on environment vars: pkg_config: true, cmake: false, vcpkg: false
[opencv 0.80.0] === Probing the OpenCV library in the following order: environment, pkg_config, cmake, vcpkg_cmake, vcpkg
[opencv 0.80.0] === Can't probe using: environment, continuing with other methods because: Some environment variables are missing
[opencv 0.80.0] === Probing OpenCV library using pkg_config
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV4_NO_PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_ALLOW_CROSS
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV4_STATIC
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV4_DYNAMIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_PATH
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_LIBDIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_SYSROOT_DIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV_NO_PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_ALLOW_CROSS
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV_STATIC
[opencv 0.80.0] cargo:rerun-if-env-changed=OPENCV_DYNAMIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_PATH
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_LIBDIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
[opencv 0.80.0] cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_SYSROOT_DIR
[opencv 0.80.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
[opencv 0.80.0] === Can't probe using: pkg_config, continuing with other methods because: `"pkg-config" "--libs" "--cflags" "opencv4"` did not exit successfully: exit status: 1
[opencv 0.80.0] error: could not find system library 'opencv4' required by the 'opencv' crate
[opencv 0.80.0]
[opencv 0.80.0] --- stderr
[opencv 0.80.0] Package opencv4 was not found in the pkg-config search path.
[opencv 0.80.0] Perhaps you should add the directory containing `opencv4.pc'
[opencv 0.80.0] to the PKG_CONFIG_PATH environment variable
[opencv 0.80.0] No package 'opencv4' found
[opencv 0.80.0] , `"pkg-config" "--libs" "--cflags" "opencv"` did not exit successfully: exit status: 1
[opencv 0.80.0] error: could not find system library 'opencv' required by the 'opencv' crate
[opencv 0.80.0]
[opencv 0.80.0] --- stderr
[opencv 0.80.0] Package opencv was not found in the pkg-config search path.
[opencv 0.80.0] Perhaps you should add the directory containing `opencv.pc'
[opencv 0.80.0] to the PKG_CONFIG_PATH environment variable
[opencv 0.80.0] No package 'opencv' found
[opencv 0.80.0]
[opencv 0.80.0] === Probing OpenCV library using cmake
[opencv 0.80.0] === cmake ninja probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "-G" "Ninja"
[opencv 0.80.0] === Probing with cmake ninja generator failed, will try Makefile generator, error: cmake returned an error
[opencv 0.80.0]     stdout: "-- Configuring incomplete, errors occurred!\nSee also \"/target/aarch64-unknown-linux-gnu/debug/build/opencv-ee72b856b66f7498/out/cmake_probe_build/CMakeFiles/CMakeOutput.log\".\n"
[opencv 0.80.0]     stderr: "CMake Error: CMake was unable to find a build program corresponding to \"Ninja\".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.\nCMake Error: CMAKE_C_COMPILER not set, after EnableLanguage\nCMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage\n"
[opencv 0.80.0] === cmake makefiles probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "-G" "Unix Makefiles"
[opencv 0.80.0] === Probing with cmake Makefile generator failed, will try deprecated find_package, error: cmake returned an error
[opencv 0.80.0]     stdout: "-- The C compiler identification is GNU 9.4.0\n-- The CXX compiler identification is GNU 9.4.0\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Configuring incomplete, errors occurred!\nSee also \"/target/aarch64-unknown-linux-gnu/debug/build/opencv-ee72b856b66f7498/out/cmake_probe_build/CMakeFiles/CMakeOutput.log\".\n"
[opencv 0.80.0]     stderr: "CMake Error at CMakeLists.txt:5 (find_package):\n  By not providing \"FindOpenCV.cmake\" in CMAKE_MODULE_PATH this project has\n  asked CMake to find a package configuration file provided by \"OpenCV\", but\n  CMake did not find one.\n\n  Could not find a package configuration file provided by \"OpenCV\" with any\n  of the following names:\n\n    OpenCVConfig.cmake\n    opencv-config.cmake\n\n  Add the installation prefix of \"OpenCV\" to CMAKE_PREFIX_PATH or set\n  \"OpenCV_DIR\" to a directory containing one of the above files.  If \"OpenCV\"\n  provides a separate development package or SDK, be sure it has been\n  installed.\n\n\n"
[opencv 0.80.0] === cmake find-package compile probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "--find-package" "-DCOMPILER_ID=GNU" "-DLANGUAGE=CXX" "-DMODE=COMPILE" "-DNAME=OpenCV"
[opencv 0.80.0] === Can't probe using: cmake, continuing with other methods because: cmake returned an error
[opencv 0.80.0]     stdout: "OpenCV not found.\n"
[opencv 0.80.0]     stderr: "CMake Error: Run 'cmake --help' for all supported options.\n"
[opencv 0.80.0] === Probing OpenCV library using vcpkg_cmake
[opencv 0.80.0] === Can't probe using: vcpkg_cmake, continuing with other methods because: Could not find Vcpkg tree: No vcpkg installation found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'
[opencv 0.80.0] === Probing OpenCV library using vcpkg
[opencv 0.80.0] === Can't probe using: vcpkg, continuing with other methods because: the vcpkg-rs Vcpkg build helper can only find libraries built for the MSVC ABI., the vcpkg-rs Vcpkg build helper can only find libraries built for the MSVC ABI.
[opencv 0.80.0] Error: "Failed to find installed OpenCV package using probes: environment, pkg_config, cmake, vcpkg_cmake, vcpkg, refer to https://github.com/twistedfall/opencv-rust#getting-opencv for help"
error: failed to run custom build command for `opencv v0.80.0`

Caused by:
  process didn't exit successfully: `/target/debug/build/opencv-6eb3e2b6ba049448/build-script-build` (exit status: 1)
  --- stdout
  === Running: "/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo" "build" "--release" "--package" "opencv-binding-generator" "--bin" "binding-generator"
  cargo:rerun-if-env-changed=OPENCV4_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_ALLOW_CROSS
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=OPENCV4_STATIC
  cargo:rerun-if-env-changed=OPENCV4_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=OPENCV_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_ALLOW_CROSS
  cargo:rerun-if-env-changed=PKG_CONFIG_ALLOW_CROSS
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=OPENCV_STATIC
  cargo:rerun-if-env-changed=OPENCV_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_unknown_linux_gnu
  cargo:rerun-if-env-changed=TARGET_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr
  === Using environment job server with the the amount of available jobs: 6
  === Crate version: Some("0.80.0")
  === Environment configuration:
  ===   OPENCV_PACKAGE_NAME = None
  ===   OPENCV_PKGCONFIG_NAME = None
  ===   OPENCV_CMAKE_NAME = None
  ===   OPENCV_CMAKE_BIN = None
  ===   OPENCV_VCPKG_NAME = None
  ===   OPENCV_LINK_LIBS = None
  ===   OPENCV_LINK_PATHS = None
  ===   OPENCV_INCLUDE_PATHS = None
  ===   OPENCV_DISABLE_PROBES = None
  ===   CMAKE_PREFIX_PATH = None
  ===   OpenCV_DIR = None
  ===   PKG_CONFIG_PATH = Some("/usr/lib/aarch64-linux-gnu/pkgconfig/:")
  ===   VCPKG_ROOT = None
  ===   VCPKGRS_DYNAMIC = None
  ===   OCVRS_DOCS_GENERATE_DIR = None
  ===   DOCS_RS = None
  ===   PATH = Some("/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/christoph/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin")
  === Enabled features:
  ===   HIGHGUI
  ===   IMGPROC
  ===   VIDEOIO
  === Detected probe priority based on environment vars: pkg_config: true, cmake: false, vcpkg: false
  === Probing the OpenCV library in the following order: environment, pkg_config, cmake, vcpkg_cmake, vcpkg
  === Can't probe using: environment, continuing with other methods because: Some environment variables are missing
  === Probing OpenCV library using pkg_config
  === Can't probe using: pkg_config, continuing with other methods because: `"pkg-config" "--libs" "--cflags" "opencv4"` did not exit successfully: exit status: 1
  error: could not find system library 'opencv4' required by the 'opencv' crate

  --- stderr
  Package opencv4 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `opencv4.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'opencv4' found
  , `"pkg-config" "--libs" "--cflags" "opencv"` did not exit successfully: exit status: 1
  error: could not find system library 'opencv' required by the 'opencv' crate

  --- stderr
  Package opencv was not found in the pkg-config search path.
  Perhaps you should add the directory containing `opencv.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'opencv' found

  === Probing OpenCV library using cmake
  === cmake ninja probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "-G" "Ninja"
  === Probing with cmake ninja generator failed, will try Makefile generator, error: cmake returned an error
      stdout: "-- Configuring incomplete, errors occurred!\nSee also \"/target/aarch64-unknown-linux-gnu/debug/build/opencv-ee72b856b66f7498/out/cmake_probe_build/CMakeFiles/CMakeOutput.log\".\n"
      stderr: "CMake Error: CMake was unable to find a build program corresponding to \"Ninja\".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.\nCMake Error: CMAKE_C_COMPILER not set, after EnableLanguage\nCMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage\n"
  === cmake makefiles probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "-G" "Unix Makefiles"
  === Probing with cmake Makefile generator failed, will try deprecated find_package, error: cmake returned an error
      stdout: "-- The C compiler identification is GNU 9.4.0\n-- The CXX compiler identification is GNU 9.4.0\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Configuring incomplete, errors occurred!\nSee also \"/target/aarch64-unknown-linux-gnu/debug/build/opencv-ee72b856b66f7498/out/cmake_probe_build/CMakeFiles/CMakeOutput.log\".\n"
      stderr: "CMake Error at CMakeLists.txt:5 (find_package):\n  By not providing \"FindOpenCV.cmake\" in CMAKE_MODULE_PATH this project has\n  asked CMake to find a package configuration file provided by \"OpenCV\", but\n  CMake did not find one.\n\n  Could not find a package configuration file provided by \"OpenCV\" with any\n  of the following names:\n\n    OpenCVConfig.cmake\n    opencv-config.cmake\n\n  Add the installation prefix of \"OpenCV\" to CMAKE_PREFIX_PATH or set\n  \"OpenCV_DIR\" to a directory containing one of the above files.  If \"OpenCV\"\n  provides a separate development package or SDK, be sure it has been\n  installed.\n\n\n"
  === cmake find-package compile probe command: "cmake" "-S" "/home/christoph/.cargo/registry/src/github.com-1ecc6299db9ec823/opencv-0.80.0/cmake" "-DOCVRS_PACKAGE_NAME=OpenCV" "-DCMAKE_BUILD_TYPE=Debug" "--find-package" "-DCOMPILER_ID=GNU" "-DLANGUAGE=CXX" "-DMODE=COMPILE" "-DNAME=OpenCV"
  === Can't probe using: cmake, continuing with other methods because: cmake returned an error
      stdout: "OpenCV not found.\n"
      stderr: "CMake Error: Run 'cmake --help' for all supported options.\n"
  === Probing OpenCV library using vcpkg_cmake
  === Can't probe using: vcpkg_cmake, continuing with other methods because: Could not find Vcpkg tree: No vcpkg installation found. Set the VCPKG_ROOT environment variable or run 'vcpkg integrate install'
  === Probing OpenCV library using vcpkg
  === Can't probe using: vcpkg, continuing with other methods because: the vcpkg-rs Vcpkg build helper can only find libraries built for the MSVC ABI., the vcpkg-rs Vcpkg build helper can only find libraries built for the MSVC ABI.
  Error: "Failed to find installed OpenCV package using probes: environment, pkg_config, cmake, vcpkg_cmake, vcpkg, refer to https://github.com/twistedfall/opencv-rust#getting-opencv for help"
warning: build failed, waiting for other jobs to finish...
+ rustup component list --toolchain stable-x86_64-unknown-linux-gnu

Did you try setting the environment variable PKG_CONFIG_ALLOW_CROSS to 1 for that build? It should help in finding those packages.

Hm, that did not do it for me. The error message seems to be unchanged. May it be possible that the default ubuntu-package does not come with pkg-config files (see https://github.com/opencv/opencv/issues/13154)?

I've checked and the image that's cross is using for aarch64-unknown-linux-gnu is based on Ubuntu 16.04.7 LTS which is extremely outdated, it contains OpenCV 2.4 and clang-3.8 both of those are long not supported so you won't be able to built with them anyway.
I'd suggest trying to build your own image, maybe basing it on the cross's own docker image from the master branch (https://github.com/cross-rs/cross/blob/main/docker/Dockerfile.aarch64-unknown-linux-gnu) which is based on Ubuntu-20.04. Or maybe try to build the OpenCV from sources inside this outdated container and get the more recent clang there too, but it might be way too much effort to be worth it.

I have added an example Dockerfile that can help you build the image suitable for cross-compiling Rust applications, it's here: https://github.com/twistedfall/opencv-rust/blob/master/tools/rpi-xcompile.Dockerfile and this is the extract from the readme:

Cross-compilation is notoriously difficult to set up, so you can use this example rpi-xcompile.Dockerfile.
docker build -t rpi-xcompile -f tools/rpi-xcompile.Dockerfile tools
Building this image requries qemu-arm to be present on the host system and the corresponding binfmt-misc set up (see e.g. https://wiki.debian.org/QemuUserEmulation, only Installing packages should be enough).
After the successful build you will have an image configured for cross-compilation to Raspberry Pi. It will contain the sample build script /usr/local/bin/cargo-xbuild that you can check for the correct environment setup and the specific command line arguments to use when crosscompiling the project inside the container created from that image.

Something like this, yes. Mount the project directory into the container and run the build command inside it. The cargo-xbuild is more like the example of the proper environment setup and appropriate cargo flags (it would need at least --release to of practical use) so you can use it as the inspiration for you own proper build command.


:invalid_path on v0.31.0

Calling Image.open/2 with {:vix, "0.31.0"} started returning {:error, :invalid_path} for any image I try to open (tested with 2 png files). Downgrading to {:vix, "0.30.0"} works fine.
iex> Image.open("beacon.png")
{:error, :invalid_path}

❯ elixir -v
Erlang/OTP 27 [erts-15.0] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit]

Elixir 1.17.2 (compiled with Erlang/OTP 27)

/edit please let me know If I can help with something or what other information I can give to help. Thanks!

@leandrocp fixed the issue in the latest release https://hex.pm/packages/vix/0.31.1.
Thanks for the reporting!

@akash-akya can confirm it's working now. Thanks for the quick fix!


[SPARK-36408][BUILD] Upgrade json4s to 4.0.3

What changes were proposed in this pull request?

This PR upgrades json4s from 3.7.0-M11 to 4.0.3.
Why are the changes needed?

json4s v4 was released and 173 bug fixes and improvements are applied after 3.7.0-M11 which Spark currently depends on.
Some improvements seem to be about Scala 2.13 and Scala 3.
https://github.com/json4s/json4s/compare/v3.7.0-M11...v4.0.3
Does this PR introduce any user-facing change?

No.
How was this patch tested?

CI.

Test build #142021 has started for PR 33630 at commit 0278204.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46532/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/46532/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/46532/

Test build #142021 has finished for PR 33630 at commit 0278204.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/142021/

I've notice the previous discussion.
3.7.0-M11 seems the last version which doesn't breaks binary compatibility.
So, it may be better to leave it as is for now.
What do you think, all?

If there is no critical and urgent bugs at the existing one, I prefer to leave it as is.

O.K, let's leaving it as is.

Thank you for making a PR and investing this. And, sorry for closing~

Yeah, let's postpone to upgrade until we think it's time to go.

JSON4S 4 quickly gained popularity. By this, we currently fight off dependency hell due to the binary incompatibility with Spark. Spark lags behind dependency upgrades in many fronts. 95% of our .scala-steward.conf ignores and pins are due to Spark being added to the project. :-/

@sarutak do you think we can update json4s to 4.x in spark ?

@dongjoon-hyun do you think it would be possible to update to spark to json4s 4.x ?

Personally, I don't think that's possible in Spark 3.x, @CEikermann .
As you know, even Scala 3 is not supported yet. We cannot take the risks yet in 3.x line.

For a record, we always try to deliver the latest dependencies. Apache Spark 3.3.0 also has many upgrades. But, some dependencies are very difficult to embrace.