verification of blockchain snark failed but it was our fault

Preliminary Checks

[X] This issue is not a duplicate. Before opening a new issue, please search existing issues: https://github.com/MinaProtocol/mina/issues
[X] This issue is not a question, feature request, RFC, or anything other than a bug report. Please post those things in GitHub Discussions: https://github.com/MinaProtocol/mina/discussions

Description
Having error while I am hitting mina daemon using this command(mina daemon --peer-list-url https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt).
Thanks,
Steps to Reproduce

mina daemon --peer-list-url https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt

Expected Result

we are expect block verify.

Actual Result
Error Message
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Error] verifier terminated unexpectedly
How frequently do you see this issue?
Rarely
What is the impact of this issue on your ability to run a node?
High
Status
Error Message
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Warn] verification of blockchain snark failed but it was our fault
2023-04-24 05:41:42 UTC [Error] verifier terminated unexpectedly

Additional information
No response

can you kindly shed some light on the repro -
which image did you use - Debian Packages or docker
was it against : https://github.com/MinaProtocol/mina/discussions/12946
This will help reproduce at our end and help further investigation

Hi Any updates on this issue with clear repro will help on our end to triage.

sorry for delay...
Hai @vanarasiantonyswamy
Debian package i used.
existing config
yes, this is first time.
Now, also facing same issue

we don't have any config, get the code from https://github.com/MinaProtocol/mina. kindly give a suggesion

i am not able to repro this issue.
When mina daemon runs, it will create a ~/.mina-config folder and keep the logs in this folder. if you can attach it, we can investigate further.

I could repro the above using mainnet stable <IP_ADDRESS>.

Detailed Repro steps:
Install on ubuntu VM - mainnet stable
sudo rm /etc/apt/sources.list.d/mina*.list
echo "deb [trusted=yes] http://packages.o1test.net $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/mina.list
sudo apt-get update
sudo apt-get install -y mina-mainnet=<IP_ADDRESS>-25388a0
generate key
cd ~
mkdir ~/keys
chmod 700 ~/keys
mina advanced generate-keypair --privkey-path /home/user/keys/my-wallet
chmod 600 ~/keys/my-wallet
mkdir ~/.mina-config
create ~/.mina-env file
MINA_PRIVKEY_PASS="your password used for creating the key"
LOG_LEVEL=Info
FILE_LOG_LEVEL=Debug
EXTRA_FLAGS=" --block-producer-key /home/user/keys/my-wallet"
verify you see the same mina version as in the release doc by running mina version.
chain id matches.
mina daemon --peer-list-url https://storage.googleapis.com/mina-seed-lists/mainnet_seeds.txt
Check the logs shared in slack. [folder .mina-config]
Daemon gets stuck in catchup and then restarts back to bootstrap
on the terminal you will see
[Warn] verification of blockchain snark failed but it was our fault
Document referred :
https://github.com/MinaProtocol/mina/releases/tag/<IP_ADDRESS>
https://docs.minaprotocol.com/node-operators/generating-a-keypairhttps://docs.minaprotocol.com/node-operators/connecting-to-the-network
I did the above repro for Mainnet Beta Release 1.4.0beta2 i see that the daemon also gets stuck in Bootstrap

@vanarasiantonyswamy are you seeing the same error message when it is stuck in bootstrap?

yes Alan , when stuck in catchup i saw this error on terminal


replacement

Hi !
Idea behind this package is really great!
This package is not actively maintained, and
some time ago, one of open-source contributor bring this feature into https://github.com/FriendsOfPHP/PHP-CS-Fixer/ as native_function_invocation rule.
Maybe you want to deprecate this package and redirect users to PHP CS Fixer to not need to maintain this package ?

Sure, just send a patch and we'll let it die 👍
On 18 Sep 2017 00:58, "Dariusz Rumiński"<EMAIL_ADDRESS>wrote:

Hi !
Idea behind this package is really great!
This package is not actively maintained, and
some time ago, one of open-source contributor bring this feature into
https://github.com/FriendsOfPHP/PHP-CS-Fixer/ as
native_function_invocation rule.
Maybe you want to deprecate this package and redirect users to PHP CS
Fixer to not need to maintain this package ?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Roave/FunctionFQNReplacer/issues/6, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AAJakH01XGIszADP0MRjtVMFnlF11MuEks5sjaQWgaJpZM4PaT5g
.

👍
Off-topic / FYI
Was curious about the benchmark, but (quick) installation seems to fail, the suggested:
composer create-project roave/function-fqn-replacer
results in
[InvalidArgumentException]
  Could not find package roave/function-fqn-replacer with stability stable.

and
git clone https://github.com/Roave/FunctionFQNReplacer
cd FunctionFQNReplacer
composer install```

results in:

Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for humbug/humbug dev-master -> satisfiable by humbug/humbug[dev-master].
- humbug/humbug dev-master requires phpunit/phpunit ^6.0

yeah, humbug is currently in a "release limbo", where no existing version really works.

try https://github.com/infection/infection perhaps ?

Already fixed similarly via https://github.com/Ocramius/ProxyManager/pull/381 - just waiting for new PHPStan to finalize that and then we can apply it to various repos.


Support highlight, overline, underline, and strike for math equations

Regarding #2200, it turns out the highlight is supported for normal text but not for math equations.  This PR implement the highlight for math equations.
Like highlight, other line-based decorations are supported now as well, including overline, underline, strikethrough. Result

(tests added in deco.typ)
Old
This is the second of two PR for solving #2200  (and shoud be easier to review if #3941 is merged first) (or Just merge this PR directly)
It continues on #3941 that add support for overline underline and strike for math equations. Some refactoring and corresponding tests are added as well.

Can this format individual symbols inside math mode and keep them in the same font? For instance, the second example "unitalicizes" the $n(n+1)$ term.

Can this format individual symbols inside math mode and keep them in the same font? For instance, the second example "unitalicizes" the n(n+1) term.

Okay this is interesting, it seems that the n(n+1) (as long as it is wrapped by a []) is considered as normal text instead of math, that being said, this is a bug that is orthogonal to the changes made in this PR, which would have its own issue. Specifically, in the main branch (without the changes in this PR), if you try this sample
$ sum_(k=1)^n k = #highlight[(n(n+1))] / 3 $

it would already result in this

Okay I just picked up this PR again recently and have made a new solution (albeit being very complicated) but breaks many other tests, mainly because in equation.rs,  the size of the equations' frame is updated manually to consider a "slack", which will be used in determining line height, but this also means the original size is lost so we cannot do the decoration based on the correct frame size. I will push the changes once I found a good solution.

I think the best solution is to reconsider highlighting from scratch and do it at the paragraph level. That way, for instance, adjacent text and math could also get a shared bounding box. If we want to go down that route, I'd like to wait with that until after I'm done with my layout refactoring though (or take a stab at it during it).

Yes I am working towards this direction, a principled approach that handles text, math (and other frames) properly.
Now other than some refactoring ( am sure there will be some ways), one other thing that I am struggling with is the issue of slack adjust as in math/equation.rs
            ...
            let font_size = scaled_font_size(&ctx, styles);
            let slack = ParElem::leading_in(styles) * 0.7;
            let top_edge = TextElem::top_edge_in(styles).resolve(font_size, &font, None);
            let bottom_edge =
                -TextElem::bottom_edge_in(styles).resolve(font_size, &font, None);

            let ascent = top_edge.max(frame.ascent() - slack);
            let descent = bottom_edge.max(frame.descent() - slack);
            frame.translate(Point::with_y(ascent - frame.baseline()));
            frame.size_mut().y = ascent + descent;
            ...

so this slackness adjustment would modify in place of the frame height/width, so if we do decoration of the math frames in line commit (after line-break is done), the frame.size() does not truthfully corresponds to the box where we want to do highlight. It would be great if the line height adjust can keep the math frames as it is, and only do the line height adjustment in line commit.
Recently I discovered that #4236 seems to tackling the same issue, but it seems difficult to preserve and pass the existing tests...

Just made a new draft PR, now the solution is limited to only highlight (because highlight is background) which is easier.
Some limitations:

bad code, but I think the complexity can be all hided in a Decoration Builder.
mixture of text and math frames can be integrated better.
Some details might need to be adjust to handle hspace properly.

That being said, this PR is now only a very rough draft. The main thing that is blocking the issue is that the true frame size is being modified in slackness adjust, #4318 is one way to solve it; but there can be other ways, say, if the line height determination is refactored and merged #4236, in which case the slackness adjustment is no more.
I think as long as some PR fixes the issue that the frame size is no longer being modified,  I can make rebase the code anf make a more proper PR. (for example, completely merging the two functions "decorate_frame" and "decorate_shaped_text')

I think in principle this design is going in the right direction. I'm optimistic that the implementation can be simplified. Still, I think we'll unfortunately need to wait for the resolution of #4224 because #4318 seems problematic to me.

Let's revisit this once the equation slackness adjustment is gone.


Adding methods lock and to_dict

Added two methods for main Dictator class:

lock - to create and return redis.lock.Lock object for current connection to Redis
to_dict - convert Dictator to Python's dict

Fixed and extended some docstrings

I think it's better to overwrite copy method to return python dict instead of making to_dict method.


I'm going to merge this in.


Add DECA starter project

Do all these need new files? If we can reuse files from the base starter project, please symlink them :)

Do all these need new files? If we can reuse files from the base starter project, please symlink them :)

Yeah, I’ll symlink where appropriate


UX Improvement Track page

[x] Fix Responsiveness
[x] Add speaker organisation and social links along with image
[x] Change popover box to close on un-hover state rather than click as sched.org
[x] Implement Dynamic Footer
[x]  UX :Add Hover state to track hovered

@mariobehling  @championswimmer  Solved with PR #502

Please provide a screenshot in future.

Sure @mariobehling , closing this its done #502


Move sqs-dead-letter-requeue.go to get correct binaries

cc: @Jimdo/platform
Move sqs-dead-letter-requeue.go to get correct binaries when using go get

lgtm

http://golang.org/doc/code.html#Organization is a quite useful documentation for your first Go projects.


How to increase the size of a detected rectangle in python?

face_recognition version: latest version
Python version: 3.7
Operating System: Kali Linux

Description
How to increase the size of a detected rectangle, for example, I want to crop 3x4 photo of detected faces
What I Did
First I thought it needs to increase the top&bottom position but then it breaks the accuracy of face detection and images are not face-centered. after that, I searched about that and found OpenCV version which can add padding to the detected rectangle. Are you have the same function that can add padding and space to the detected rectangle?
from PIL import Image
import face_recognition

image = face_recognition.load_image_file(importLocation)
face_locations = face_recognition.face_locations(image)
i = 0
    for face_location in face_locations:
        top, right, bottom, left = face_location
        face_image = image[top:bottom, left:right]
        pil_img = Image.fromarray(face_image)
        pil_img.save("%s/face-{}.jpg".format(i) % (exportLocation))
        i += 1

I added some int to  face_image = image[top:bottom, left:right]


[6] Set up DevOps Continuous Delivery Pipeline in IBM cloud

As a developper
I need a Continuous Delivery Pipeline in IBM cloud
So that the project can be built and deployed when the master branch changes
Details and Assumptions

[document what you know]

Acceptance Criteria
Given a continuous delivery pipeline
When changes are made to the Github repo
Then the code is tested and deployed automatically

@AdamAH2000 I'm not sure if it's already connected with promotions' github repo?

@Pimnipalmie It's not but that is the point of the pipeline, to automate the deployment of changes in the GitHub repo


Docs are wrong: export = and import = require(), says latter is required incorrectly

The documentation regarding export = and import = require() at https://www.typescriptlang.org/docs/handbook/modules.html is wrong. It says:
When exporting a module using export =, TypeScript-specific import module = require("module") must be used to import the module.

Whereas I've been able to import from and import as for modules that export using export =.

Can I work on this?

#2700

@marcospgp does it look right?

I'm not sure this is correct as looking back I was using a custom implementation of a TS to JS transpiler. Maybe the docs were actually correct here.


Added example for doom emacs usage

So others won't have to figure this out on their own

This does not recursively pull submodules, ugh. Will make some changes


router.get_lags() not showing all LAGs

Hi!
I've noticed that the method get_lags() only retrieves some lags. Is there a chance that I'm doing something wrong? In my config file I have 2 network LAGs and 5 Access Lags, but only the first three ones are being shown.
For example:
$ grep -E 'lag ' config.cfg
    lag 1
    lag 8
    lag 2
    lag 3
    lag 40
    lag 41
    lag 42

However, when trying to get the lags from the config file, only lags 1, 8 and 2 are being shown.
In [43]: lags = router.get_lags()[0]['configure']['lag']
WARNING:ttp.ttp:ttp.lazy_import_functions: failed to save ttp_dict_cache.pickle '[Errno 13] Permission denied: '/usr/local/lib/python3.8/dist-packages/ttp/ttp_dict_cache.pickle''

In [44]: len(lags)
Out[44]: 3

In [45]: for lag in lags:
    ...:     try:
    ...:         print(lag['lag-index'], lag['mode'])
    ...:     except:
    ...:         print(lag['lag-index'])
    ...:
    ...:
1
8
2 access

Any hint? Thanks!
Lucas
ps: don't know if the WARNING error has something to do with this. I just installed this lib using the standard pip method.

Hey there @laimaretto ! Thanks for checking out the project. Can you share the sanitized configuration? Or at least the section including lags? What version of SROS are you running? It's been a while since I've done anything in this project, but willing to try to update! thanks

Hello, @h4ndzdatm0ld , thanks for the prompt response. Very nice project, it's being very useful and interesting. I want to try the feature of custom templates using ttp. However your methods for grabbing config sections are already very helpful so far.
Please find attached a snippet of the lag config. I've replaced sensitive info like descriptions but I think it will nevertheless work ... hope this helps.
Lucas

@laimaretto  Hi, thanks for sharing. Can you install the package from the development branch in a new venv and try again? I just merged some changes and added some unit tests, let me know how that looks! If all is good, i'll release a new minor version!

@h4ndzdatm0ld , I did the install in venv, and it's working now. thanks for the update.
>>> from ttp_sros_parser.srosparser import SrosParser
>>>
>>> cfg = 'config.cfg'
>>> router = SrosParser(cfg)
>>> lags = router.get_lags()[0]['configure']['lag']
>>> len(lags)
14
>>> for lag in lags:
...     try:
...         print(lag['lag-index'],lag['mode'])
...     except:
...         print(lag['lag-index'])
...
1
8
255 hybrid
390 access
400 access
410 access
420 access
430 access
440 access
450 access
460 access
470 access
480 access
490 access

Lucas


RFC toradex: Move dtb and dtbo files to root partition.

These files should be loaded from the rootfs partition so we can update them OTA.
Changelog: Title
Signed-off-by: Drew Moseley<EMAIL_ADDRESS>

@TheYoctoJester @leon-anavi I would love your input on this. I noticed that we were not pulling DTB and DTBO files from the rootfs partition so there was no way to update them OTA.  This patch adds that capability. This was discovered while trying to do an OTA from dunfell to kirkstone and is required for that ability. I have an equivalent patch on kirkstone that I am working on but getting it into dunfell is a necessary first step.

@drewmoseley yeah we've run into a similar situation. I personally think that this looks good and is the correct approach. From a version management perspective, kirkstone is meant to take the lead now on this repo.

About using kirkstone, understood but this is required if we want to allow OTA between dunfell and kirkstone so I figured we start here. I have the equivalent fix for kirkstone in my WIP branch locally and will submit that once we make a final decision on this one.

Let's wait for @leon-anavi; he's the only other active user that I am aware of.

Sounds as a very good idea and the patch looks good to me.
Thanks, Leon

OK.  In that case I guess we are good to go.


pyhelm is not reading requirements.yaml for the dependencies.

pyhelm is not reading requirements.yaml for the dependencies... Problem here is that pyhelm is not suitable for requirements.yaml having condition for each dependency which is automatically checked during helm installation.

You're right, it's currently not supported by PyHelm. I'd be happy to go over your PR if you wish to add such capabilities.

we just ran into this same issue.  will this issue be resolved soon?


Suspicious console.log

I've noticed extra output when running this plugin.
I believe it originates from: https://github.com/Yash-Singh1/eslint-plugin-userscripts/blob/588ee7071854fd2d0eb505c8e3cfabac4c3f854f/lib/rules/compat-grant.js#L38-L44

Sorry, I think I left it behind when I was debugging earlier, I now added a commit fixing this.


[RFC] Github Apps for Backend Authentication Browser Local Storage Risks

Status: Open for comments

Need
This is more of a question than anything, because I was unable to find any documentation around it.
While testing backstage with the GitHub Apps for Backend Authentication as documented, we discovered that a github access token is created and put into local browser storage. That access token is then used to invoke the github api from the browser for many operations, such as loading pr data for the pull requests plugin, etc.
This means any successful XSS attack against a backstage deployment that uses this authentication mechanism would gain access to this user's github access token.
We need a better storage target for this github access token, one on the backend that is secured by a session cookie which isn't vulnerable to XSS and which we can mitigate against CSRF attacks. We're also open to alternative solutions which would protect the token from these kinds of attack vectors (XSS, CSRF).
Note that we have not yet tested backstage with a user login authentication provider.
Proposal
If there is already a way to configure backstage and/or the github apps auth provider to store access tokens in targets other than local browser storage, please point to existing documentation (or create it) that details how such a configuration can be achieved.
Alternatives
No alternatives considered.
Risks
Storing a token credential on the backend is only as safe as the credential that authenticates backend access from the frontend, and measures such as session cookies must be protected against their own class of attack vectors such as CSRF.

You may notice that the GitHub provider is the only one that does this, and tbh the GitHub OAuth app flow and its lack of refresh is a bit mind blowing. I'm figuring it was built for different purposes than how many OAuth apps are used today. 🤷 It is actually possible to wire up the GithubAuth API in the frontend so that it doesn't store the token in local storage by omitting the StaticAuthSessionManager, but that means users have to log in to GitHub a lot 😅
Imo the real way forward here is to move over to GitHub Apps instead, as they support expiring access tokens and refresh tokens, which we end up storing in http-only secure cookies.
When it comes to the overall auth architecture in Backstage it is optimized for keeping plugin development friction flow, and especially have the plugin backends decoupled from each other. Because of that we keep auth state client-side rather than in a session database or anything of that sort.

It is actually possible to wire up the GithubAuth API in the frontend so that it doesn't store the token in local storage by omitting the StaticAuthSessionManager, but that means users have to log in to GitHub a lot

That sounds like it could be an acceptable solution if it means covering it against XSS. How would one accomplish this? Can it be achieved from the app-config.yaml, or would we have to fork the github auth provider package and use a custom variation of it?

Imo the real way forward here is to move over to GitHub Apps instead, as they support expiring access tokens and refresh tokens, which we end up storing in http-only secure cookies.

We do have the backstage github app set up at the organization level, and are referencing it from a github integration in the app-config.yaml, but tbh, I'm still not sure what it actually does. It seems that the things we have been using so far, which are importing existing components from github repos, and test driving the pull requests plugin from roadiehq, are using the gh auth provider with that browser local storage token.
I understand that keeping auth state client-side helps optimize for development friction, but these tokens are critical secrets and a stolen one could lead to disastrous consequences. Even with our best efforts to prevent successful XSS attacks, I don't feel good about letting backstage live in a production deployment with gh access tokens kept in browser local storage.

@Rugvip could you please address the followup questions I asked above? This is a pretty big barrier to adoption for us.

Leaving the storage out is a bit deeper customization so you'll have to do it through code. You replicate the creation of the GithubAuth instance but leave out the AuthSessionStore (not the StaticAuthSessionManager, got that wrong in the previous comment 😅). Then you register that implementation as the implementation of the GithubAuth API in your app like this. There's a bit more info on working with APIs in the docs
The GitHub Apps are currently primarily used for ingesting data in the backend, so for example reading catalog-info.yaml files from GitHub. If you dig around the codebase it's anything that uses the GithubCredentialsProvider that supports auth via GitHub Apps.


Django-salesforce is not compatible with the new django-debug-toolbar 4.1

Django-debug-toolbar 4.1.0 has been released on May 16, 2023  - really new.
It was after Django 4.2 and therefore it is not blocking for django-salesforce 4.2 release

Fixed now by b367511.
Initialization of salesforce...CursorWrapper is now compatible with a standard django...CursorWrapper.
Django-debug-toolbar is useful for Salesforce databases also. The SQL button displays SQL strings in a form before they are translated to Salesforce SOQL, but that is still very useful. The Explain button [Expl] in the SQL panel runs a related SOQL EXPLAIN command in Salesforce for the selected SQL.


Add verify_by_parameter function to Enr

I want an easy way to check if 2 Enr's are equal to each other.
Doing enr1 == enr2 doesn't work because you can have the same Enr with different signatures because of the random nouce I believe.
1Enr { id: Some("v4"), seq: 1, NodeId: 0x7c7c8dea6ad400ec9d52fec8e896484b5cb482e224e96d26fed48dc8b4351760, signature: "59a6e974107d34db2352a6518f38923d757f8c0fa16509de928c623ce3a5f472708ada60389170c9b58412595a9014d1e58c95e7cfc7a0bd61646f7679bbf694", IpV4 UDP Socket: Some(<IP_ADDRESS>:4444), IpV6 UDP Socket: None, IpV4 TCP Socket: None, IpV6 TCP Socket: None, Other Pairs: [("c", "967420302e312e312d616c7068612e312d336134623963"), ("secp256k1", "a1035d7c15bd8f796805b2d03d7bef6686b65659e0f2d3fc8163f35faf865379bc13")] }
2Enr { id: Some("v4"), seq: 1, NodeId: 0x7c7c8dea6ad400ec9d52fec8e896484b5cb482e224e96d26fed48dc8b4351760, signature: "9c6e457408f90025d5df6dd2e0c7e3f38496d79284b0af77cc0107ae1a23a61523177fd0de927e15cfd40255b658d4b315d5df85cdc3aa61946770ef1dfda2ea", IpV4 UDP Socket: Some(<IP_ADDRESS>:4444), IpV6 UDP Socket: None, IpV4 TCP Socket: None, IpV6 TCP Socket: None, Other Pairs: [("c", "967420302e312e312d616c7068612e312d336134623963"), ("secp256k1", "a1035d7c15bd8f796805b2d03d7bef6686b65659e0f2d3fc8163f35faf865379bc13")] }
3Enr { id: Some("v4"), seq: 1, NodeId: 0x7c7c8dea6ad400ec9d52fec8e896484b5cb482e224e96d26fed48dc8b4351760, signature: "ff3e36da2e8b69780cbf22b4d9699237b2d23b3a977fab85b5bdd3dd931f40a325a606fcf50758756bd533f057e51093e8a426d426da821b7029de92acf62bf7", IpV4 UDP Socket: Some(<IP_ADDRESS>:4444), IpV6 UDP Socket: None, IpV4 TCP Socket: None, IpV6 TCP Socket: None, Other Pairs: [("c", "967420302e312e312d616c7068612e312d336134623963"), ("secp256k1", "a1035d7c15bd8f796805b2d03d7bef6686b65659e0f2d3fc8163f35faf865379bc13")] }', portalnet/src/discovery.rs:509:9

Here is an example all 3 of these Enr's are the same except for the signatures, but all of the signatures are valid you could swap them and it wouldn't make a difference.
Currently there is no way to quickly check if 2 Enr's are the same because of this, without manually checking all the content. I don't want to manually do it ideally I could just do.
if enr1.verify_with_param(enr2.signature) && enr2.verify_with_param(enr1.signature) {
    todo:
}

I think PartialEq should work like this as well as comparing the signatures isn't a valid way to tell if the Enr's are the same or not.
I am open to if you guys want to implement this a certain way, I am not picky I just want to be able to do if enr1 == enr2 and it actually be a valid if case. Without the edge case I pointed to above.

@AgeManning @divagant-martian please review

Thanks, I'll get to this monday night. Could you please add a test that creates the differing Enrs and then compares them?

Thanks, I'll get to this monday night. Could you please add a test that creates the differing Enrs and then compares them?

Sounds good I wrote the tests for both secpk256k1 && ed25519.
The edge I posted about above looks like it only exists on secpk256k1. ed25519 signatures are deterministic it seems.

Hey,
I can see the issue. I recall there was a PR to add this non-determinism into the secp256k1 keys for correct security. There was a discussion about the non-equality at the time I think.
I have a few thoughts on this.
I think its a good idea to add a function that is like compare_content(&self, other: &Enr).
I'm hesitent to change the PartialEq and Hash traits however, because these ENRs are actually different. If we change the PartialEq and Hash traits, then they become indistinguishable. In hashmaps, if we have these two different ENRs they can replace each other undetected and if there's multiple versions floating in a DHT they could oscillate around in people's hashmaps as indistinguishable entities. I'm not sure its possible, but maybe there is some security risk in not checking signatures when over-writing other ENRs in our hashmaps, like maybe invalid sigs can get in there (I can't think of how atm).
I would prefer that we still maintain the ability to distinguish between these ENRs. One of the reasons is that I would consider it a small bug or issue if someone is signing the same content over and over again without increasing the sequence number. Or just signing the same content using sequence 0 if there's a chance that ENR is already out in the wild.  I'm not sure about your particular use-case, but I'd think it shouldn't be common practice to sign ENR contents if they have already be signed in the past.
In most of the code i've used with ENRs we just check the seq-no and node-id then use the largest seq-no (regardless of anything else). Its up to the node doing the signing that the most up-to-date information is contained in the highest sequence number it has signed.
If we keep them indistinguishable, then the differences can be detected in the network and we can find the source of the issue and correct it. If they are identical (via the PartialEq and Hash traits) then this becomes a lot harder.
Would adding a compare_content function or equivalent resolve your issues?

Yeah that would be fine, I will change my PR to what you suggested  when I get a chance.

@AgeManning ok I implemented your suggestion!

@KolbyML why draft? anything else you plan to add?

@divagant-martian I was just double checking something, It looks good.


Decoupled DbSupportFactory so that it can be used as a hook to custom…

Hi,
As we needed to customize the DbSupport for oracle and there was no real fix except extending the flyway class and overriding lots of methods to do so I decided to fix the root cause.
By moving this into a pluggable instance it can more easily be used to support newer database, even if the official flyway support is not yet ready. It would even be possible to start splitting out the db support so that the flyway-core can be less aware of all databases that it can support.
Kind regards,
Kris

Small example, I wanted to get the current logged in user of the application to be in the installed by field:
        flyway.setDbSupportFactory(new DbSupportFactory() {
            @Override
            public DbSupport createDbSupport(final Connection connection, final boolean b) {
                return new OracleDbSupport(connection) {
                    @Override
                    public String getCurrentUserFunction() {
                        return "'" + FlywayService.this.sessionContext.getCallerPrincipal().getName() + "'";
                    }
                };
            }
        });

What was the reason you needed to customize things? Is there a potential improvement we should make in the main sources?

Hey Axel,
we had a requirement to pass the user doing the flyway migrations (we wrote a little web application on top of flyway) into the database. So there was a need to set DbSupportFactory in our code,
kind regards,Gert
Date: Thu, 1 Oct 2015 10:58:34 -0700
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>CC<EMAIL_ADDRESS>Subject: Re: [flyway] Decoupled DbSupportFactory so that it can be used as a hook to custom… (#1069)
What was the reason you needed to customize things? Is there a potential improvement we should make in the main sources?
—
Reply to this email directly or view it on GitHub.

hi hi ...  I might be able to add a bit of color.  at my workplace, we use statement-based replication => we can't use the USER() function that is "baked" into MySQLDBSupport.
https://dev.mysql.com/doc/refman/5.7/en/replication-rbr-safe-unsafe.html

I really need this, because I want to change delimeter in DB2 sql sources, by set custom DELIMITER_KEYWORD, for example MySql style.
http://stackoverflow.com/questions/30897357/flyway-db2-change-delimiter-not-working

See #1151 which eliminates the vast majority of the reported needs for this. Closing.


wait_for_lease loop indefinitely although the guest ip is ok

System Information
ubuntu 19.10
Terraform v0.12.21
terraform-provider-libvirt 0.6.1+git.1578064534.db13b678
Compiled against library: libvirt 4.0.0
Using library: libvirt 5.4.0
Running hypervisor: QEMU 4.0.0
Running against daemon: 5.4.0
guest vm: redhat 8.1 with qemu-guest-agent
Description of Issue/Question
my guest vm get ip well from dhcp but wait_for_lease do not detect it
Setup
provider "libvirt" {
    uri = "qemu:///system"
}

resource "libvirt_volume" "my-vm-disk-os-qcow2" {
  name   = "my-vm-disk-os-qcow2"
  pool   = "vms"
  source = "/var/lib/libvirt/vms/packer-centos8-base-img/packer-centos8-base"
}

resource "libvirt_volume" "my-vm-disk-data-qcow2" {

  name = "my-vm-disk-data-qcow2"
  pool = "vms"
  size = "20971520"
  format = "qcow2"

  lifecycle {
    prevent_destroy = false
  }
}

resource "libvirt_domain" "my-vm" {
  name = "my-vm"
  memory = "1024"
  vcpu = 1

  disk { volume_id =  libvirt_volume.my-vm-disk-os-qcow2.id }
  disk { volume_id =  libvirt_volume.my-vm-disk-data-qcow2.id }

  network_interface {
     bridge = "br0"
     hostname = "principal"
     wait_for_lease = true
   }

  console {
    type = "pty"
    target_port = "0"
    target_type = "serial"
  }

  graphics {
    type = "vnc"
    listen_type = "address"
  }
}

Steps to Reproduce Issue
(Include debug logs if possible and relevant).

Additional information:
Logs:
2020-03-01T16:07:38.692+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:38 [DEBUG] ifaces with addresses: []
2020-03-01T16:07:38.692+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:38 [DEBUG] 52:54:00:62:F9:5A doesn't have IP address(es) yet...
2020-03-01T16:07:38.692+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:38 [DEBUG] IP address not found for iface=52:54:00:62:F9:5A: will try in a while
2020-03-01T16:07:38.692+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:38 [TRACE] Waiting 10s before next try
2020-03-01T16:07:43.633+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:43 [WARN] WaitForState timeout after 5m0s
2020-03-01T16:07:43.633+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:43 [WARN] WaitForState starting 30s refresh grace period
2020-03-01T16:07:43.633+0100 [DEBUG] plugin.terraform-provider-libvirt: 2020/03/01 16:07:43 [DEBUG] wait-for-leases was successful
2020/03/01 16:07:43 [DEBUG] libvirt_domain.nitk-front: apply errored, but we're indicating that via the Error pointer rather than returning it: Error: couldn't retrieve IP address of domain.Please check following:

is the domain running proplerly?
has the network interface an IP address?
Networking issues on your libvirt setup?
is DHCP enabled on this Domain's network?
if you use bridge network, the domain should have the pkg qemu-agent installed
IMPORTANT: This error is not a terraform libvirt-provider error, but an error caused by your KVM/libvirt infrastructure configuration/setup

Guest infos
the ip is well got by the guest (dhcp):
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet <IP_ADDRESS>  netmask <IP_ADDRESS>  broadcast <IP_ADDRESS>
inet6 fe80::5054:ff:fe62:f95a  prefixlen 64  scopeid 0x20
ether 52:54:00:62:f9:5a  txqueuelen 1000  (Ethernet)
RX packets 8975  bytes 12680520 (12.0 MiB)
RX errors 0  dropped 0  overruns 0  frame 0
TX packets 3448  bytes 224826 (219.5 KiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

additionnal info:
this:
output "ip" {
value = libvirt_domain.vm-template.network_interface[0]
}
will show empty address
and:
virsh domifaddr my-dom  --full --source lease won't show anything
and
virsh domifaddr nitk-data  --full --source agent will show ip and mac
maybe it doesn't use agent to get ip?

@gaetanquentin  I don't have time to dive much on this, but as potential hint you could verify if your vms host have qemu-agent pkg installed https://www.google.com/search?client=firefox-b-e&q=qemu-agent

hi @MalloZup . as said in my first post qemu-ga is well installed on  guests . but how to verify that terraform uses the agent to retreive ip/mac information?

hi @gaetanquentin  please run
TF_LOG=DEBUG terraform apply
and post the output. But I know for sure that terraform use the qemu-agent if is there, since I remeber the code there.

I would like to progress this issue with more information. I think I run into the same problem or at least it looks the same.
I'm trying to create a VM with terraform and have it configured with cloud-init. The Qemu-agent is also installed with the cloud-init script.
Running on Ubuntu 18.04 with libvirt etc installed from default package sources
2020/07/16 11:28:54 [INFO] Terraform version: 0.12.28
2020/07/16 11:28:54 [INFO] Go runtime version: go1.12.13
2020/07/16 11:28:54 [DEBUG] found valid plugin: "libvirt", "0.0.0", "/home/frederic/.terraform.d/plugins/terraform-provider-libvirt" (master commit b88a9dbb4d11b6c0af7b2324a48016a71a061855 (from 15.07.20))

I thought I maybe ran into the timeout problem described in #731 but it just waits longer and fails then :(.
The VM configuration is pretty basic, I use the Ubuntu 18.04 cloud image and create a default drive.
# Create the machine
resource "libvirt_domain" "domain-ubuntu" {
  name = var.hostname
  memory = var.memoryMB
  vcpu = var.cpu

  disk {
       volume_id = libvirt_volume.os_image_resized.id
  }
  network_interface {
       vepa = "eno1"
       wait_for_lease = true
  }

  cloudinit = libvirt_cloudinit_disk.commoninit.id

  # IMPORTANT
  # Ubuntu can hang is a isa-serial is not present at boot time.
  # If you find your CPU 100% and never is available this is why
  console {
    type        = "pty"
    target_port = "0"
    target_type = "serial"
  }

  graphics {
    type = "spice"
    listen_type = "address"
    autoport = "true"
  }

}

If I run virsh qemu-agent-command runner '{"execute": "guest-network-get-interfaces"}' multiple times while the process runs it works as soon as the agent is installed in the cloud-init process and gives
{
	"return": [{
		"name": "lo",
		"ip-addresses": [{
			"ip-address-type": "ipv4",
			"ip-address": "<IP_ADDRESS>",
			"prefix": 8
		}, {
			"ip-address-type": "ipv6",
			"ip-address": "::1",
			"prefix": 128
		}],
		"statistics": {
			"tx-packets": 176,
			"tx-errs": 0,
			"rx-bytes": 15340,
			"rx-dropped": 0,
			"rx-packets": 176,
			"rx-errs": 0,
			"tx-bytes": 15340,
			"tx-dropped": 0
		},
		"hardware-address": "00:00:00:00:00:00"
	}, {
		"name": "ens3",
		"ip-addresses": [{
			"ip-address-type": "ipv4",
			"ip-address": "<IP_ADDRESS>",
			"prefix": 24
		}, {
			"ip-address-type": "ipv6",
			"ip-address": "fe80::5054:ff:fe2e:66f",
			"prefix": 64
		}],
		"statistics": {
			"tx-packets": 88054,
			"tx-errs": 0,
			"rx-bytes": 308616688,
			"rx-dropped": 0,
			"rx-packets": 121612,
			"rx-errs": 0,
			"tx-bytes": 7824138,
			"tx-dropped": 0
		},
		"hardware-address": "52:54:00:2e:06:6f"
	}, {
		"name": "docker0",
		"ip-addresses": [{
			"ip-address-type": "ipv4",
			"ip-address": "<IP_ADDRESS>",
			"prefix": 16
		}],
		"statistics": {
			"tx-packets": 0,
			"tx-errs": 0,
			"rx-bytes": 0,
			"rx-dropped": 0,
			"rx-packets": 0,
			"rx-errs": 0,
			"tx-bytes": 0,
			"tx-dropped": 0
		},
		"hardware-address": "02:42:18:11:86:e8"
	}]
}

The debug log reapeats this message until the 5min timeout. After about 2min the agent installation is finished in the VM and the virsh command (see above) works.
2020-07-16T11:33:45.138+0200 [DEBUG] plugin.terraform-provider-libvirt: 2020/07/16 11:33:45 [DEBUG] waiting for network address for iface=52:54:00:2E:06:6F
2020-07-16T11:33:45.138+0200 [DEBUG] plugin.terraform-provider-libvirt: 2020/07/16 11:33:45 [DEBUG] qemu-agent is not used
2020-07-16T11:33:45.138+0200 [DEBUG] plugin.terraform-provider-libvirt: 2020/07/16 11:33:45 [DEBUG] no interfaces could be obtained with qemu-agent: falling back to the libvirt API
2020-07-16T11:33:45.138+0200 [DEBUG] plugin.terraform-provider-libvirt: 2020/07/16 11:33:45 [DEBUG] Interfaces info obtained with libvirt API:
2020-07-16T11:33:45.139+0200 [DEBUG] plugin.terraform-provider-libvirt: ([]libvirt.DomainInterface) {
2020-07-16T11:33:45.139+0200 [DEBUG] plugin.terraform-provider-libvirt: }

debug_log.txt
It seems like the plugin does not pick up an agent correctly when it's installed while trying?
If you need any more data or have ideas what I could try I would be very happy to help.

I have this issue when using terraform agains MicroOS (aka tumbleweed) based libvirt (libvirt-6.5.0-1.1.x86_64), qemu (qemu-5.0.0-3.1.x86_64). In the log file of libvirt I see:
libvirtd[19101]: internal error: unable to handle agent type: pty
libvirtd[19101]: g_main_context_unref: assertion 'context != NULL' failed
libvirtd[19101]: Cannot connect to QEMU guest agent for slepos-virt-28

I looked how qemu-agent is being setup and I changed its channel from using pty to use unix socket. This fixed it for me, but it was done in hacky way.

This change fixed it for me:
diff --git a/libvirt/domain_def.go b/libvirt/domain_def.go
index f68b7abd..04e55339 100644
--- a/libvirt/domain_def.go
+++ b/libvirt/domain_def.go
@@ -62,6 +62,9 @@ func newDomainDef() libvirtxml.Domain {
                        },
                        Channels: []libvirtxml.DomainChannel{
                                {
+                                       Source: &libvirtxml.DomainChardevSource{
+                                               UNIX: &libvirtxml.DomainChardevSourceUNIX{},
+                                       },
                                        Target: &libvirtxml.DomainChannelTarget{
                                                VirtIO: &libvirtxml.DomainChannelTargetVirtIO{
                                                        Name: "org.qemu.guest_agent.0",

It changes default to use guest agent over unix. I'm not sure if this is acceptable in general.

thx @aaannz, Yeah good question. It might be something need research/tests to see this change.
A good solution would be perhaps to let the provider deterimine intelligently which source need to be used. But it will cost some efforts to implement

FYI qemu_agent = true was missing in the libvirt_domain resource declaration. It worked fine then.

FYI qemu_agent = true was missing in the libvirt_domain resource declaration. It worked fine then.

Then I was solving different issue with the same symptoms. In my case terraform is controlled by sumaform and there is qemu_agent = true

FYI qemu_agent = true was missing in the libvirt_domain resource declaration. It worked fine then.

Then I was solving different issue with the same symptoms. In my case terraform is controlled by sumaform and there is qemu_agent = true

@aaannz I think you need something like this in your cloud-init. I don't think the agent is starting at first boot
package_update: true
packages:
    - qemu-guest-agent
runcmd:
   - systemctl start qemu-guest-agent.service

closing this issue as duplicated of #765  @aaannz I guess the problem is same in that issue. I guess something has changed on the qemu-agent new package

@MalloZup I think the issues are actually two separate ones! In #765 the issue is, that the channel type for the qemu-guest-agent is not generated correctly.
However, this issue is about terraform timing out although the network is properly setup, the domains are reachable, the domains have qemu-guest-agent running and reachable and have a working network configuration (and I can still reproduce this, after fixing #765).
Fixing #765 is a prerequisite to fixing this issue it seems.

@MalloZup I think I have to revise my previous comment. My pull request (which is actually @aaannz 's suggestion) fixes the issue also for this case (where wait_for_lease = true and qemu_agent = true on a bridge interface that is handled externally).
Due to the various bug reports tracking this got a bit confusing, but I'm also positive now, that this here issue is just a symptom of #765. No re-opening required!

Not sure if I should raise a new issue because it seems to be the fixed one. I can reproduce it though.
System information
Host: OS Ubuntu 20.04.2 LTS
Hypervisor: QEMU 4.2.1, libvirt 6.0.0
Terraform v1.0.2
on linux_amd64

provider registry.terraform.io/dmacvicar/libvirt v0.6.10
provider registry.terraform.io/hashicorp/template v2.2.0

Guest OS: Ubuntu 20.04
Issue
I get the following message:
timeout while waiting for state to become 'all-addresses-obtained' (last state: 'waiting-addresses', timeout: 5m0s)
however, the guest VM receives IP address from DHCP and this IP can be obtained with
virsh qemu-agent-command runner '{"execute": "guest-network-get-interfaces"}'.
Setup
provider "libvirt" {
  uri = "qemu:///system"
}

resource "libvirt_pool" "ubuntu" {
  name = "tf"
  type = "dir"
  path = var.libvirt_disk_path
}

resource "libvirt_volume" "ubuntu-qcow2" {
  name = "ubuntu-qcow2"
  pool = libvirt_pool.ubuntu.name
  source = var.ubuntu_18_img_url
  format = "qcow2"
}

data "template_file" "user_data" {
  template = file("${path.module}/config/cloud_init.yml")
}

data "template_file" "network_config" {
  template = file("${path.module}/config/network_config.yml")
}

resource "libvirt_cloudinit_disk" "commoninit" {
  name           = "commoninit.iso"
  user_data      = data.template_file.user_data.rendered
  network_config = data.template_file.network_config.rendered
  pool           = libvirt_pool.ubuntu.name
}

resource "libvirt_domain" "domain-ubuntu" {
  name   = var.vm_hostname
  memory = "512"
  qemu_agent = true
  vcpu   = 1

  cloudinit = libvirt_cloudinit_disk.commoninit.id

  network_interface {
    wait_for_lease = true
    vepa = "eno1"
  }

  console {
    type        = "pty"
    target_port = "0"
    target_type = "serial"
  }

  disk {
    volume_id = libvirt_volume.ubuntu-qcow2.id
  }

  graphics {
    type        = "spice"
    listen_type = "address"
    autoport    = true
  }
}

cloud_init.yml
ssh_pwauth: true
disable_root: false
chpasswd:
  list: |
     root:password
  expire: false
users:
  - name: ubuntu
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: users, admin
    home: /home/ubuntu
    shell: /bin/bash
    lock_passwd: false
    ssh-authorized-keys:
      - ssh-rsa AAAAB3NzaC1yc...

package_update: true

packages:
  - qemu-guest-agent

runcmd:
  - [ systemctl, daemon-reload ]
  - [ systemctl, enable, qemu-guest-agent.service ]
  - [ systemctl, start, qemu-guest-agent.service ]

final_message: "The system is finally up, after $UPTIME seconds"

network_config.yml
version: 2
ethernets:
  ens3:
    dhcp4: true

DEBUG log
2021-07-11T15:27:21.019Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:21 [INFO] Creating libvirt domain at qemu:///system
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:21 [DEBUG] Generated XML for libvirt domain:
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:   <domain type="kvm">
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <name>kem-ubuntu-test</name>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <memory unit="MiB">512</memory>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <vcpu>1</vcpu>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <os>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <type>hvm</type>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       </os>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <features>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <pae></pae>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <acpi></acpi>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <apic></apic>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       </features>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <cpu></cpu>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       <devices>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <disk type="volume" device="disk">
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <driver name="qemu" type="qcow2"></driver>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <source pool="tf" volume="ubuntu-qcow2"></source>
2021-07-11T15:27:21.020Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <target dev="vda" bus="virtio"></target>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </disk>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <disk type="file" device="cdrom">
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <driver name="qemu" type="raw"></driver>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <source file="/export/kem-pool/kvm/images2/commoninit.iso"></source>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <target dev="hdd" bus="ide"></target>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </disk>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <interface type="direct">
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <mac address="52:54:00:aa:00:e1"></mac>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <source dev="eno1" mode="vepa"></source>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <model type="virtio"></model>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </interface>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <console>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <target type="serial" port="0"></target>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </console>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <channel type="unix">
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <target type="virtio" name="org.qemu.guest_agent.0"></target>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </channel>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <graphics type="spice" autoport="yes">
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <listen type="address" address="<IP_ADDRESS>"></listen>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </graphics>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           <rng model="virtio">
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:               <backend model="random">/dev/urandom</backend>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:           </rng>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:       </devices>
2021-07-11T15:27:21.021Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:   </domain>
2021-07-11T15:27:21.626Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:21 [INFO] Domain ID: 036a7375-3018-4356-aec4-eeeaed20f7d3
2021-07-11T15:27:21.626Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:21 [DEBUG] Waiting for state to become: [all-addresses-obtained]
2021-07-11T15:27:26.627Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] waiting for network address for iface=52:54:00:AA:00:E1
2021-07-11T15:27:26.627Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] Not implemented
2021-07-11T15:27:26.627Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] no interfaces could be obtained with qemu-agent: falling back to the libvirt API
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] Interfaces info obtained with libvirt API:
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: ([]libvirt.DomainInterface) <nil>
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10:
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] ifaces with addresses: []
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] 52:54:00:AA:00:E1 doesn't have IP address(es) yet...
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [DEBUG] IP address not found for iface=52:54:00:AA:00:E1: will try in a while
2021-07-11T15:27:26.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:27:26 [TRACE] Waiting 10s before next try

...

libvirt_domain.domain-ubuntu: Still creating... [5m0s elapsed]
2021-07-11T15:32:21.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:32:21 [WARN] WaitForState timeout after 5m0s
2021-07-11T15:32:21.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:32:21 [WARN] WaitForState starting 30s refresh grace period
2021-07-11T15:32:21.628Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:32:21 [DEBUG] wait-for-leases was successful
╷
│ Error: Error: couldn't retrieve IP address of domain id: 036a7375-3018-4356-aec4-eeeaed20f7d3. Please check following:
│ 1) is the domain running proplerly?
│ 2) has the network interface an IP address?
│ 3) Networking issues on your libvirt setup?
│  4) is DHCP enabled on this Domain's network?
│ 5) if you use bridge network, the domain should have the pkg qemu-agent installed
│ IMPORTANT: This error is not a terraform libvirt-provider error, but an error caused by your KVM/libvirt infrastructure configuration/setup
│  timeout while waiting for state to become 'all-addresses-obtained' (last state: 'waiting-addresses', timeout: 5m0s)
│
│   with libvirt_domain.domain-ubuntu,
│   on main.tf line 34, in resource "libvirt_domain" "domain-ubuntu":
│   34: resource "libvirt_domain" "domain-ubuntu" {
│
╵
2021-07-11T15:32:21.641Z [DEBUG] provider.terraform-provider-libvirt_v0.6.10: 2021/07/11 15:32:21 [DEBUG] cleaning up connection for URI: qemu:///system
2021-07-11T15:32:21.644Z [DEBUG] provider: plugin process exited: path=.terraform/providers/registry.terraform.io/dmacvicar/libvirt/0.6.10/linux_amd64/terraform-provider-libvirt_v0.6.10 pid=3115120
2021-07-11T15:32:21.644Z [DEBUG] provider: plugin exited

NIC XML
<interface type="direct">
  <mac address="52:54:00:aa:00:e1"/>
  <source dev="eno1" mode="vepa"/>
  <target dev="macvtap16"/>
  <model type="virtio"/>
  <alias name="net0"/>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</interface>

Channel qemu-ga XML
<channel type="unix">
  <source mode="bind" path="/var/lib/libvirt/qemu/channel/target/domain-85-kem-ubuntu-test/org.qemu.guest_agent.0"/>
  <target type="virtio" name="org.qemu.guest_agent.0" state="connected"/>
  <alias name="channel0"/>
  <address type="virtio-serial" controller="0" bus="0" port="1"/>
</channel>

When I run virsh qemu-agent-command kem-ubuntu-test '{"execute": "guest-network-get-interfaces"}' I can see the assigned IP:
{"return":[{"name":"lo","ip-addresses":[{"ip-address-type":"ipv4","ip-address":"<IP_ADDRESS>","prefix":8},{"ip-address-type":"ipv6","ip-address":"::1","prefix":128}],"statistics":{"tx-packets":126,"tx-errs":0,"rx-bytes":10246,"rx-dropped":0,"rx-packets":126,"rx-errs":0,"tx-bytes":10246,"tx-dropped":0},"hardware-address":"00:00:00:00:00:00"},{"name":"ens3","ip-addresses":[{"ip-address-type":"ipv4","ip-address":"<IP_ADDRESS>","prefix":24},{"ip-address-type":"ipv6","ip-address":"fe80::5054:ff:feaa:e1","prefix":64}],"statistics":{"tx-packets":5426,"tx-errs":0,"rx-bytes":21282372,"rx-dropped":0,"rx-packets":12713,"rx-errs":0,"tx-bytes":421707,"tx-dropped":0},"hardware-address":"52:54:00:aa:00:e1"}]}

FYI qemu_agent = true was missing in the libvirt_domain resource declaration. It worked fine then.

Then I was solving different issue with the same symptoms. In my case terraform is controlled by sumaform and there is qemu_agent = true

@aaannz I think you need something like this in your cloud-init. I don't think the agent is starting at first boot
package_update: true
packages:
    - qemu-guest-agent
runcmd:
   - systemctl start qemu-guest-agent.service

@ajilty That would not work since cloud-init executes runcmd in an earlier stage than package. And BTW, package_update: true is not necessary when using packages since it internally performs an update.
On my official Debian11 cloud image, the order is described in /etc/cloud/cloud.cfg:
[...]

# The modules that run in the 'init' stage
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - disk_setup
 - mounts
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh

# The modules that run in the 'config' stage
cloud_config_modules:
# Emit the cloud config ready event
# this can be used by upstart jobs for 'start on cloud-config'.
 - emit_upstart
 - ssh-import-id
 - locale
 - set-passwords
 - grub-dpkg
 - apt-pipelining
 - apt-configure
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd
 - byobu

# The modules that run in the 'final' stage
cloud_final_modules:
 - package-update-upgrade-install
 - fan
 - puppet
 - chef
 - salt-minion
 - mcollective
 - rightscale_userdata
 - scripts-vendor
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

[...]


uncurryN returns a ramda style curried function from a standard curried function?

const addFour = a => b => c => d => a + b + c + d;
const uncurriedAddFour = R.uncurryN(4, addFour);
uncurriedAddFour(1, 2, 3, 4); //=> 10

This also works:
uncurriedAddFour(1, 2, 3)(4); //=> 10

Should this function add some additional explanation like "Note that, the returned function is an n-ary ramda style curried function" ?

Yes, that would be an improvement.  Do you want to create a PR or should I do it?

OK, I will create a PR.


Add instructions how / where to copy application configuration

When not using the jazz development environment / another jetty configuration, you have to supply plugin configuration files.
log4j.properties
scr.xml
services.xml
teamserver.properties
I'll show how and where to get these, and where you have to copy them.

I don't think writing yet another explanation of how to do this is really worth it. @rsjazz's Workshop is the best resource regarding different environments for plugin development, so following that to get our plugins running is the way to go.


Suggestion to move record update data to it's own method

This is to open a discussion.
We have a patch in our initializers, to strip away object on updates as our tables have a lot of columns, and our users can at any point extra all their data import it again. So we need to keep it at minimum.
Instead of doing a freedom patch we could just override this method.
Is this is something that you would consider?

Hi Jon. Thanks for the suggestion.

We have a patch in our initializers, to strip away object on updates as our tables have a lot of columns, and our users can at any point extra all their data import it again. So

The object column is a crucial part of PT, and a lot of PT features will not work without it. We consider the contents of the object column to be an internal implementation detail of PT. I'd be concerned about people overriding it and then being surprised when PT doesn't work.

.. we need to keep it at minimum.

What do you want to minimize? Disk usage? Number of records in the versions table? You can limit the number of versions for a given record (https://github.com/airblade/paper_trail#2e-limiting-the-number-of-versions-created) but of course that's not appropriate for every app.

I do like the term "freedom patch" by the way. 😆  The freedom to patch anything you want is one of the great strengths of ruby, in my opinion.

The object column is a crucial part of PT, and a lot of PT features will not work without it. We consider the contents of the object column to be an internal implementation detail of PT. I'd be concerned about people overriding it and then being surprised when PT doesn't work.

This is very true, we don't relay on so many of PT features, we mostly use it as it very convenient way to persist record changes, exclude attributes, save controller info included request uuid. So this would just make it possible to override, nothing recommended or for the README.
It's doable now to override recordable_object but returning nil, will result in json null and not real database null as of Rails 5.

What do you want to minimize? Disk usage? Number of records in the versions table? You can limit the number of versions for a given record (https://github.com/airblade/paper_trail#2e-limiting-the-number-of-versions-created) but of course that's not appropriate for every app.

We have maybe 150-200 columns on some of our tables, and if only one value is changed, will result in all attributes is stored in object, and we don't use them, as our undo only uses object_changes

So this would just make it possible to override, nothing recommended or for the README.

Yes, I see now why you added the # @api private comment, to discourage people from using it.
As written though, I don't like how the new method returns only a subset of the data to be recorded. I'd rather have a method that returns the entire set of data.
# lib/paper_trail/record_trail.rb
def data_for_update(probably, some, args)
  # returns a hash, the entire set of data, including timestamps,
  # transaction id, user-supplied metadata (http://bit.ly/2gFhjmL), etc.
end

You would then override it using Module#prepend.
# config/initializers/paper_trail.rb
module MyRecordTrailHacks
  def data_for_update
    data = super
    data[:object] = {}
    data
  end
end
::PaperTrail::RecordTrail.prepend(MyRecordTrailHacks)

I like this method extraction on it's own, regardless of whether it solves your problem. It separates the preparation of data from its persistence.
We should also extract data_for_create and data_for_destroy.
How does that sound?

Thanks for guiding me through this, merge_metadata do return a new object, so it's last in the data methods
I have changed as little as possible, for a short moment I got feeling, but rubocop stepped in 😄
Great, then this is win-win. This will make it easier to maintain my freedom (patch)

Thanks Jon, looks good.

Great, then this is win-win. This will make it easier to maintain my freedom (patch)

Freeeeeeedom!


chore Increase the default maximum depth limit for expressions

Proposed changes
In the master branch, it seems that larger expression depth is acceptable.
Problem summary
Describe your changes.
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[ ] Does it need to update dependencies
[ ] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

./run buildall


Unable to download file in some devices

I am try to download file at user specified(selected) location.
So Dio().download(..) will work on google pixel and mi mobiles but not allow us to download in samsung, vivo, one plus mobiles, for the selected path e.g., in download folder.
For Picking User specified path
        String url = file url;
        Directory? newDirectory;
        String? path;
        if (Platform.isAndroid) {
          path = await FilesystemPicker.open(
            title: 'Save to folder',
            context: context,
            rootDirectory: Directory("/storage/emulated/0/"),
            fsType: FilesystemType.folder,
            pickText: 'Save file to this folder',
            folderIconColor: primaryColor,
            requestPermission: () async =>
                await Permission.storage.request().isGranted,
          );
        }
        if (path == null) {
          newDirectory = await getExternalStorageDirectory();
        }
        await downloadFile(url, path ?? newDirectory!.path);
        showSuccessToast("File has been Downloaded to the Selected Folder!");

Download Function
Future<void> downloadFile(String url, String path) async {
  path += "/" + url.split("/").last;
  print("path " + path);
  print("here url is this " + url);
  try {
    await Dio().download(
      url,
      path,
    );
  } catch (e) {
    print("#########");
    print(e);
  }
}

Still this is an issue


UI/UX for displaying validation results

Need to flesh this out when #33 is done.
#33 is done.
Tasks

[x] Create a tabbed UI

[x] One tab for each resource that has been validated - where the tab shows the validation results for that resource
[x] IF only one resource is being validated, THEN do not show tabs
do not worry about *design of tabs at this stage - the only important thing is the ability to use them to see different validation results

[x] use the report_type=grouped option on the Good Tables API call

[x] Add this to our Good Tables javascript library

[x] Port over the CSS and HTML for the results from the Good Tables web service - see links below

[x] Port the HTML/logic for each "result group"
Don't port other elements at this stage - let's check in when it gets this far, and discuss further.

We basically want to implement a version of the reports displayed on good tables web service when using the UI. That UI uses the same base "app theme", and has a few extra classes for the report display here

Here is an example of that UI

Here is an example API call for the same results

https://github.com/okfn/goodtables-js/pull/4

@gvidon from a quick play with the UI and look at the code - it looks very good!
I have a bug though - it seems the schema being sent to good tables is not the schema of the file that is being validated.
Example: I add a resource with fields "id" and "amount", and yet the good tables validation says that my data headers are incorrect - that I should have "name, url, path, format, mediatype, encoding, bytes, hash, schema, dialect, sources, licences". Note that these are all the keys from the Resource object, but the schema that is sent to good tables should be the Resource.schema.

@pwalsh ok, will take a look

@gvidon I'm checking it, shuld be done in few hours.


CMake Successful, no Executables Found (Examples)

`$ rm CMakeCache.txt && cmake .
-- Building for: Visual Studio 17 2022
CMake Deprecation Warning at CMakeLists.txt:2 (cmake_policy):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument  value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.
-- Selecting Windows SDK version 10.0.20348.0 to target Windows 10.0.18363.
-- The C compiler identification is MSVC 19.32.31332.0
-- The CXX compiler identification is MSVC 19.32.31332.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.32.31326/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using module to find Vulkan
-- Could NOT find Vulkan (missing: Vulkan_LIBRARY Vulkan_INCLUDE_DIR)
Using bundled Vulkan library version
-- C:/Users/krisp/github/Vulkan/libs/vulkan/vulkan-1.lib
C:/Users/krisp/github/Vulkan/bin/
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/bloom
-- Found OpenMP_C: -openmp (found version "2.0")
-- Found OpenMP_CXX: -openmp (found version "2.0")
-- Found OpenMP: TRUE (found version "2.0")
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computecloth
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computecullandlod
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computeheadless
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computenbody
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computeparticles
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computeraytracing
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/computeshader
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/conditionalrender
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/conservativeraster
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/debugmarker
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/deferred
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/deferredmultisampling
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/deferredshadows
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/descriptorindexing
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/descriptorsets
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/displacement
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/distancefieldfonts
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/dynamicrendering
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/dynamicuniformbuffer
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/gears
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/geometryshader
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/gltfloading
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/gltfscenerendering
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/gltfskinning
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/graphicspipelinelibrary
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/hdr
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/imgui
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/indirectdraw
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/inlineuniformblocks
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/inputattachments
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/instancing
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/multisampling
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/multithreading
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/multiview
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/negativeviewportheight
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/occlusionquery
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/offscreen
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/oit
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/parallaxmapping
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/particlefire
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pbrbasic
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pbribl
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pbrtexture
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pipelines
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pipelinestatistics
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pushconstants
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/pushdescriptors
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/radialblur
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/rayquery
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/raytracingbasic
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/raytracingcallable
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/raytracingreflections
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/raytracingshadows
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/renderheadless
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/screenshot
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/shadowmapping
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/shadowmappingomni
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/shadowmappingcascade
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/specializationconstants
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/sphericalenvmapping
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/ssao
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/stencilbuffer
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/subpasses
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/terraintessellation
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/tessellation
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/textoverlay
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texture
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texture3d
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texturearray
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texturecubemap
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texturecubemaparray
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texturemipmapgen
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/texturesparseresidency
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/triangle
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/variablerateshading
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/vertexattributes
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/viewportarray
-- Generating project file for example in C:/Users/krisp/github/Vulkan/examples/vulkanscene
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/krisp/github/Vulkan`
The above output seems to run but then no executables are to be found and the bin dir is empty.
ex.
$ find -regex '.*triangle.*' ./android/examples/triangle ./android/examples/triangle/build.gradle ./android/examples/triangle/CMakeLists.txt ./android/examples/triangle/src ./android/examples/triangle/src/main ./android/examples/triangle/src/main/AndroidManifest.xml ./android/examples/triangle/src/main/java ./android/examples/triangle/src/main/java/de ./android/examples/triangle/src/main/java/de/saschawillems ./android/examples/triangle/src/main/java/de/saschawillems/vulkanSample ./android/examples/triangle/src/main/java/de/saschawillems/vulkanSample/VulkanActivity.java ./data/shaders/glsl/conservativeraster/triangle.frag ./data/shaders/glsl/conservativeraster/triangle.frag.spv ./data/shaders/glsl/conservativeraster/triangle.vert ./data/shaders/glsl/conservativeraster/triangle.vert.spv ./data/shaders/glsl/conservativeraster/triangleoverlay.frag ./data/shaders/glsl/conservativeraster/triangleoverlay.frag.spv ./data/shaders/glsl/renderheadless/triangle.frag ./data/shaders/glsl/renderheadless/triangle.frag.spv ./data/shaders/glsl/renderheadless/triangle.vert ./data/shaders/glsl/renderheadless/triangle.vert.spv ./data/shaders/glsl/tessellation/pntriangles.tesc ./data/shaders/glsl/tessellation/pntriangles.tesc.spv ./data/shaders/glsl/tessellation/pntriangles.tese ./data/shaders/glsl/tessellation/pntriangles.tese.spv ./data/shaders/glsl/triangle ./data/shaders/glsl/triangle/triangle.frag ./data/shaders/glsl/triangle/triangle.frag.spv ./data/shaders/glsl/triangle/triangle.vert ./data/shaders/glsl/triangle/triangle.vert.spv ./data/shaders/hlsl/conservativeraster/triangle.frag ./data/shaders/hlsl/conservativeraster/triangle.frag.spv ./data/shaders/hlsl/conservativeraster/triangle.vert ./data/shaders/hlsl/conservativeraster/triangle.vert.spv ./data/shaders/hlsl/conservativeraster/triangleoverlay.frag ./data/shaders/hlsl/conservativeraster/triangleoverlay.frag.spv ./data/shaders/hlsl/renderheadless/triangle.frag ./data/shaders/hlsl/renderheadless/triangle.frag.spv ./data/shaders/hlsl/renderheadless/triangle.vert ./data/shaders/hlsl/renderheadless/triangle.vert.spv ./data/shaders/hlsl/tessellation/pntriangles.tesc ./data/shaders/hlsl/tessellation/pntriangles.tesc.spv ./data/shaders/hlsl/tessellation/pntriangles.tese ./data/shaders/hlsl/tessellation/pntriangles.tese.spv ./data/shaders/hlsl/triangle ./data/shaders/hlsl/triangle/triangle.frag ./data/shaders/hlsl/triangle/triangle.frag.spv ./data/shaders/hlsl/triangle/triangle.vert ./data/shaders/hlsl/triangle/triangle.vert.spv ./examples/triangle ./examples/triangle/triangle.cpp ./examples/triangle.vcxproj ./examples/triangle.vcxproj.filters ./screenshots/triangle.jpg

The above output seems to run but then no executables are to be found and the bin dir is empty.

I'm still on VS2019, so I probably can't help. But can you check out the comments in https://github.com/SaschaWillems/Vulkan/issues/952 and see if that works for you?

Thanks so much for getting back! I'll keep updated I may try this from another shell, using mingw64 with msvc, the executable for that is cl and I may not be compiling correctly or something.
set(CMAKE_C_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.32.31326/bin/Hostx86/x86/cl.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.32.31326/bin/Hostx86/x86/cl.exe")
`
I totally forgot to mention I did this to the root CMakeLists.txt

Same result with or without the -G and -A x64. Maybe I should just use clang I am more familiar with it. Gotta find where its installed and I'll get back asap

No luck even using clang, clang somehow is pointing to MSVC or MSVC is being detected and the cl.exe is still being used. So I don't think its used clang

Closing this Issue as the issue was not building after configuring. Been a while since I used cmake.
cmake --build .
is what compiles... 👯♂


Propagate window-change

It would make sense to align the APIs, but I did implement something for awa-lwt.


Unread counters being reset

Weird one that I may not be explaining very clearly.
Every time I click on the top channel of the first server, it resets the unread counters of every other channel, on all servers.
The actual channel being clicked on does not matter, all that is required is for it to be at the top of the list.
The counter for a given channel is restored to its original value and incremented normally only after a new message has been sent to that channel.
Running The Lounge from source (5ff1496).

A couple of other users mentioned this, seems like the multi client support broke some client side selector which resets counters.

This can now be closed, since PR #720 fixed this and has been merged into master.


Enable mipmap extension pragmas

Fixes #598

Is this PR still required?  It looks like recent versions of Clang will compile kernels that use the mipmap built-in functions without an extension pragma.  Example: https://godbolt.org/z/dG65aTsTj
Note that Clang does currently require a kernel that uses the mipmap built-in functions to be compiled for OpenCL 2.0 or newer, so compiling with -cl-std=CL1.2 (or omitting -cl-std entirely) will generate an error.  I'm not sure if this is a bug or intentional, but noting it for completeness.
If the PR is still required we should update the conclusions in https://github.com/KhronosGroup/OpenCL-Docs/issues/82, which currently include the mipmap extensions in the set of "extensions that do not require a pragma".

It looks like the requirement to supply pragma was dropped in Clang 13, however we're still supporting implementations using Clang < 13.
Let me double check with our compiler team whether or not we need the pragma for these extensions to be present, or if we can patch Clang to allow this extension without the pragma.

In case it's helpful, I tested via Compiler Explorer all the way back to Clang 4 and it seems to work without the pragma, so the support has been around for a while, albeit still for OpenCL C 2.0 or newer: https://godbolt.org/z/MaxTYqxvs


3.3 Return type of toRef isn't doesn't not match Ref when using MaybeRefOrGetter and a generic

Vue version
3.3.2
Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-5fw3av?file=main.ts
Steps to reproduce
Look at the main.ts file and see type error for baz variable
What is expected?
Not to be a type error
What is actually happening?
type error
System Info
stackblitz

Any additional comments?
I think anytime toRef is used with a MaybeRefOrGetter type it should reduce down to a readonly Ref.

messing with types more and ultimately I think I can just work around this issue.  Realized that I can just explicitly the return variable as const foo: Ref<T> |  Readonly<Ref<T>>  which resolves my issues. Otherwise I don't think there is a way to have typescript simplify this naturally