fix createHandoffEvent activity.type & cleanup

Fixes #3242
Description
Sets the type on the returned Activity to ActivityTypes.Event in EventFactory.createHandoffEvent()
Specific Changes

Set returned Activity.type to ActivityTypes.Event
Cleanup imports, remove unnecessary cast
Add test coverage

Testing
Updated existing test with coverage for changes.

Pull Request Test Coverage Report for Build 522055734

0 of 0   changed or added relevant lines in 0 files are covered.
9 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.05%) to 84.732%

Files with Coverage Reduction
New Missed Lines
%

libraries/botbuilder-lg/src/templateExtensions.ts
1
84.48%

libraries/adaptive-expressions/src/triggerTrees/node.ts
8
91.7%

Totals

Change from base Build 522011158:
-0.05%

Covered Lines:
18184

Relevant Lines:
20491

💛  - Coveralls

Pull Request Test Coverage Report for Build 522055734

0 of 0   changed or added relevant lines in 0 files are covered.
9 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.05%) to 84.732%

Files with Coverage Reduction
New Missed Lines
%

libraries/botbuilder-lg/src/templateExtensions.ts
1
84.48%

libraries/adaptive-expressions/src/triggerTrees/node.ts
8
91.7%

Totals

Change from base Build 522011158:
-0.05%

Covered Lines:
18184

Relevant Lines:
20491

💛  - Coveralls


Fix large timeout duration in moderation buttons

Pull request checklist:

[x] CHANGELOG.md was updated, if applicable

Description
Limits the duration displayed in timeout moderation buttons to the max timeout duration, 2 weeks.
Initially I wanted to cut down the duration inputted by the user, but with the current implementation, that will require changing the inputted action after it has already been saved, which I'm not sure about.
Instead I opted for simply displaying >2w in the button when the duration exceeds the max duration, without changing the underlying action. I would like to hear if anyone has better ideas, or thinks that editing the action somehow is still the right way to go.
Fixes #2865

I think that looks a bit better as well, maybe I'll wait to hear another opinion about it and then change it.

I'm fine keeping it as >2


Add tests that mimic array-of-struct RGB

This is the default storage in JuliaImages. This ensures that methods
based on LoopVectorization will continue to work (an insurance policy
against future changes), and also makes it easy to check performance
(manually, since CI is bad for performance tests).
Currently, the performance on the RGB does not match the "in principle" 3x the corresponding grayscale. For a 3d output image of size 11x11x11, here are the timings I'm getting for filtering along a single dimension d:

d
t grayscale (μs)
t RGB (μs)
Expected based on grayscale
@simd only

1
4.5
27.5
13.5
42.2

2
1.8
14.1
5.4
48.5

3
1.1
5.2
3.3
48.8

Not sure if it's even fixable (meaning, we should switch to struct-of-arrays representation), but I wanted to know the answer and thought it would be better to document it. Certainly, especially for d>1 the performance gains relative to plain @simd (even with which LLVM fails to vectorize) are impressive.
Note that I constructed Rpre with a static range for its first range, hoping it would help.

Thanks as always for the tests!

also makes it easy to check performance
(manually, since CI is bad for performance tests).
Currently, the performance on the RGB does not match the "in principle" 3x the corresponding grayscale. For a 3d output image of size 11x11x11, here are the timings I'm getting for filtering along a single dimension d:

I'll take a look. In theory, some CPUs should be able to get close to the theoretic value.

Note that I constructed Rpre with a static range for its first range, hoping it would help.

It should help. Knowing the static size of any dimensions that are that small should help. LV assumes a length of around 1024 for dynamic dimensions, so when an axis is very small (particularly less than a few vector widths) this can be innaccuarate.
Also:
julia> using ArrayInterface

julia> x = [(rand(),rand(),rand()) for i in 1:11, j in 1:11];

julia> xr = reinterpret(reshape, Float64, x);

julia> ArrayInterface.axes(xr)
(Base.OneTo(3), Base.OneTo(11), Base.OneTo(11))

julia> ArrayInterface.axes(xr,1)
static(1):static(3)

The first one returns Base.OneTo(3) because there is a TODO to implement an ArrrayInterface version. Seems like it should just be a map.


update new Co-Chair to README.md

made changes in Chair and added a new Co-Chair

Look good to me!

/cc @robcube


"Drain Before Delete" support for RKE2 machine pools

A new flag should be supported on machine pool definition to designate if nodes should be drained before they are deleted. TBD if the option should be added to provisioning.cattle.io.clusters -> spec.machinePools[i] object or something else.
Then, (de)provisioning flow should be updated to use the value of this flag to drain nodes before they are deleted if necessary.

Root cause
N/A
What was fixed, or what changes have occurred
Added backend support for "Drain Before Delete" in rke2 for parity with rke. Until a corresponding UI change, the default behavior will be in line with rke1, which was to have "Drain Before Delete" be false by default.
Areas or cases that should be tested
Node pools that should not be drained will have the CAPI annotation machine.cluster.x-k8s.io/exclude-node-draining: "true", and node pools that should be drained will have no such annotation. This can be set explicitly in the yaml spec by first configuring a cluster with the UI, then in yaml edit mode under the RKEMachinePool spec setting DrainBeforeDelete: true
What areas could experience regressions?
N/A
Are the repro steps accurate/minimal?
N/a

This should no longer be blocking https://github.com/rancher/dashboard/issues/4448

Feature Testing
Setup For validation
Rancher version: v2.6-head(7efbeab)
Installation: Helm HA
Downstream Cluster
Provisioned Through: RKE2 on EC2 Instances. 3 workers 3 etcd 2 control planes
k8s: v1.21.9
Usecase: Someone has an already provisioned rke2 cluster. They want to "Drain Before Delete" to their nodes.
Steps

edit config of rke2 cluster (this cluster shouldn't have Drain Before Delete)
Check mark the Drain Before Delete within the config of each node pull
press save Save (might have to refresh the page to get this to work)

Result
The cluster takes 2-3 to bring back up the nodes. When the nodes do come back up the cloud-controller-manager pod for the etcds are unhealthy.
**Logs of Pod: **
I0131 17:20:15.293940 1 serving.go:354] Generated self-signed cert in-memory
W0131 17:20:15.530382 1 authentication.go:419] failed to read in-cluster kubeconfig for delegated authentication: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory
W0131 17:20:15.530415 1 authentication.go:316] No authentication-kubeconfig provided in order to lookup client-ca-file in configmap/extension-apiserver-authentication in kube-system, so client certificate authentication won't work.
W0131 17:20:15.530426 1 authentication.go:340] No authentication-kubeconfig provided in order to lookup requestheader-client-ca-file in configmap/extension-apiserver-authentication in kube-system, so request-header client certificate authentication won't work.
W0131 17:20:15.530441 1 authorization.go:225] failed to read in-cluster kubeconfig for delegated authorization: open /var/run/secrets/kubernetes.io/serviceaccount/token: no such file or directory
W0131 17:20:15.530458 1 authorization.go:193] No authorization-kubeconfig provided, so SubjectAccessReview of authorization tokens won't work.
I0131 17:20:15.543191 1 controllermanager.go:142] Version: v1.22.1-k3s1
I0131 17:20:15.544846 1 secure_serving.go:200] Serving securely on <ip-address>
I0131 17:20:15.546583 1 tlsconfig.go:240] "Starting DynamicServingCertificateController"
I0131 17:20:15.547822 1 leaderelection.go:248] attempting to acquire leader lease kube-system/cloud-controller-manager...

Verified test cases on v2.6-head 8c785a1

Scale down by 1 worker node; Do not Drain the node  >> Failed https://github.com/rancher/dashboard/issues/4990#issuecomment-1049372382
Scale down by more than 1 worker nodes; Do not Drain the nodes >> Failed https://github.com/rancher/dashboard/issues/4990#issuecomment-1049372382
Scale down by 1 worker node; Drain the node -  Failed https://github.com/rancher/rancher/issues/36631
Scale down by more than 1 worker nodes; Drain the nodes - Pass
Scale up worker nodes - Pass
Scale down Control plane nodes - Pass
Scale down etcd nodes - Pass
Scale down by clicking on "-" - Pass
Scale down is not available for custom cluster - Pass

@jakefhyde If we edit the cluster and enable drain on delete, the existing control plane nodes and worker are deleted and new nodes are created. This is not the case for etcd nodes. Is this expected?

Adding release-note as it's definitely a feature we want to call out on release notes.
But also we should consider nothing the behavior explained in https://github.com/rancher/rancher/issues/35274#issuecomment-1055649496 as I believe it's rather unexpected for the unsuspecting users.
As for changing this behavior, it's not really an option as it's how CAPI works - similar to how Deployments / Pods work - if you update deployment, pods are recreated.


WIP - JVM support

Very much WIP, but this explores using Depot from the JVM via JNI. Seems to work quite well IMO.
Need to handle failures (currently abusing unwrap), probably by having custom wrappers on the Rust side that hold Results.

Closing this as a binary would need to be embedded for each target platform in a jar, i.e. at least binaries for macos/linux32/linux64/linuxarm/win32/win64, resulting in 30MB jars.
Since this project is written in a mostly imperative C style, prefer a parallel implementation in Java instead.


Existing app size increase issue.

After implementing it my app size increase to 147MB from 27MB. Is there anything I can do to reduce the app size?

https://devforum.zoom.us/t/apk-size-after-adding-android-zoom-sdk/16573/5

Sorry for the late reply. I have already found a solution. But thanks for the links. It also helps a lot.

Hi @ZohanTesting can you tell what change did you make?

Use the following command @sahhill
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi


Highlighting leads to options in code editor. Would Shift + highlight be better

Hey guys,
I just noticed a new feature in the code editor today. Its great to have for copying and pasting code to ask questions, but it can get in the way if I am just doing regular copy and pasting.
Would a better solution to this be to hold down shift + highlight the section as a way to access the menu?
What do you guys think?

Thinking about it, one can just proceed with just ctrl + c and go on with task. Not a huge issue, but it will be interesting to see if anyone thinks the same.

We have some tension here between discovery and usability.  It goes away readily enough and I don't think once you have your code already selected that you need to see under it.
The value of having it always pop up is that there is no question on how to do it.

I'd usually be the first person to get frustrated but a popup like this, but I don't find it bothersome. Highlighting something and then needing to carefully read the whole thing AFTER I've finished highlighting isn't something I find happens in my personal workflow and it's easy enough to click somewhere else and remove the highlight if you want it to go away quickly.

One problem I notice is that if you replace whatever you're highlighting, the popup doesn't go away even if nothing is highlighted anymore. Since nothing is highlighted, the links in the popup don't do anything. This could also present another problem if it's blocking whatever you're trying to type.
It seems to only go away with a mouse click, but should be removed with keyboard strokes as well for the sake of convenience.

This feels like something that is going to become very distracting as we continue to see it more often.
The popup does not move if you highlight something in order to type over it. Say for example I typed in the wrong argument in my comparison function, I want to go up to highlight it and replace with whatever my correct text is, but that popup box is covering everything. I can't see what I am typing.  Example shown in the provided picture.

The popup is "in the way" - every single time I highlight some text - whether I'm highlighting it in order to copy it, paste over it, or just because I felt like highlighting a couple lines so they'll stand out while I think about them.
It obscures what I'm working on. It covers not only what I'm trying to highlight, but also lines below and above it.
Adding a "feature" that tosses up a constant hurdle, obscuring the editor, making it more difficult to see the code, is a wretched UX decision.
If people don't know how to do a simple thing like cut and paste some text on a web page, a far more helpful and non-intrusive solution would be a waypoint that explains ctrl-c and ctrl-v.

Agree with @p1xtcode. At least half of the time, I am highlighting not to copy/paste, but to replace text or just so I can keep my place while I think about stuff. This pop-up obscures my code and makes those two actions harder to do.
I have noticed that if you highlight and then move your cursor very quickly away from your highlight area, that the pop-up will appear wherever your cursor is after that short delay. So it's a constant race against time every time I highlight some code to get my cursor as far away from that area of the editor so that the pop-up appears elsewhere. Like this:

I completely agree with matty22 and p1xtcode. This is extremely annoying, especially as it obscures your code.

Thanks everyone for this discussion. I'll make the selection with CTRL+highlight and will create a PR soon.

Anyone wanting to stop discussing and just take the matter of personally removing the annoyance in your own browser --- the following Tampermonkey script will disable it:
// ==UserScript==
// @name         FCC remove copy popup
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       P1xtCode
// @match        http://www.freecodecamp.com/challenges/*
// ==/UserScript==
/* jshint -W097 */
'use strict';

$('#copy-btn-parent').remove();

Presumably if you're using Firefox instead of Chrome, the script should (theoretically, I didn't test it) work in Greasemonkey as well.


Add ability to use Jenkins Crumb for CSRF protection setting and add ability to run a Jenkins build with parameters

Features
Crumbs
To provide compatability with Jenkins when "Prevent Cross Site Request Forgery exploits" setting is enabled, allows using the crumb for requests both with and without username/token combo. Crumbs are obtained from the /crumbIssuer/api/xml API endpoint.
Example usage:
Dim connection As JenkinsConnection = New JenkinsConnection("http://jenkins-url", "jenkins-crumb")

or
Dim connection As JenkinsConnection = New JenkinsConnection("http://jenkins-url", "username", "token", "jenkins-crumb")

A "Jenkins-Crumb" header is added to the request when the crumb is specified.
BuildWithParameters
A build can now be run by calling BuildWithParameters on a job.

@mattumotu Re-opening after two years as this functionality still seems useful. The build is failing because Coveralls appears to be missing a config.

thanks, looks good


QueryDSL datafetcher should support default arguments

Given a UsefulThingRepository which implements QuerydslPredicateExecutor<UsefulThing>.
The UsefulThing entity has an owner field.
When a user executes the query { usefulThing { name } } query, they should only get the items they own.
This works when owner is provided as a query argument.
However, in this case it makes sense to add the WHERE clause by default instead of relying on a query argument.
I would expect something like this work to add a default WHERE clause on the owner field.
var many = QuerydslDataFetcher.builder(repository)
                .customizer((bindings, root) -> bindings.bind(QUsefulThing.usefulThing.owner)
                        .first((path, value) -> path.eq(ssoCallerResolver.get().username).many();

Note that in this example the ssoCallerResolver.get().username is just an example of something that would give the current user form the request.
In QuerydslPredicateBuilder on line 92 there is a check on values. Since the value is not user provided, this will be empty, and it won't build a predicate.

QuerydslBindings are designed to be fed with request parameters and all operations following bindings.bind(…) expect request values to be consumed by the following methods.
What you're looking for is providing a default value that is either provided by a supplier function or held statically and then applied to the Querydsl binding.
I filed https://github.com/spring-projects/spring-data-commons/issues/3017 to track the concern in Spring Data.


Filter sanity checks

Description of changes:
Properties which are sanity checks needed to be removed from the UI. They are now marked with the property_class "sanity_check" which makes it easy to filter such checks out as the pipeline to add, remove and edit checks based on their property_class has already been setup.
Resolved issues:
Resolves #1020
Call-outs:
Couldn't add tests for this UI change as it's a removal. In the future we should contain negative tests for similar changes.
Testing:

How is this change tested?

Is this a refactor change?

Checklist

[x] Each commit message has a non-empty body, explaining why the change was made
[x] Methods or procedures are documented
[x] Regression or unit tests are included, or existing tests cover the modified code
[x] My PR is restricted to a single feature or bugfix

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.

I've simplified this PR to just do the minimum and added a simple test to check for sanity_check. Will try to address comments on the spot to get it merged before tomorrow.


Error while calling lua chunk

Description
After successfully installing the plugin with the plugin manager vimplug and enabling the nightfox color scheme with the command colorscheme nightfox
i get the following error msg in neovim:

.local/share/nvim/site/plugged/nightfox.nvim/colors/nightfox.vim:
line    9:
E5105: Error while calling lua chunk: [string ""]:2: attempt to index field 'g' (a nil value)

specs:

5.4.0-132-generic #148-Ubuntu SMP Mon Oct 17 16:02:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
NVIM v0.4.3
Build type: Release
LuaJIT 2.1.0-beta3
Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
GNOME Terminal 3.36.2

init.vim:
 call plug#begin('~/.local/share/nvim/site/plugged')
     Plug 'EdenEast/nightfox.nvim'
     Plug 'morhetz/gruvbox'
 call plug#end()
 colorscheme nightfox

Do i miss something (other colorschemes like gruvbox is working)?

It looks like vim.g does not exists. This was added when lua was added as a target language in neovim 0.5.0. Nightfox supports the current released version of neovim version 0.8.0. See the requirements section for more information.

Thx, You were right!
sudo apt install nvim has installed an older version of nvim which is indeed not working with your plugin it seems.
Now I have installed the latest release version of nvim (0.8.1) from the official repo (as an appimage) I get no errors when loading your colorscheme.
Thx for your lightning fast response!


Email a whole group with password reset link

I am importing 4000 frontend users in a group and as it is not possible to insert the password I have to send them all an email with the link to reset their password...
Is it posible with your plugin ?

There are two ways to accomplish this:
1. Set the '''passwordResetRequired''' field for each user to '''true''', then send them a mass mail, which links to your normal login-page. When they try to login, they'll be forced to reset their password.
2. Use the "Require Email Verification" option while creating a User. This will send them an email automatically. See here.
3. Use the sendPasswordResetEmail() function, and loop once through all users.
I recommend you go with the third option, in case something goes wrong with your import. You don't want to send your users multiple reset mails.


Fix look_to variable naming

Objective

If I understand correctly, forward points in direction, so the negative of direction should be back.

Migration Guide

Transform::look_to method changed default value of direction.try_normalize() from Vec3::Z to Vec3::NEG_Z

In rust the minus sign - has lower priority than method call, so it's actually -Z. Here is how it looks like with parenthesis:
        let back = -(  direction.try_normalize().unwrap_or(Vec3::Z)  );

I still suggest a change though. It's a bit clearer:
        let back = direction.try_normalize().map_or(-Vec3::Z, |d| -d);

The change from forward to back seems correct though.

Why default value should be -Vec3::Z? According to my understanding, -Vec3::Z should be forward. @nicopap

-Vec3::Z is to keep the same behavior as in 0.10.1 Any change to this value is a breaking change, it also needs to update the doc to reflect this change.
I think it's OK (but not important) to change it to -Vec3::NEG_Z (I would keep the - for clarity), but you need then to mark this PR as breaking (and update the doc)

Added migration guide! Another question, I think unwrap_or might have better readability than map_or.

You mean
if `direction` is zero, `Vec3::Z` is used instead

?
Already changed.

Appears to be no longer breaking :)

@lewiszlw can you update the PR description to reflect the final state of this PR?

The default behavior changed when direction can't be normalized. So marked it breaking. @alice-i-cecile


Add 32 bytes overhead per header entry when calculating headers length in HPackDecoder

Motivation:
According to the HTTP/2 Spec:

SETTINGS_MAX_HEADER_LIST_SIZE (0x6): This advisory setting informs a
peer of the maximum size of header list that the sender is
prepared to accept, in octets. The value is based on the
uncompressed size of header fields, including the length of the
name and value in octets plus an overhead of 32 octets for each
header field.

We were accounting for the 32 bytes when encoding in HpackEncoder,
but not when decoding in HPackDecoder.
Modifications:

Add 32 bytes to the header list length for each entry when decoding
with HPackDecoder.

Result:

We account for the 32 bytes overhead by header entry in HPackDecoder
Fixes #7514

Also @mosesn


German translation for Minimal-Status-Bar

Used the official Safari translation as source.

Thanks!

cool quotes


[BUG] onMessage() and onNotification() returns an Error

Before posting a bug, be sure that someone else has not posted it already and it is an actual bug with noblox.js and not other frameworks like discord.js
Describe the bug
When I use the onMessage() or onNotification() event it returns the following error:
Something went wrong:  Negotiate Unknown
To Reproduce
Steps to reproduce the behavior:

Add this code:
const notification = noblox.onNotification()
notification.on("data", function(data) {
console.log("New notification! ", data)
})
notification.on("error", function(err) {
console.error("Something went wrong: ", err)
// Handle error as needed
})
or add this:
const notification = rbxbot.onNotification()
notification.on("data", function(data) {
console.log("New notification! ", data)
})
notification.on("error", function(err) {
console.error("Something went wrong: ", err)
// Handle error as needed
})
Now run the bot.
See error
Try sending a PM to the bot.
Nothing happens.

Expected behavior
It is supposed to log the data received from a notification or message to the console.
Screenshots

Could you identify if Roblox has updated their notification protocol?

However, they do have a notifications.roblox.com API Idk if that will work with PM messages.

realtime.roblox.com has been deprecated and now removed. The package should be switched to use realtime-signalr.roblox.com with the @microsoft/signalr package.

realtime.roblox.com has been deprecated and now removed. The package should be switched to use realtime-signalr.roblox.com/userhub with the @microsoft/signalr package.

How would I edit the file to make it work?

Issue has been fixed. I updated the onNotification file:
`// Dependencies
const signalR = require('@microsoft/signalr')
const events = require('events')
// Includes
const getSession = require('../util/getSession.js').func
const settings = require('../../settings.json')
// Args
exports.optional = ['jar']
// Docs
/**

🔐 An event for when you get a notification.
@category Client
@alias onNotification
@returns An EventEmitter that emits when you get a notification.
@example const noblox = require("noblox.js")
// Login using your cookie
const notification = noblox.onNotification()
notification.on("data", function(data) {
console.log("New notification! ", data)
})
notification.on("error", function(err) {
console.error("Something went wrong: ", err)
// Handle error as needed
})
**/

// Define
exports.func = function (args) {
const max = settings.event.maxRetries
const notifications = new events.EventEmitter()
function connect (retries) {
if (typeof args.jar === 'string') {
args.jar = { session: args.jar }
}
const session = getSession({ jar: args.jar })
let userNotificationConnection = null;
userNotificationConnection = new signalR.HubConnectionBuilder()
  .withUrl('https://realtime-signalr.roblox.com/userhub', {
    transport: signalR.HttpTransportType.WebSockets,
    skipNegotiation: true,
    headers: {
      Cookie: '.ROBLOSECURITY=' + session + ';'
    }
  })
  .build();

  userNotificationConnection.on('notification', function(name, message) {
    notifications.emit('data', name, JSON.parse(message))
  })

  notifications.on('close', userNotificationConnection.stop)

  userNotificationConnection.disconnected = function (err) {
    notifications.emit('error', new Error('Connection failed: ' + err.message))
    if (retries !== -1) {
      if (retries > max) {
        notifications.emit('close', new Error('Max retries reached'))
      } else {
        setTimeout(connect, 5000, retries + 1)
      }
    }
  }

  userNotificationConnection.error = function (err) {
    notifications.emit('error', err)
  }

  userNotificationConnection.connected = function(connection) {
    notifications.emit('connect', connection)
  }

  userNotificationConnection.reconnecting = function () {
    setTimeout(connect, 5000, 0)
  notifications.emit('error', new Error('Lost connection, reconnecting'))
  return true // Abort reconnection
  }

  userNotificationConnection.start()

}
connect(-1)
return notifications
}
`


Cython Code in Hatchet can produce errors on M1 Mac

When running the unit tests on M1 Mac, I get the following error:
Traceback (most recent call last):
  File "/Users/ilumsden/llnl/llnl-hatchet/hatchet/graphframe.py", line 24, in <module>
    from .cython_modules.libs import graphframe_modules as _gfm_cy
ImportError: dlopen(/Users/ilumsden/llnl/llnl-hatchet/hatchet/cython_modules/libs/graphframe_modules.cpython-38-darwin.so, 0x0002): tried: '/Users/ilumsden/llnl/llnl-hatchet/hatchet/cython_modules/libs/graphframe_modules.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/graphframe_modules.cpython-38-darwin.so' (no such file), '/usr/lib/graphframe_modules.cpython-38-darwin.so' (no such file)

I believe this error is being produced due to my Conda install. Conda only recently released a M1-compatible build (https://www.anaconda.com/blog/new-release-anaconda-distribution-now-supporting-m1). As a result, Conda installations from before May 2022 have to be configured using Rosetta2. Because Rosetta2-configured Conda installations are still technically x86, there might be an issue in working with C extensions or Cython code on M1. Essentially, I believe the issue is that Cython is being compiled to ARM (since the C compiler is native), while the Conda provided by Python is built for x86.
I don't know how important/urgent this is, but it is something we might want to look into.

I can confirm that switching to the new M1-compatible Anaconda does resolve this issue.


No FederationTypeConfig for ClusterRoleBinding in the charts

There is an example file using FederatedClusterRoleBinding (https://github.com/kubernetes-sigs/kubefed/blob/a861817e014b7b735be6be5e980e62e007d9391f/example/sample1/federatedclusterrolebinding.yaml#L2); however I can't find any FederatedTypeConfig definition for it in the charts file: https://github.com/kubernetes-sigs/kubefed/blob/master/charts/kubefed/templates/federatedtypeconfig.yaml. Is there a limitation, or is it just missing? If it is just missing, I can create a PR for it.

/kind bug

Sorry, didn't notice that it is very easy to generate using kubefedctl. Closing.


Add support for selecting storage container on image and vm disk

/kind feature
Add support for selecting storage container on image and vm disk. This option is available in the Terraform provider

This feature is actually valid, as when you build the image it goes directly to the self-service storage container, an option to specify an image storage destination.
Workaround is to export image locally and upload manually.


k3s server --disable-agent mode, with metrics-server installed, kubectl top node/pod not work.

Anay
The svc of the metrics-server like a.b.c.d:443 can't be reached by the k3s server --disable-agent node, because of kube-proxy not set in that server-node.
How could kube-apiserver communicate with metrics-server in this mode, any good idea?
ex:

1.install kube-proxy in server-node.
2.route add to route the metrics-server svc's ip traffic to the agent-node.
3.just change metrics svc ip/port that is need by kube-apiserver to node ip/port. but how to?

the svc of the metrics-server like a.b.c.d:443 can't be reached by the k3s server --disable-agent node.

At the moment it is expected that a server and agent will be run on the same node for network to be setup.

At the moment it is expected that a server and agent will be run on the same node for network to be setup.

yes, this issue is the same with k8s.


[kjobctl] Publish a dedicated image to run kjobctl slurm init container

What would you like to be added:
To simplify the development of the slurm support in kjobctl. Also, not to use outdated images.
The new image could be generic for kjobctl , or specific for the slurm support (maybe kjobctl-slurm), to be discussed.
This is related also to https://github.com/kubernetes-sigs/kueue/issues/2778.
Why is this needed:
The discussion here.
The available images in registry.k8s.io (see https://explore.ggcr.dev/?repo=registry.k8s.io) are very limited in tooling, or old. We could not find a new image which would have: bash and nslookup (with bind-tools).

/assign

/close
Due to moved to separate repo https://github.com/kubernetes-sigs/kjob/issues/6.


shoryuken instrumentation adapter

Convert Datadog instrumentation for Shoryuken to OpenTelemetry.
See

Datadog porting guide
Semantic Conventions
Datadog implementation

@mwear @fbogsany I am interested to submit PR for this adapter.
For trace context propagation via SQS is it advisable to use SQS message attributes ?
A point to think over is the 10 fields limitation that AWS has for message attributes. AWS X-ray on the other hand uses the message system attributes which according to the document is internal to AWS and has no data or size limitations.

Thanks @sribalakumar, I've assigned this to you.
There are two interesting scenarios with SQS:

Applications are using AWS X-ray as their trace backend.
Applications are using some other tracing backend.

From what I can tell, for 1 we should use the message system attribute AWSTraceHeader for propagation. This imposes two requirements on the application: it must use the X-ray trace propagation format, and it must generate trace IDs according to AWS X-ray requirements.
For 2, it is likely that the application will not use the X-ray trace propagation format or X-ray trace ID generator. I suspect SQS will still propagate the AWSTraceHeader even if the trace ID doesn't conform to X-ray requirements. but it may reject an improperly formatted value. We should test both.
I think we should definitely support propagation via the AWSTraceHeader message system attribute. If we can always provide a canonical mapping of OpenTelemetry trace and span IDs to and from X-ray headers, we should stick with that approach. If not, we may need to add a configuration option to propagate trace context via ordinary message attributes. In the typical case, this will probably require two headers: traceparent and tracestate.

Looking around at what has been done for other languages, the OTel Java instrumentation for AWS SDK does nothing special for SQS, but documents that only the AWS Trace Header format is supported: https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/master/instrumentation/aws-sdk/aws-sdk-2.2/library
The Lambda instrumentation extracts the AWSTraceHeader attribute from SQS messages.


Learn how to do caching using Open AI apis

https://platform.openai.com/docs/guides/prompt-caching


rafttest TestRestart timeouts

TestRestart almost always timeouts on my machine
$ git log | head -n 10
commit e53b99588a05d1f4ef172c178d4ed8e8106b8be4
Merge: f73258a 5e96360
Author: Anthony Romano<EMAIL_ADDRESS>Date:   Sun Aug 28 20:41:19 2016 -0700

    Merge pull request #6288 from heyitsanthony/fix-retryread

    clientv3: retry non-mutable rpcs on Internal codes

commit 5e963608b72dbc815eb5bb96414d869cf6fd63c9

$ go version
go version go1.6.3 linux/amd64

$ ./build

$ GOPATH=$(pwd)/gopath go test -v -race -run TestRestart ./raft/rafttest
=== RUN   TestRestart
raft2016/08/29 07:08:44 INFO: 1 became follower at term 0
raft2016/08/29 07:08:44 INFO: newRaft 1 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2016/08/29 07:08:44 INFO: 1 became follower at term 1
raft2016/08/29 07:08:44 INFO: 2 became follower at term 0
raft2016/08/29 07:08:44 INFO: newRaft 2 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2016/08/29 07:08:44 INFO: 2 became follower at term 1
raft2016/08/29 07:08:44 INFO: 3 became follower at term 0
raft2016/08/29 07:08:44 INFO: newRaft 3 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2016/08/29 07:08:44 INFO: 3 became follower at term 1
raft2016/08/29 07:08:44 INFO: 4 became follower at term 0
raft2016/08/29 07:08:44 INFO: newRaft 4 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2016/08/29 07:08:44 INFO: 4 became follower at term 1
raft2016/08/29 07:08:44 INFO: 5 became follower at term 0
raft2016/08/29 07:08:44 INFO: newRaft 5 [peers: [], term: 0, commit: 0, applied: 0, lastindex: 0, lastterm: 0]
raft2016/08/29 07:08:44 INFO: 5 became follower at term 1
raft2016/08/29 07:08:44 INFO: 2 is starting a new election at term 1
raft2016/08/29 07:08:44 INFO: 2 became candidate at term 2
raft2016/08/29 07:08:44 INFO: 2 received vote from 2 at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 1, index: 5] sent vote request to 5 at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 1, index: 5] sent vote request to 1 at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 1, index: 5] sent vote request to 3 at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 1, index: 5] sent vote request to 4 at term 2
raft2016/08/29 07:08:44 INFO: 4 is starting a new election at term 1
raft2016/08/29 07:08:44 INFO: 4 became candidate at term 2
raft2016/08/29 07:08:44 INFO: 4 received vote from 4 at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5] sent vote request to 1 at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5] sent vote request to 2 at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5] sent vote request to 3 at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5] sent vote request to 5 at term 2
raft2016/08/29 07:08:44 INFO: 1 [term: 1] received a MsgVote message with higher term from 2 [term: 2]
raft2016/08/29 07:08:44 INFO: 5 is starting a new election at term 1
raft2016/08/29 07:08:44 INFO: 5 became candidate at term 2
raft2016/08/29 07:08:44 INFO: 5 received vote from 5 at term 2
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5] sent vote request to 1 at term 2
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5] sent vote request to 2 at term 2
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5] sent vote request to 3 at term 2
raft2016/08/29 07:08:44 INFO: 1 became follower at term 2
raft2016/08/29 07:08:44 INFO: 1 [logterm: 1, index: 5, vote: 0] voted for 2 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 3 [term: 1] received a MsgVote message with higher term from 2 [term: 2]
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5] sent vote request to 4 at term 2
raft2016/08/29 07:08:44 INFO: 3 became follower at term 2
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5, vote: 5] rejected vote from 2 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 3 [logterm: 1, index: 5, vote: 0] voted for 2 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 1, index: 5, vote: 2] rejected vote from 4 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5, vote: 4] rejected vote from 2 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 1 [logterm: 1, index: 5, vote: 2] rejected vote from 4 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 5 [logterm: 1, index: 5, vote: 5] rejected vote from 4 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 3 [logterm: 1, index: 5, vote: 2] rejected vote from 4 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 3 [logterm: 1, index: 5, vote: 2] rejected vote from 5 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 2 received vote from 1 at term 2
raft2016/08/29 07:08:44 INFO: 2 [quorum:3] has received 2 votes and 0 vote rejections
raft2016/08/29 07:08:44 INFO: 2 received vote from 3 at term 2
raft2016/08/29 07:08:44 INFO: 2 [quorum:3] has received 3 votes and 0 vote rejections
raft2016/08/29 07:08:44 INFO: 2 became leader at term 2
raft2016/08/29 07:08:44 INFO: 4 [logterm: 1, index: 5, vote: 4] rejected vote from 5 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 1 [logterm: 1, index: 5, vote: 2] rejected vote from 5 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 4 received vote rejection from 2 at term 2
raft2016/08/29 07:08:44 INFO: 4 [quorum:3] has received 1 votes and 1 vote rejections
raft2016/08/29 07:08:44 INFO: 4 received vote rejection from 1 at term 2
raft2016/08/29 07:08:44 INFO: 4 [quorum:3] has received 1 votes and 2 vote rejections
raft2016/08/29 07:08:44 INFO: 5 received vote rejection from 3 at term 2
raft2016/08/29 07:08:44 INFO: 5 [quorum:3] has received 1 votes and 1 vote rejections
raft2016/08/29 07:08:44 INFO: 4 received vote rejection from 5 at term 2
raft2016/08/29 07:08:44 INFO: 4 [quorum:3] has received 1 votes and 3 vote rejections
raft2016/08/29 07:08:44 INFO: 4 became follower at term 2
raft2016/08/29 07:08:44 INFO: raft.node: 2 elected leader 2 at term 2
raft2016/08/29 07:08:44 INFO: 2 [logterm: 2, index: 6, vote: 2] rejected vote from 5 [logterm: 1, index: 5] at term 2
raft2016/08/29 07:08:44 INFO: 5 received vote rejection from 1 at term 2
raft2016/08/29 07:08:44 INFO: 5 [quorum:3] has received 1 votes and 2 vote rejections
raft2016/08/29 07:08:44 INFO: 5 received vote rejection from 4 at term 2
raft2016/08/29 07:08:44 INFO: 5 [quorum:3] has received 1 votes and 3 vote rejections
raft2016/08/29 07:08:44 INFO: 5 became follower at term 2
raft2016/08/29 07:08:44 INFO: raft.node: 1 elected leader 2 at term 2
raft2016/08/29 07:08:44 INFO: raft.node: 3 elected leader 2 at term 2
raft2016/08/29 07:08:44 INFO: raft.node: 4 elected leader 2 at term 2
raft2016/08/29 07:08:44 INFO: raft.node: 5 elected leader 2 at term 2
2016/08/29 07:08:44 raft.2: stop
2016/08/29 07:08:44 raft.3: stop
raft2016/08/29 07:08:44 INFO: 3 became follower at term 2
raft2016/08/29 07:08:44 INFO: newRaft 3 [peers: [], term: 2, commit: 6, applied: 0, lastindex: 6, lastterm: 2]
raft2016/08/29 07:08:44 INFO: 2 became follower at term 2
raft2016/08/29 07:08:44 INFO: newRaft 2 [peers: [], term: 2, commit: 6, applied: 0, lastindex: 6, lastterm: 2]
raft2016/08/29 07:08:44 INFO: 5 is starting a new election at term 2
raft2016/08/29 07:08:44 INFO: 5 became candidate at term 3
raft2016/08/29 07:08:44 INFO: 5 received vote from 5 at term 3
raft2016/08/29 07:08:44 INFO: 5 [logterm: 2, index: 6] sent vote request to 3 at term 3
raft2016/08/29 07:08:44 INFO: 5 [logterm: 2, index: 6] sent vote request to 4 at term 3
raft2016/08/29 07:08:44 INFO: 5 [logterm: 2, index: 6] sent vote request to 1 at term 3
raft2016/08/29 07:08:44 INFO: 5 [logterm: 2, index: 6] sent vote request to 2 at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 5 lost leader 2 at term 3
raft2016/08/29 07:08:44 INFO: 1 [term: 2] received a MsgVote message with higher term from 5 [term: 3]
raft2016/08/29 07:08:44 INFO: 4 [term: 2] received a MsgVote message with higher term from 5 [term: 3]
raft2016/08/29 07:08:44 INFO: 4 became follower at term 3
raft2016/08/29 07:08:44 INFO: 1 became follower at term 3
raft2016/08/29 07:08:44 INFO: 1 [logterm: 2, index: 6, vote: 0] voted for 5 [logterm: 2, index: 6] at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 1 lost leader 2 at term 3
raft2016/08/29 07:08:44 INFO: 3 [term: 2] received a MsgVote message with higher term from 5 [term: 3]
raft2016/08/29 07:08:44 INFO: 3 became follower at term 3
raft2016/08/29 07:08:44 INFO: 3 [logterm: 2, index: 6, vote: 0] voted for 5 [logterm: 2, index: 6] at term 3
raft2016/08/29 07:08:44 INFO: 4 [logterm: 2, index: 6, vote: 0] voted for 5 [logterm: 2, index: 6] at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 4 lost leader 2 at term 3
raft2016/08/29 07:08:44 INFO: 5 received vote from 1 at term 3
raft2016/08/29 07:08:44 INFO: 5 [quorum:3] has received 2 votes and 0 vote rejections
raft2016/08/29 07:08:44 INFO: 5 received vote from 3 at term 3
raft2016/08/29 07:08:44 INFO: 5 [quorum:3] has received 3 votes and 0 vote rejections
raft2016/08/29 07:08:44 INFO: 5 became leader at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 5 elected leader 5 at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 1 elected leader 5 at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 4 elected leader 5 at term 3
raft2016/08/29 07:08:44 INFO: raft.node: 3 elected leader 5 at term 3
2016/08/29 07:08:45 raft.1: stop
SIGQUIT: quit
PC=0x4611b1 m=0

goroutine 0 [idle]:
runtime.futex(0x831f88, 0x0, 0x0, 0x0, 0x0, 0x8318d0, 0x0, 0x0, 0x40faaa, 0x831f88, ...)
        /usr/local/go/src/runtime/sys_linux_amd64.s:306 +0x21
runtime.futexsleep(0x831f88, 0x0, 0xffffffffffffffff)
        /usr/local/go/src/runtime/os1_linux.go:40 +0x53
runtime.notesleep(0x831f88)
        /usr/local/go/src/runtime/lock_futex.go:145 +0xca
runtime.stopm()
        /usr/local/go/src/runtime/proc.go:1538 +0x10b
runtime.findrunnable(0xc820016000, 0x0)
        /usr/local/go/src/runtime/proc.go:1976 +0x808
runtime.schedule()
        /usr/local/go/src/runtime/proc.go:2075 +0x2a6
runtime.park_m(0xc82021e480)
        /usr/local/go/src/runtime/proc.go:2140 +0x157
runtime.mcall(0x454b40)
        /usr/local/go/src/runtime/asm_amd64.s:233 +0x5b

goroutine 1 [chan receive, 9 minutes]:
testing.RunTests(0x74a0a0, 0x82ed20, 0x5, 0x5, 0x7fe0b5abf201)
        /usr/local/go/src/testing/testing.go:583 +0xb39
testing.(*M).Run(0xc820039f10, 0x7)
        /usr/local/go/src/testing/testing.go:515 +0x11e
main.main()
        _/go/src/github.com/coreos/etcd/raft/rafttest/_test/_testmain.go:64 +0x211

goroutine 17 [syscall, 9 minutes, locked to thread]:
runtime.goexit()
        /usr/local/go/src/runtime/asm_amd64.s:1998 +0x1

goroutine 5 [chan send, 9 minutes]:
_/go/src/github.com/coreos/etcd/raft/rafttest.(*node).stop(0xc8200544d0)
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:112 +0xa0
_/go/src/github.com/coreos/etcd/raft/rafttest.TestRestart(0xc82009e000)
        /go/src/github.com/coreos/etcd/raft/rafttest/node_test.go:83 +0xd29
testing.tRunner(0xc82009e000, 0x82ed68)
        /usr/local/go/src/testing/testing.go:473 +0xdd
created by testing.RunTests
        /usr/local/go/src/testing/testing.go:582 +0xae3

goroutine 13 [select]:
github.com/coreos/etcd/raft.(*node).run(0xc820013800, 0xc8202002d0)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:314 +0x15d2
created by github.com/coreos/etcd/raft.StartNode
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:211 +0x890

goroutine 14 [runnable]:
time.Sleep(0xf4240)
        /usr/local/go/src/runtime/time.go:59 +0xf9
_/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start.func1(0xc820013ce0, 0xc820054770)
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:75 +0x60c
created by _/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:104 +0xb1

goroutine 15 [select]:
github.com/coreos/etcd/raft.(*node).run(0xc820013e00, 0xc8202003c0)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:314 +0x15d2
created by github.com/coreos/etcd/raft.StartNode
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:211 +0x890

goroutine 16 [select]:
_/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start.func1(0xc820258300, 0xc8200548c0)
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:66 +0x1096
created by _/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:104 +0xb1

goroutine 18 [select]:
github.com/coreos/etcd/raft.(*node).run(0xc8202ba1e0, 0xc8203fa000)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:314 +0x15d2
created by github.com/coreos/etcd/raft.RestartNode
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:224 +0x36e

goroutine 19 [runnable]:
time.Sleep(0xf4240)
        /usr/local/go/src/runtime/time.go:59 +0xf9
_/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start.func1(0xc8202ba660, 0xc820054620)
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:75 +0x60c
created by _/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:104 +0xb1

goroutine 34 [select, 9 minutes]:
github.com/coreos/etcd/raft.(*node).run(0xc8202ac420, 0xc82043c000)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:314 +0x15d2
created by github.com/coreos/etcd/raft.RestartNode
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:224 +0x36e

goroutine 35 [select, 9 minutes]:
github.com/coreos/etcd/raft.(*node).step(0xc8202ac420, 0x7fe0b59df958, 0xc820010658, 0x2, 0x2, 0x1, 0x0, 0x0, 0x0, 0xc820014f00, ...)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:437 +0x256
github.com/coreos/etcd/raft.(*node).Step(0xc8202ac420, 0x7fe0b59df958, 0xc820010658, 0x2, 0x2, 0x1, 0x0, 0x0, 0x0, 0xc820014f00, ...)
        /go/src/github.com/coreos/etcd/gopath/src/github.com/coreos/etcd/raft/node.go:418 +0xd8
_/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start.func1(0xc8202ac8a0, 0xc8200544d0)
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:82 +0x8f1
created by _/go/src/github.com/coreos/etcd/raft/rafttest.(*node).start
        /go/src/github.com/coreos/etcd/raft/rafttest/node.go:104 +0xb1

rax    0xca
rbx    0x0
rcx    0x4611b3
rdx    0x0
rdi    0x831f88
rsi    0x0
rbp    0x1
rsp    0x7ffcf4338d88
r8     0x0
r9     0x0
r10    0x0
r11    0x286
r12    0xc82025edd8
r13    0x831e80
r14    0xc82021e480
r15    0x0
rip    0x4611b1
rflags 0x286
cs     0x33
fs     0x0
gs     0x0
*** Test killed with quit: ran too long (10m0s).
FAIL    _/go/src/github.com/coreos/etcd/raft/rafttest   600.010s

Question: why rafttest has been disabled in Travis?
IGNORE_PKGS="(cmd|vendor|etcdserverpb|rafttest)"

https://github.com/coreos/etcd/pull/5707

@AkihiroSuda Yeah other tests in rafttest are broken as well. We need to fix them.


DllNotFoundException: SteamVR + OpenVR Linux & MacOS

This issue was originally opened in the unity-xr-plugin project. However, the solution probably requires a modification of the steamvr_unity_plugin project, so I am opening an issue here.
tldr: The recommended configuration of SteamVR + OpenVR plugins works on Windows, but on macOS and Linux it floods the console with errors stating "DllNotFoundException: openvr_api" on each frame. Because of this issue that configuration is not usable on cross-platform projects. The work-around (tested on Unity2019.4.36f1) is to use the legacy configuration without the OpenVR plugin.

Hi @GabrielHare, I am new to VR development and facing the same issue in Ubuntu 20.04.

The work-around (tested on Unity2019.4.36f1) is to use the legacy configuration without the OpenVR plugin.

Can you please explain how the above can be done? Where in Unity do I make this change?
Thanks and best regards,
Milind


Engineering Work/Improvements for 930

Add build for project to replace go run;
Containerize all component;
Recheck all component naming;
Recheck all file direction/structure.

1 and 3 should be fixed in 930 in my opinion, the  2 and 4 can wait to see if we have enough resource to get them down in 930 time frame.


Consider Moving to GitHub

pydicom recently moved to GitHub: https://github.com/darcymason/pydicom

Original issue reported on code.google.com by agrothberg on 14 Jan 2015 at 5:23

Looks like this is done then ;)


Improve reusability of program

Support Microsoft Visual C++
Support multiparse
Support object copy, move and assignment

I'm getting a bunch of errors from the patch with GCC 9
cmdline.cpp:7:17: error: redefinition of ‘std::string cmdline::detail::demangle(const string&)’
    7 |     std::string demangle(const std::string &name)
      |                 ^~~~~~~~
In file included from cmdline.cpp:1:
cmdline.h:113:27: note: ‘std::string cmdline::detail::demangle(const string&)’ previously defined here
  113 | static inline std::string demangle(const std::string &name)
      |                           ^~~~~~~~
cmdline.cpp:21:3: error: redefinition of ‘cmdline::cmdline_error::cmdline_error(const string&)’
   21 |   cmdline_error::cmdline_error(const std::string &msg)
      |   ^~~~~~~~~~~~~
In file included from cmdline.cpp:1:
cmdline.h:150:3: note: ‘cmdline::cmdline_error::cmdline_error(const string&)’ previously defined here
  150 |   cmdline_error(const std::string &message): msg(message){}
      |   ^~~~~~~~~~~~~
cmdline.cpp:26:3: error: redefinition of ‘cmdline::cmdline_error::~cmdline_error()’
   26 |   cmdline_error::~cmdline_error() = default;
      |   ^~~~~~~~~~~~~
In file included from cmdline.cpp:1:
cmdline.h:151:3: note: ‘virtual cmdline::cmdline_error::~cmdline_error()’ previously defined here
  151 |   ~cmdline_error() throw() {}
      |   ^
cmdline.cpp:28:15: error: redefinition of ‘const char* cmdline::cmdline_error::what() const’
   28 |   const char *cmdline_error::what() const
      |               ^~~~~~~~~~~~~
In file included from cmdline.cpp:1:
cmdline.h:152:15: note: ‘virtual const char* cmdline::cmdline_error::what() const’ previously defined here
  152 |   const char *what() const throw() { return msg.c_str(); }
      |               ^~~~
cmdline.cpp:33:3: error: redefinition of ‘cmdline::parser::parser()’
   33 |   parser::parser() = default;
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:324:3: note: ‘cmdline::parser::parser()’ previously defined here
  324 |   parser(){
      |   ^~~~~~
cmdline.cpp:35:3: error: redefinition of ‘cmdline::parser::parser(const cmdline::parser&)’
   35 |   parser::parser(const parser &obj)
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:327:3: note: ‘cmdline::parser::parser(const cmdline::parser&)’ previously defined here
  327 |   parser(const parser &obj) {
      |   ^~~~~~
cmdline.cpp:40:3: error: redefinition of ‘cmdline::parser::parser(cmdline::parser&&)’
   40 |   parser::parser(parser &&obj)
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:331:3: note: ‘cmdline::parser::parser(cmdline::parser&&)’ previously defined here
  331 |   parser(parser &&obj) {
      |   ^~~~~~
cmdline.cpp:45:11: error: redefinition of ‘cmdline::parser& cmdline::parser::operator=(const cmdline::parser&)’
   45 |   parser &parser::operator=(const parser &obj)
      |           ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:335:11: note: ‘cmdline::parser& cmdline::parser::operator=(const cmdline::parser&)’ previously defined here
  335 |   parser &operator=(const parser &obj) {
      |           ^~~~~~~~
cmdline.cpp:51:11: error: redefinition of ‘cmdline::parser& cmdline::parser::operator=(cmdline::parser&&)’
   51 |   parser &parser::operator=(parser &&obj)
      |           ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:340:11: note: ‘cmdline::parser& cmdline::parser::operator=(cmdline::parser&&)’ previously defined here
  340 |   parser &operator=(parser &&obj) {
      |           ^~~~~~~~
cmdline.cpp:57:3: error: redefinition of ‘cmdline::parser::~parser()’
   57 |   parser::~parser()
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:345:3: note: ‘cmdline::parser::~parser()’ previously defined here
  345 |   ~parser(){
      |   ^
cmdline.cpp:67:8: error: redefinition of ‘void cmdline::parser::add(const string&, char, const string&)’
   67 |   void parser::add(const std::string &name,
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:360:8: note: ‘void cmdline::parser::add(const string&, char, const string&)’ previously defined here
  360 |   void add(const std::string &name,
      |        ^~~
cmdline.cpp:82:8: error: redefinition of ‘bool cmdline::parser::exist(const string&) const’
   82 |   bool parser::exist(const std::string &name) const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:397:8: note: ‘bool cmdline::parser::exist(const string&) const’ previously defined here
  397 |   bool exist(const std::string &name) const {
      |        ^~~~~
cmdline.cpp:94:8: error: no declaration matches ‘bool cmdline::parser::parse_check(const string&)’
   94 |   bool parser::parse_check(const std::string &arg)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:578:8: note: candidates are: ‘void cmdline::parser::parse_check(int, char**)’
  578 |   void parse_check(int argc, char *argv[]){
      |        ^~~~~~~~~~~
cmdline.h:572:8: note:                 ‘void cmdline::parser::parse_check(const std::vector<std::__cxx11::basic_string<char> >&)’
  572 |   void parse_check(const std::vector<std::string> &args){
      |        ^~~~~~~~~~~
cmdline.h:566:8: note:                 ‘void cmdline::parser::parse_check(const string&)’
  566 |   void parse_check(const std::string &arg){
      |        ^~~~~~~~~~~
cmdline.h:322:7: note: ‘class cmdline::parser’ defined here
  322 | class parser{
      |       ^~~~~~
cmdline.cpp:104:8: error: no declaration matches ‘bool cmdline::parser::parse_check(const std::vector<std::__cxx11::basic_string<char> >&)’
  104 |   bool parser::parse_check(const std::vector<std::string> &args)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:578:8: note: candidates are: ‘void cmdline::parser::parse_check(int, char**)’
  578 |   void parse_check(int argc, char *argv[]){
      |        ^~~~~~~~~~~
cmdline.h:572:8: note:                 ‘void cmdline::parser::parse_check(const std::vector<std::__cxx11::basic_string<char> >&)’
  572 |   void parse_check(const std::vector<std::string> &args){
      |        ^~~~~~~~~~~
cmdline.h:566:8: note:                 ‘void cmdline::parser::parse_check(const string&)’
  566 |   void parse_check(const std::string &arg){
      |        ^~~~~~~~~~~
cmdline.h:322:7: note: ‘class cmdline::parser’ defined here
  322 | class parser{
      |       ^~~~~~
cmdline.cpp:114:8: error: no declaration matches ‘bool cmdline::parser::parse_check(int, char**)’
  114 |   bool parser::parse_check(int argc, char *argv[])
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:578:8: note: candidates are: ‘void cmdline::parser::parse_check(int, char**)’
  578 |   void parse_check(int argc, char *argv[]){
      |        ^~~~~~~~~~~
cmdline.h:572:8: note:                 ‘void cmdline::parser::parse_check(const std::vector<std::__cxx11::basic_string<char> >&)’
  572 |   void parse_check(const std::vector<std::string> &args){
      |        ^~~~~~~~~~~
cmdline.h:566:8: note:                 ‘void cmdline::parser::parse_check(const string&)’
  566 |   void parse_check(const std::string &arg){
      |        ^~~~~~~~~~~
cmdline.h:322:7: note: ‘class cmdline::parser’ defined here
  322 | class parser{
      |       ^~~~~~
cmdline.cpp:124:15: error: redefinition of ‘std::string cmdline::parser::usage() const’
  124 |   std::string parser::usage() const
      |               ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:595:15: note: ‘std::string cmdline::parser::usage() const’ previously defined here
  595 |   std::string usage() const {
      |               ^~~~~
cmdline.cpp:168:15: error: redefinition of ‘std::string cmdline::parser::error_full() const’
  168 |   std::string parser::error_full() const
      |               ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:588:15: note: ‘std::string cmdline::parser::error_full() const’ previously defined here
  588 |   std::string error_full() const{
      |               ^~~~~~~~~~
cmdline.cpp:179:8: error: redefinition of ‘bool cmdline::parser::parse(const string&)’
  179 |   bool parser::parse(const std::string &arg)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:414:8: note: ‘bool cmdline::parser::parse(const string&)’ previously defined here
  414 |   bool parse(const std::string &arg){
      |        ^~~~~
cmdline.cpp:232:8: error: redefinition of ‘bool cmdline::parser::parse(const std::vector<std::__cxx11::basic_string<char> >&)’
  232 |   bool parser::parse(const std::vector<std::string> &args)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:456:8: note: ‘bool cmdline::parser::parse(const std::vector<std::__cxx11::basic_string<char> >&)’ previously defined here
  456 |   bool parse(const std::vector<std::string> &args){
      |        ^~~~~
cmdline.cpp:249:8: error: redefinition of ‘bool cmdline::parser::parse(int, const char* const*)’
  249 |   bool parser::parse(int argc, const char *const argv[])
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:466:8: note: ‘bool cmdline::parser::parse(int, const char* const*)’ previously defined here
  466 |   bool parse(int argc, const char * const argv[]){
      |        ^~~~~
cmdline.cpp:392:8: error: no declaration matches ‘bool cmdline::parser::check(int, bool)’
  392 |   bool parser::check(int argc, bool ok)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:655:8: note: candidate is: ‘void cmdline::parser::check(int, bool)’
  655 |   void check(int argc, bool ok){
      |        ^~~~~
cmdline.h:322:7: note: ‘class cmdline::parser’ defined here
  322 | class parser{
      |       ^~~~~~
cmdline.cpp:410:8: error: redefinition of ‘void cmdline::parser::set_option(const string&)’
  410 |   void parser::set_option(const std::string &name)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:667:8: note: ‘void cmdline::parser::set_option(const string&)’ previously defined here
  667 |   void set_option(const std::string &name){
      |        ^~~~~~~~~~
cmdline.cpp:422:8: error: redefinition of ‘void cmdline::parser::set_option(const string&, const string&)’
  422 |   void parser::set_option(const std::string &name, const std::string &value)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:678:8: note: ‘void cmdline::parser::set_option(const string&, const string&)’ previously defined here
  678 |   void set_option(const std::string &name, const std::string &value){
      |        ^~~~~~~~~~
cmdline.cpp:434:8: error: redefinition of ‘void cmdline::parser::clear()’
  434 |   void parser::clear()
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:351:8: note: ‘void cmdline::parser::clear()’ previously defined here
  351 |   void clear() {
      |        ^~~~~
cmdline.cpp:445:8: error: redefinition of ‘void cmdline::parser::move_parser(cmdline::parser&, cmdline::parser&)’
  445 |   void parser::move_parser(parser &src, parser &dest)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:627:8: note: ‘void cmdline::parser::move_parser(cmdline::parser&, cmdline::parser&)’ previously defined here
  627 |   void move_parser(parser &src, parser &dest) {
      |        ^~~~~~~~~~~
cmdline.cpp:460:8: error: redefinition of ‘void cmdline::parser::copy_parser(const cmdline::parser&, cmdline::parser&)’
  460 |   void parser::copy_parser(const parser &src, parser &dest)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:641:8: note: ‘void cmdline::parser::copy_parser(const cmdline::parser&, cmdline::parser&)’ previously defined here
  641 |   void copy_parser(const parser &src, parser &dest) {
      |        ^~~~~~~~~~~
cmdline.cpp:475:36: error: definition of implicitly-declared ‘constexpr cmdline::parser::option_base::option_base()’
  475 |   parser::option_base::option_base() = default;
      |                                    ^
cmdline.cpp:475:3: error: ‘class cmdline::parser::option_base’ is private within this context
  475 |   parser::option_base::option_base() = default;
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:689:9: note: declared private here
  689 |   class option_base{
      |         ^~~~~~~~~~~
cmdline.cpp:477:3: error: redefinition of ‘cmdline::parser::option_base::~option_base()’
  477 |   parser::option_base::~option_base() = default;
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:691:13: note: ‘virtual cmdline::parser::option_base::~option_base()’ previously defined here
  691 |     virtual ~option_base(){}
      |             ^
cmdline.cpp:477:3: error: ‘class cmdline::parser::option_base’ is private within this context
  477 |   parser::option_base::~option_base() = default;
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:689:9: note: declared private here
  689 |   class option_base{
      |         ^~~~~~~~~~~
cmdline.cpp:479:3: error: redefinition of ‘cmdline::parser::option_without_value::option_without_value(const string&, char, const string&)’
  479 |   parser::option_without_value::option_without_value(
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:710:5: note: ‘cmdline::parser::option_without_value::option_without_value(const string&, char, const string&)’ previously defined here
  710 |     option_without_value(const std::string &full_name,
      |     ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:479:3: error: ‘class cmdline::parser::option_without_value’ is private within this context
  479 |   parser::option_without_value::option_without_value(
      |   ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:487:24: error: redefinition of ‘cmdline::parser::option_base* cmdline::parser::option_without_value::clone() const’
  487 |   parser::option_base *parser::option_without_value::clone() const
      |                        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:728:18: note: ‘virtual cmdline::parser::option_base* cmdline::parser::option_without_value::clone() const’ previously defined here
  728 |     option_base *clone() const {
      |                  ^~~~~
cmdline.cpp:487:11: error: ‘class cmdline::parser::option_base’ is private within this context
  487 |   parser::option_base *parser::option_without_value::clone() const
      |           ^~~~~~~~~~~
In file included from cmdline.cpp:1:
cmdline.h:689:9: note: declared private here
  689 |   class option_base{
      |         ^~~~~~~~~~~
cmdline.cpp:487:24: error: ‘class cmdline::parser::option_without_value’ is private within this context
  487 |   parser::option_base *parser::option_without_value::clone() const
      |                        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:494:8: error: redefinition of ‘bool cmdline::parser::option_without_value::has_value() const’
  494 |   bool parser::option_without_value::has_value() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:717:10: note: ‘virtual bool cmdline::parser::option_without_value::has_value() const’ previously defined here
  717 |     bool has_value() const { return false; }
      |          ^~~~~~~~~
cmdline.cpp:494:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  494 |   bool parser::option_without_value::has_value() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:499:8: error: redefinition of ‘void cmdline::parser::option_without_value::clear()’
  499 |   void parser::option_without_value::clear()
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:724:10: note: ‘virtual void cmdline::parser::option_without_value::clear()’ previously defined here
  724 |     void clear() {
      |          ^~~~~
cmdline.cpp:499:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  499 |   void parser::option_without_value::clear()
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:504:8: error: redefinition of ‘bool cmdline::parser::option_without_value::set()’
  504 |   bool parser::option_without_value::set()
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:719:10: note: ‘virtual bool cmdline::parser::option_without_value::set()’ previously defined here
  719 |     bool set(){
      |          ^~~
cmdline.cpp:504:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  504 |   bool parser::option_without_value::set()
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:510:8: error: redefinition of ‘bool cmdline::parser::option_without_value::set(const string&)’
  510 |   bool parser::option_without_value::set(const std::string &)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:734:10: note: ‘virtual bool cmdline::parser::option_without_value::set(const string&)’ previously defined here
  734 |     bool set(const std::string &){
      |          ^~~
cmdline.cpp:510:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  510 |   bool parser::option_without_value::set(const std::string &)
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:515:8: error: redefinition of ‘bool cmdline::parser::option_without_value::has_set() const’
  515 |   bool parser::option_without_value::has_set() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:738:10: note: ‘virtual bool cmdline::parser::option_without_value::has_set() const’ previously defined here
  738 |     bool has_set() const {
      |          ^~~~~~~
cmdline.cpp:515:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  515 |   bool parser::option_without_value::has_set() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:520:8: error: redefinition of ‘bool cmdline::parser::option_without_value::valid() const’
  520 |   bool parser::option_without_value::valid() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:742:10: note: ‘virtual bool cmdline::parser::option_without_value::valid() const’ previously defined here
  742 |     bool valid() const{
      |          ^~~~~
cmdline.cpp:520:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  520 |   bool parser::option_without_value::valid() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:525:8: error: redefinition of ‘bool cmdline::parser::option_without_value::must() const’
  525 |   bool parser::option_without_value::must() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:746:10: note: ‘virtual bool cmdline::parser::option_without_value::must() const’ previously defined here
  746 |     bool must() const{
      |          ^~~~
cmdline.cpp:525:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  525 |   bool parser::option_without_value::must() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:530:22: error: redefinition of ‘const string& cmdline::parser::option_without_value::name() const’
  530 |   const std::string &parser::option_without_value::name() const
      |                      ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:750:24: note: ‘virtual const string& cmdline::parser::option_without_value::name() const’ previously defined here
  750 |     const std::string &name() const{
      |                        ^~~~
cmdline.cpp:530:22: error: ‘class cmdline::parser::option_without_value’ is private within this context
  530 |   const std::string &parser::option_without_value::name() const
      |                      ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:535:8: error: redefinition of ‘char cmdline::parser::option_without_value::short_name() const’
  535 |   char parser::option_without_value::short_name() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:754:10: note: ‘virtual char cmdline::parser::option_without_value::short_name() const’ previously defined here
  754 |     char short_name() const{
      |          ^~~~~~~~~~
cmdline.cpp:535:8: error: ‘class cmdline::parser::option_without_value’ is private within this context
  535 |   char parser::option_without_value::short_name() const
      |        ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:540:22: error: redefinition of ‘const string& cmdline::parser::option_without_value::description() const’
  540 |   const std::string &parser::option_without_value::description() const
      |                      ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:758:24: note: ‘virtual const string& cmdline::parser::option_without_value::description() const’ previously defined here
  758 |     const std::string &description() const {
      |                        ^~~~~~~~~~~
cmdline.cpp:540:22: error: ‘class cmdline::parser::option_without_value’ is private within this context
  540 |   const std::string &parser::option_without_value::description() const
      |                      ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~
cmdline.cpp:545:15: error: redefinition of ‘std::string cmdline::parser::option_without_value::short_description() const’
  545 |   std::string parser::option_without_value::short_description() const
      |               ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:762:17: note: ‘virtual std::string cmdline::parser::option_without_value::short_description() const’ previously defined here
  762 |     std::string short_description() const{
      |                 ^~~~~~~~~~~~~~~~~
cmdline.cpp:545:15: error: ‘class cmdline::parser::option_without_value’ is private within this context
  545 |   std::string parser::option_without_value::short_description() const
      |               ^~~~~~
In file included from cmdline.cpp:1:
cmdline.h:708:9: note: declared private here
  708 |   class option_without_value : public option_base {
      |         ^~~~~~~~~~~~~~~~~~~~

Why do you hava a cmdline.cpp file？Only need the cmdline.h，this is template

Rhetorical question? Lol! This is a pull request you filed, in which you moved instantiations from the header to a cpp file.
I got the errors downloading and applying the patch for the pull request. But, downloading the cmdline.h and cmdline.cpp from your fork, I have more success: you just need to #include <cstring> in cmdline.cpp, and redefine virtual const char* cmdline::cmdline_error::what() const noexcept to const char * cmdline::cmdline_error::what() const  _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW.
Unfortunately, your branch is also suffering from #24.

Sorry, this is my file and I forget it, I pulled it a long time ago. I will check the code at a convenient time


doc: Add run information to README instructions

The README was missing the run step after the build information. When I was setting up my local environment I found this missing step a bit confusing as to how to actually get the QML GUI running, so I think it would be good to include here.

Ok thanks for the review @shaavan, I have now squashed my commits into 1.

Ok I have made the adjustments and I think that should be everything now, thanks for the reviews.

Sounds good, I am not too attached to any specific wording, whatever the maintainers would like is fine with me. I just want there to be some kind of run command instructions in the README, I have merged the suggestion. Should I squash again?

@secondl1ght yes, you would need to squash again. We require a clean commit history, see: https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#squashing-commits

Sounds good thanks, just squashed again.

Sounds good, I am not too attached to any specific wording, whatever the maintainers would like is fine with me.

Not maintainers, but reviewers.
Maintainers follow reviewers' opinion.

ACK 2e3f2a4


Enhance performence with DataProvider

Maybe the class like ArrayDataProvider should use ContiguousArray instead of Array. When
Element type is a class or @objc protocoll, it would be more predictable performance.

Maybe the class like ArrayDataProvider should use ContiguousArray instead of Array. When
Element type is a class or @objc protocoll, it would be more predictable performance.

Didn't know about ContiguousArray. But performance improvement is always great! I'm thinking that we can make ArrayDataProvider ask for a Collection instead. This way, users can use their own type of collection type how ever they want. What do you think?


Being able to list which debug are available.

I just created a thin wrapper around debug that could be useful when discovering/debugging an unknown project.
I tried to use wildcards but it's very messy.
const debug = function (name) {
  if (process.env.DEBUG && process.env.DEBUG == 'help') {
    console.log('available debug ' + name);
  }
  return require('debug')(name);
}

(The implementation is not the best i'm sure but it's not the point)
Is there any feature like this?
Do you think it could be useful?

We don't want to keep references to debug instances internally, as that is technically a leak, so I don't think we are going to implement anything like this for the time being


Opta Module Input Schemas

Description
This PR adds JSONSchemas to the Opta repository. These will be served from our GraphQL Gateway for consumption by our frontend.
TODO
The following is a list of related items that will be included in future work, but are not implemented in this PR.

Modify opta validate to use a module's JSON Schema when there is one
Add tests to ensure that any user_facing fields are included in a module's JSON schema

Safety checklist

[x] This change is backwards compatible and safe to apply by existing users
[x] This change will NOT lead to data loss
[x] This change will NOT lead to downtime who already has an env/service setup

How has this change been tested, beside unit tests?
Since this will initially only be consumed by our GraphQL Gateway, tests will be in https://github.com/run-x/graphql-gateway

How are these generated? This looks like it will be pretty tedious to keep the json scheme in sync with the yamle spec if its all done manually.

The current state (where both JSON schema and Yamale are in the codebase) is meant to be temporary -- this PR is the first step in a complete migration from Yamale to JSON schema. The eventual vision is that the entire inputs array in each module description is deprecated and is completely replaced by its corresponding json schema, and for that schema to be the single source of truth for both validation and docs generation

@rabbitfang Just added a script that takes these descriptions from our existing files and makes sure they're up to date during CI: opta/json_schema.py.


pass id prop to ConfirmationModal

Generation of HTML element-IDs in <ConfirmationModal> changed in
https://github.com/folio-org/stripes-components/commit/ce3ba8c996463a389ae3c3aeb36069d9a785ed69
and that broke a bunch of tests that relied on the old style of element
IDs. Happily, we can restore this behavior by passing in an ID prop that
matches the old format.
Refs STCOM-317

yarn run v1.6.0
$ eslint *.js settings
/home/jenkins/workspace/folio-org/ui-organization/PR-100/project/settings/Plugins.js
4:1  error  'stripes-config' should be listed in the project's dependencies. Run 'npm i -S stripes-config' to add it  import/no-extraneous-dependencies
✖ 1 problem (1 error, 0 warnings)
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


Feature request: add custom license with "unknown" license type (e.g. EPL)

Hi *,
first of all - thank you very much for supplying the library.
I'd like to add an entry for an EPL licensed library, i.e. add the copyright and the complete text of the EPL - but as far as I can see, there is no way to achieve this apart from deriving a subclass of License and overriding getLicense(). But then again this might be the intended way to do it.
All the best and kind regards
AZ

Please tell me for EPL License format.

Well, the EPL (Eclipse Public License) is available here.
I'm using an EPL library as stated in the Definitions 1/b/ii - I don't derive from the library, my program is encapsuled in different modules.
Problem is - I am not a lawyer. What I'd do is to display the copyright notice of the library and the full text of the license, as well as the required disclaimers and the exclusion of warranties regarding the functionality of the library.
I have (as of now) not found and example of a program that uses an EPL library and displays information about it.

@andreaszielke Please update to v1.2.0
Sorry for late.


issue warning when calling polymerCreated twice

Common error:
 - extend DivElement, use 'polymerCreated' explicitly
 - switch to extend PolymerElement, but forgot to remove the 'polymerCreated' call.
 - problem: polymerCreated is invoked twice
Possible solutions:
 - provide warnings in the linter: this is unfortunately something we can't do without full use of the dart analyzer/resoltion, which can be expensive
 - make polymerCreated reentrant (at least print a warning the second time it's invoked).

This issue has been moved to dart-lang/polymer-dart#371.


Add heartbeat payload as a header to auth requests

Description

Provide details of the change, and generalize the change in the PR title above.

Update AuthRequest constructor to take an App& and a bool of whether or not to add heartbeat payload
For all AuthRequest subclasses except for SecureTokenRequest, this bool is true
If a non-empty heartbeat payload is fetched, it is added to the request headers
Most of the files in this change are plumbing to pass App& into the various constructors of subclasses of AuthRequest

Testing

Describe how you've tested these changes. Link any manually triggered Integration tests or CPP binary SDK Packaging Github Action workflows, if applicable.

Existing unit and integration tests verify that no code is broken.
I will manually run integration tests to verify that the generated header is correctly processed by backends.

Type of Change
Place an x the applicable box:

[ ] Bug fix. Add the issue # below if applicable.
[ ] New feature. A non-breaking change which adds functionality.
[x ] Other, such as a build process or documentation change.

Notes

Bug fixes and feature changes require an update to the Release Notes section of release_build_files/readme.md.
Read the contribution guidelines CONTRIBUTING.md.
Changes to the public API require an internal API review. If you'd like to help us make Firebase APIs better, please propose your change in a feature request so that we can discuss it together.

2. I wonder if we can create some test to verify if the header is set properly.  Something similar to
I added a test to auth/tests/desktop/rpcs/create_auth_uri_test.cc
This test guarantees that a heartbeat is present in storage then checks that the payload of the request is non-empty.

@chkuang-g
I filed b/244643516 to track removal of old headers.
For the test, I moved it to a separate file that is dedicated to testing presence of heartbeat headers so that it is not hidden in the create_uri_request test
The test clears logged heartbeats at the start of the test so it should be ok to run it repeatedly.


Does V4 support the before style

"absolute mr-3 rounded-xl before:absolute before:top-0.5 before:h-4 before:w-4 before:rounded-xl",
this style works fine with v2 but can not work with v4

No. I would simply avoid using :before and be explict with your elements.
NativeWind has never supported the before: modifier?


New feature in HA regarding water comsuption

Hi,
In 2022.11 there is a new feature to monitorize Water consumption, but sensor that this integration generated are not in the available list of sensors.
Any solution to fix it?
Thanks

Fix it.
We must to include in the sensor the attribute: state_class: "total"
But it's a pity don't have a authorized integration like other solution have as a flume etc.
We will alive with this manual integration, at least it's an amazing work in this circumstance.

As a workaround add code to configuration.yaml:
homeassistant:   customize_glob:     sensor.<your_name_of_sensor>_1_day:       last_reset: '1970-01-01T00:00:00+00:00'       device_class: water       state_class: total_increasing
and update last reset with automation by midnight.

Hi @autopower thanks.
I just fighting with this. If I use senosr_1_day at the midnight I have negative numbers because sensors is reset to 0.
What can we do to keep numbers because window between 0 hours a 1 am result is negative like the same number that sensor finish day after.
Thanks.

Hi @autopower thanks.
I just fighting with this. If I use senosr_1_day at the midnight I have negative numbers because sensors is reset to 0.
What can we do to keep numbers because window between 0 hours a 1 am result is negative like the same number that sensor finish day after.
Thanks.

@autopower
last_reset attribute is deprecated, and we can not use it. tht´s the problem taht every mignight I have peak in the comsuption, when sensor becomes 0

I have this in my configuration yaml and it seems to be working:
template:
  - sensor:
      - name: "Wasserverbrauch"
        state_class: total_increasing
        device_class: water
        unit_of_measurement: "m³"
        state: "{{ states('sensor.0_1_5_grohesenseguardgerat_waterconsumption')  }}"

I have this in my configuration yaml and it seems to be working (i don't have the integration in HA but in openhab and just copy the value here..)
template:
  - sensor:
      - name: "Wasserverbrauch"
        state_class: total_increasing
        device_class: water
        unit_of_measurement: "m³"
        state: "{{ states('sensor.0_1_5_grohesenseguardgerat_waterconsumption')  }}"

Hey werden die daten denn an Homeassistant übermitelt?
How did you send the data to HA?

 How did you send the data to HA?
 How did you send the data to HA?
Dafür gibt es ja eine OpenHab Integration https://community.home-assistant.io/t/custom-component-openhab-integration/373942

Ive tryed that one… i just get data of pressure, temperature and a switch for the valve to Homeassistant, so im missen the consumption of the water … dunno why and im a newbe with openhab.
I find out that the dveloper of that integration passed out ….sry for
https://github.com/kubawolanin/ha-openhab/issues/created_by/Knobiwahn


Add Developer Guide to the web site

Request
Add Developer Guide to Param web site similar to Panel and hvPlot
Motivation
I would like to contribute to Param. The first thing I need to know is how to install for development. I cannot find a guide anywhere.
Thus I risk waisting time because I might not be able to install for development, install it in a way that causes issues or just cannot properly test the changes I make before creating the PRs.
Similarly a Developer Guide would be a sign that the project is welcoming contributions and is prepared to help new contributors.

Hi. Potential contributor here :-) Cannot find the Developer Guide?


revert version, update owner details and adhere to CHANGELOG standards

As discussed on slack, I've reverted the version number committed in the last commit and updated the Changelog.

should we merge this and fix CI later. @barryorourke your call since this is your baby now.

I didn't wait to see if CI passed because it was a simple change, will take a look at that now


Backported covalent ssh plugin doesn't detect failures within an Electron.

Environment

Covalent version:  0.33.0
Covalent-SSH plugin version: 0.3.0
Python version: 3.8.13
Operating system: Fedora 35

What is happening?
When an exception is raised by the SSH plugin signaling a task failure, that exception is not propagated to the dispatcher's _run_task. Thus covalent always marks the electron as completed even if no results are returned.
How can we reproduce the issue?
The following workflow
@ct.electron
def task():
        assert False
        return 1

@ct.lattice
def workflow():
        return task()

should fail, but instead "succeeds".
What should happen?
The electron should fail. This bug happens because we weren't propagating exceptions raised within executor.execute() to the dispatcher.
Any suggestions?
No response

Fixed by #10


iOS 9 support

Is there a chance that the library get iOS 9 support? There seems to be some iOS 9-specific comments in the code, so there was certainly an intention to make it work there. What was the obstacle there?

give ios 8 a chance too😑

I totally understand the desire for supporting old versions of iOS, but unfortunately, we've found UICollectionView, particularly with self-sizing cells, to be very bugging before iOS 10. We've also confirmed with UIKit engineers that iOS 10 made many changes to collection view, which might explain why it got more stable.
In short, there's not an interest by the maintainers of this project to support versions of iOS that we know are both old and buggy when it comes to collection view. If you really need to support iOS 9 and earlier, I would encourage you to fork and modify MagazineLayout.

And for what it's worth, Airbnb is a pretty popular app, and we left iOS 9 a while back. Perhaps you can too? 🙂

Yeah, that's what I ended up doing(forking the library), it seems to work ok. I completely understand your point, hopefully we also can drop iOS 9 support soon. 👍


[FLINK-36524][pipeline-connector][paimon] bump version of Paimon to 0.9.0

bump version to 0.9.0.
Forcibly add cache-enabled = false in catalog option to avoid using previous table schema.

Refer to https://paimon.apache.org/docs/master/maintenance/configurations/#catalogoptions, after bump version to 0.9.0, we can support create table with uppercase columns using allow-upper-case catalog option, which resolved https://issues.apache.org/jira/browse/FLINK-36475.

@beryllw @melin CC as you may interested.

LGTM.