"containerd oci-hook" does not pass the right rootfs

While testing #2330 with a custom rootfs, I got the following:
$ ctr run --rm --gpus 0 --rootfs ~/runc/ubuntu test /bin/bash
ctr: OCI runtime create failed: container_linux.go:336: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:385: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: mount error: mount operation failed: /run/containerd/io.containerd.runtime.v1.linux/default/test/rootfs/proc/driver/nvidia: no such file or directory\\\\n\\\"\"": unknown

This is not the right rootfs, I believe this path will only work with the containerd snapshotter:
https://github.com/containerd/containerd/blob/c1e1f3d6d990e79cfc22317558571008536e0f6e/cmd/containerd/command/oci-hook.go#L91-L93
Instead, the OCI runtime spec needs to be read to retrieve root.path. Unless we turn this rootfs into a symlink to the spec's rootfs, that would also work I guess and would prevent the spec parsing in this command.

cc @crosbymichael

Ok, so the OCI runtime spec mandates that the root.path is in a directory below the bundle, which makes this use case not compliant to the spec. But this configuration is widely used, by Docker CE for instance.

Ok, so the OCI runtime spec mandates that the root.path is in a directory below the bundle

@flx42 I don't see that the OCI runtime spec mandates it should be below the bundle. I just see it can be either a relative path or an absolute path in config.md#root.
I'd like ctr --rootfs / oci.WithRootFSPath to work as well with absolute paths. I am not sure relative paths are meaningful when the spec is passed over gRPC rather than read from a file.

@alban look at the bundle spec:
https://github.com/opencontainers/runtime-spec/blob/master/bundle.md
And in the bundle validation tool:
https://github.com/opencontainers/runtime-tools/blob/e2ffaf10d07335df3bfb0f81a4015d7ce780f032/specerror/bundle.go#L15-L16
https://github.com/opencontainers/runtime-tools/blob/25ae2f4e9a405e940bdd8f025a52558fccfd7158/validate/validate.go#L246


Support for PostGIS

PostGIS is a spatial database extender for PostgreSQL object-relational database. It adds support for geographic objects allowing location queries to be run in SQL.
I would love to see support for it in our Vapor postgresql driver.
To be able to declare those types and to run queries from Fluent
http://postgis.net

I also would love to see support for PostGis in Fluent and Postgres Driver

+1 to this. I would say this is the only thing holding me back from making a complete move. On the other hand, can we use raw query for GIS?

@plarson looks fantastic, about to give it a go. Would be great to have official Vapor support though!


update descriptions

Fixes #134

Thanks a lot! Finally! What about change in email? Will you do that too?

Ohh yes! I forgot that

Thanks a lot! Finally! What about change in email? Will you do that too?

Done!. Ready to be merged.

Great!


Currency Number Db configuration

The title of the PRs should start with "MP-XXXX ........."

The converter should use the "FromDatabase" method.


refactor(protocol-designer): 7.0 release candidate b various bug fixes

closes RQA-1183, RQA-1126, RQA-1123, RQA-1080
Overview
Fixes a handful of bugs QA found
Test Plan
sandbox: https://sandbox.designer.opentrons.com/pd_rc-b-bug-fixes/

create a protocol with either OT-2 or flex, when you go to the Design tab, there is a modal that should pop up (if it doesn't then you turned off the hints and need to turn them back on in the settings). The modal should have NO reference to a blue highlighted step anymore (RQA-1183)
after you dismiss the modal, click on the duplicate button when you hover over the tiprack or any labware on the deck. Duplicate until the whole deck is filled. Make sure that it doesn't duplicate onto the trash slot. (RQA-1126)
create a new protocol with the Flex (not OT-2). Go to the design tab and add a labware to the A1 location. Go to the File tab and add a thermocycler. When you select the GEN2 model, there should be warning that shows up saying that the slot is occupied so you can't place the module there (RQA-1123)
exit out of adding a thermocycler modal, click on editing the pipettes model up above. The pipette images should be aligned and not overlapping with the dropdown menus. (RQA-1080)

Changelog

fix copy in deck setup explanation modal
add logic to indicate that if slot A1 is occupied then the TC GEn2 can't go on the deck
tweak the pipette diagram locations
filter out the trash slots for duplicating labware

Review requests
see test plan
Risk assessment
low

The pipette image issue has been solved.
FYI At this moment, this wouldn't be a big issue. Maybe I guess grasping this kind of issue would be good for the development 7.1.

@koji, yeah, PD is not responsive, definitely something to fix in the future. thanks for noticing it!


Type definitions and tests for camel-case

https://github.com/blakeembrey/camel-case
https://www.npmjs.com/package/camel-case

camel-case/camel-case.d.ts
check list

[ ] is collect naming convention?

https://www.npmjs.com/package/camel-case
http://bower.io/search/?q=camel-case
others?

[X] has a test file? (camel-case/camel-case-tests.ts or others)
[ ] pass the Travic-CI test?

@stpettersens thanks mate!


Any release build?

Hi. Any test build? @pjessesco

Hi @odil24 ,
I don't have a plan to provide a pre-built executable for now, but I believe that you can build it quite easily. Also note that you can refer CI script (link) 😃


Java: Fix Javadoc warnings on BingConnector

Fix up all warnings on the BingConnector class:
[WARNING] semantic-kernel/java/connectors/semantickernel-connectors-web-bing/src/main/java/com/microsoft/semantickernel/connectors/web/bing/BingConnector.java:23: warning: no comment
[WARNING] public class BingConnector implements WebSearchEngineConnector {
[WARNING] ^
[WARNING] semantic-kernel/java/connectors/semantickernel-connectors-web-bing/src/main/java/com/microsoft/semantickernel/connectors/web/bing/BingConnector.java:67: warning: no comment
[WARNING] public static class BingWebPage implements WebPage {
[WARNING] ^
[WARNING] semantic-kernel/java/connectors/semantickernel-connectors-web-bing/src/main/java/com/microsoft/semantickernel/connectors/web/bing/BingConnector.java:106: warning: no comment
[WARNING] public BingConnector(String apiKey) {
[WARNING] ^
[WARNING] semantic-kernel/java/connectors/semantickernel-connectors-web-bing/src/main/java/com/microsoft/semantickernel/connectors/web/bing/BingConnector.java:101: warning: no comment
[WARNING] public BingConnector(String apiKey, HttpClient httpClient) {
[WARNING] ^
[WARNING] semantic-kernel/java/connectors/semantickernel-connectors-web-bing/src/main/java/com/microsoft/semantickernel/connectors/web/bing/BingConnector.java:73: warning: no comment
[WARNING] public BingWebPage(
[WARNING] ^
[WARNING] 5 warnings
[WARNING] Javadoc Warnings
[WARNING] 30 warnings

Moved this code to the samples directory which does not get javadoc'd.


Uprade tile pipeline fails if there are multiple versions of same product available in the Ops Manager

The "stage-tile" task fails as it finds multiple versions of the same product.
Below is the output from Concourse pipeline:
################################################
Need exactly one unstaged build for p-redis version 1.10.0
[
{
"name": "p-isolation-segment",
"product_version": "1.11.6"
},
{
"name": "p-windows-runtime",
"product_version": "1.11.3"
},
{
"name": "p-redis",
"product_version": "1.10.0"
},
{
"name": "p-rabbitmq",
"product_version": "1.9.3"
},
{
"name": "cf",
"product_version": "1.11.14"
}
]
##############################################################
Fixed the issue with a workaround by deleting the unused products from Ops Manager.  Need to add this code to the task.sh script for future usage.
[root@acldlp01pcf scripts]# ./om-linux --skip-ssl-validation --username admin --password <OPSMAN_PASSWORD> --target <OPSMAN_DOMAIN_OR_IP_ADDRESS> curl -path /api/v0/available_products
Status: 200 OK
Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Date: Tue, 14 Nov 2017 21:01:05 GMT
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Server: nginx/1.4.6 (Ubuntu)
Strict-Transport-Security: max-age=15552000
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 38e0bee7-8327-43af-988e-c6f48c279096
X-Runtime: 1.393724
X-Xss-Protection: 1; mode=block
[
{
"name": "p-isolation-segment",
"product_version": "1.12.6"
},
{
"name": "cf",
"product_version": "1.12.5"
},
{
"name": "bosh-hm-forwarder",
"product_version": "0.0.24"
},
{
"name": "splunk-nozzle",
"product_version": "1.0.0"
},
{
"name": "p-spring-cloud-services",
"product_version": "1.4.3"
},
{
"name": "p-windows-runtime",
"product_version": "1.12.3"
},
{
"name": "p-mysql",
"product_version": "1.10.0"
},
{
"name": "sumo-logic-nozzle",
"product_version": "0.1.2"
},
{
"name": "p-redis",
"product_version": "1.9.3"
},
{
"name": "p-metrics",
"product_version": "1.9.2"
},
{
"name": "p-isolation-segment",
"product_version": "1.11.6"
},
{
"name": "p-windows-runtime",
"product_version": "1.11.3"
},
{
"name": "p-windows-runtime-isoseg",
"product_version": "1.12.3"
},
{
"name": "p-rabbitmq",
"product_version": "1.10.5"
},
{
"name": "p-redis",
"product_version": "1.10.0"
},
{
"name": "p-rabbitmq",
"product_version": "1.9.3"
},
{
"name": "cf",
"product_version": "1.11.14"
}
]
[root@acldlp01pcf scripts]# ./om-linux --skip-ssl-validation --username admin -password <OPSMAN_PASSWORD> --target <OPSMAN_DOMAIN_OR_IP_ADDRESS> delete-unused-products
trashing unused products
done
[root@acldlp01pcf scripts]# ./om-linux --skip-ssl-validation --username admin -password <OPSMAN_PASSWORD> --target <OPSMAN_DOMAIN_OR_IP_ADDRESS> curl -path /api/v0/available_products
Status: 200 OK
Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Date: Tue, 14 Nov 2017 21:08:56 GMT
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pragma: no-cache
Server: nginx/1.4.6 (Ubuntu)
Strict-Transport-Security: max-age=15552000
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Request-Id: 10469939-3af8-4208-996c-1cf824e2b353
X-Runtime: 0.992134
X-Xss-Protection: 1; mode=block
[
{
"name": "p-isolation-segment",
"product_version": "1.12.6"
},
{
"name": "cf",
"product_version": "1.12.5"
},
{
"name": "bosh-hm-forwarder",
"product_version": "0.0.24"
},
{
"name": "splunk-nozzle",
"product_version": "1.0.0"
},
{
"name": "p-spring-cloud-services",
"product_version": "1.4.3"
},
{
"name": "p-windows-runtime",
"product_version": "1.12.3"
},
{
"name": "p-mysql",
"product_version": "1.10.0"
},
{
"name": "sumo-logic-nozzle",
"product_version": "0.1.2"
},
{
"name": "p-redis",
"product_version": "1.9.3"
},
{
"name": "p-metrics",
"product_version": "1.9.2"
},
{
"name": "p-windows-runtime-isoseg",
"product_version": "1.12.3"
},
{
"name": "p-rabbitmq",
"product_version": "1.10.5"
}
]
I have added the code for this under my branch:
https://github.com/pratsury22/pcf-pipelines/pull/1

Hi @pratsury22 thanks for reporting this. This is a known issue which we've applied a fix for and we hope to release soon. Please look out for v21 when it comes out; that version of the pipelines will contain the fix for this issue. Thanks.

Hi @pratsury22 we've released v21 which contains the fix to the issue you've seen above. Please switch to this version of the pipelines and let us know if you have any feedback by opening a new issue. Thanks.


Navigation hangs after fast transition between states

Navigation works as long as I don't navigate too fast between all the states. When I quickly navigate with some links with ui-sref on it, it freezes on a random state. You can see the difference between the working and non working navigation. The resolves are still called but the view aren't rendered anymore... We also use: $transition.router.stateService.target('state_name_palceholder') to navigate to other states and this still works but when navigating back to a corrupted state it gives back the freezed state.
a perfectly working navigation
Transition #2 Digest #43:   Hook -> onBefore context: main.users, undefined
trace.ts?3953:142 Transition #2 Digest #43: Started  -> "Transition#2( 'main.customers'{} -> 'main.users'{} )"
trace.ts?3953:162 Transition #2 Digest #43:   Hook -> onStart context: main.users, undefined
trace.ts?3953:181 Transition #2 Digest #43:         Resolving [object Object],[object Object],[object Object] (EAGER)
trace.ts?3953:172 Transition #2 Digest #43:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:162 Transition #2 Digest #43:   Hook -> onStart context: main.users, undefined
trace.ts?3953:172 Transition #2 Digest #43:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:240 VIEWCONFIG: Loaded [ViewConfig#4 from 'main.users' state]: target ui-view: '$default@main'
trace.ts?3953:162 Transition #2 Digest #43:   Hook -> onStart context: main.users, undefined
trace.ts?3953:162 Transition #2 Digest #43:   Hook -> onEnter context: main.users, undefined
trace.ts?3953:181 Transition #2 Digest #43:         Resolving [object Object],[object Object],[object Object] (LAZY)
trace.ts?3953:172 Transition #2 Digest #43:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:191 Transition #2 Digest #43:               <- Resolved  Resolvable(token: "roleService", requires: []) to: {"checkPermissions":"function (roleCollection) {\n        var deferred = $q.defer();\n\n        if(permission) {\n          service.getPermission(permission, roleCollection, deferred);\n        } e...
trace.ts?3953:191 Transition #2 Digest #43:               <- Resolved  Resolvable(token: "$q", requires: []) to: "function Q(resolver)"
trace.ts?3953:191 Transition #2 Digest #43:               <- Resolved  Resolvable(token: "apiService", requires: []) to: {"getBaseUrl":"function () {\n      return '/api/zones/' + Context.getZoneId() + '/customers/' + Context.getTenantId();\n    }","pollJob":"function (jobId) {\n      return $http.get(apiService.getB...
trace.ts?3953:191 Transition #2 Digest #43:               <- Resolved  Resolvable(token: "permission", requires: ["roleService"]) to: "undefined"
trace.ts?3953:191 Transition #2 Digest #45:               <- Resolved  Resolvable(token: "users", requires: ["$q","apiService"]) to: [{"_id":"57ab344713a277bcc9f5317b","firstname":"Aug10v8","lastname":"Aug10v8","upn":"Aug10v8@dev.int","ownerid":"aug10v8-adc01","id":"aug10v8dev.int","role":"admin","password":"null","fullname":"Au...
trace.ts?3953:210 Transition #2 Digest #45: <- Success  "Transition#2( 'main.customers'{} -> 'main.users'{} )", final state: main.users
3trace.ts?3953:162 Transition #2 Digest #45:   Hook -> onSuccess context: main.users, undefined
trace.ts?3953:240 VIEWCONFIG: <- Removing [ViewConfig#3 from 'main.customers' state]: target ui-view: '$default@main'
trace.ts?3953:240 VIEWCONFIG: -> Registering [ViewConfig#4 from 'main.users' state]: target ui-view: '$default@main'
trace.ts?3953:216 ui-view: Updating                       [ui-view#2 tag in template from 'main' state]: fqn: 'content.$default', name: '$default@main') with ViewConfig from context='main.users'
trace.ts?3953:216 ui-view: Created scope for              [ui-view#2 tag in template from 'main' state]: fqn: 'content.$default', name: '$default@main'), scope #221
trace.ts?3953:216 ui-view: Destroying scope               [ui-view#2 tag in template from 'main' state]: fqn: 'content.$default', name: '$default@main')
trace.ts?3953:216 ui-view: Animate out                    [ui-view#undefined tag in template from '(root)' state]: fqn: 'undefined', name: 'undefined@undefined')
trace.ts?3953:216 ui-view: Fill                           [ui-view#2 tag in template from 'main' state]: fqn: 'content.$default', name: '$default@main') with:

    search
    <input class="clo-input" placeholder="Search..." ng-model="vm.search"...
2trace.ts?3953:162 Transition #2 Digest #45:   Hook -> onSuccess context: main.users, undefined

The malfunctioning tracing looks like this:
Transition #32 Digest #251:   Hook -> onBefore context: main.users, undefined
trace.ts?3953:142 Transition #32 Digest #251: Started  -> "Transition#32( 'main.customers'{} -> 'main.users'{} )"
trace.ts?3953:162 Transition #32 Digest #251:   Hook -> onStart context: main.users, undefined
trace.ts?3953:181 Transition #32 Digest #251:         Resolving [object Object],[object Object],[object Object] (EAGER)
trace.ts?3953:172 Transition #32 Digest #251:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:162 Transition #32 Digest #251:   Hook -> onStart context: main.users, undefined
trace.ts?3953:172 Transition #32 Digest #251:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:240 VIEWCONFIG: Loaded [ViewConfig#31 from 'main.users' state]: target ui-view: '$default@main'
trace.ts?3953:162 Transition #32 Digest #251:   Hook -> onStart context: main.users, undefined
trace.ts?3953:162 Transition #32 Digest #251:   Hook -> onEnter context: main.users, undefined
trace.ts?3953:181 Transition #32 Digest #251:         Resolving [object Object],[object Object],[object Object] (LAZY)
trace.ts?3953:172 Transition #32 Digest #251:   <- Hook returned: "[Promise]", transition result: "[Promise]"
trace.ts?3953:191 Transition #32 Digest #251:               <- Resolved  Resolvable(token: "roleService", requires: []) to: {"checkPermissions":"function (roleCollection) {\n        var deferred = $q.defer();\n\n        if(permission) {\n          service.getPermission(permission, roleCollection, deferred);\n        } e...
trace.ts?3953:191 Transition #32 Digest #251:               <- Resolved  Resolvable(token: "$q", requires: []) to: "function Q(resolver)"
trace.ts?3953:191 Transition #32 Digest #251:               <- Resolved  Resolvable(token: "apiService", requires: []) to: {"getBaseUrl":"function () {\n      return '/api/zones/' + Context.getZoneId() + '/customers/' + Context.getTenantId();\n    }","pollJob":"function (jobId) {\n      return $http.get(apiService.getB...
trace.ts?3953:191 Transition #32 Digest #251:               <- Resolved  Resolvable(token: "permission", requires: ["roleService"]) to: "undefined"
trace.ts?3953:191 Transition #32 Digest #253:               <- Resolved  Resolvable(token: "users", requires: ["$q","apiService"]) to: [{"_id":"57ab344713a277bcc9f5317b","firstname":"Aug10v8","lastname":"Aug10v8","upn":"Aug10v8@dev.int","ownerid":"aug10v8-adc01","id":"aug10v8dev.int","role":"admin","password":"null","fullname":"Au...
trace.ts?3953:210 Transition #32 Digest #253: <- Success  "Transition#32( 'main.customers'{} -> 'main.users'{} )", final state: main.users
3trace.ts?3953:162 Transition #32 Digest #253:   Hook -> onSuccess context: main.users, undefined
trace.ts?3953:240 VIEWCONFIG: <- Removing [ViewConfig#30 from 'main.customers' state]: target ui-view: '$default@main'
trace.ts?3953:240 VIEWCONFIG: -> Registering [ViewConfig#31 from 'main.users' state]: target ui-view: '$default@main'
2trace.ts?3953:162 Transition #32 Digest #253:   Hook -> onSuccess context: main.users, undefined

I think it has something to do with slow resolves (+/- 600ms)

That seems strange...  the ui-view named $default@main never gets notified of the updated ViewConfig.  I can't tell why that happened.
Can you provide a way for me to reproduce this?

I'm facing the same issue. I'm not sure if it's the kind of example you're looking for, but I have a deployed example site that demonstrates this:
https://tv-tracker-73580.firebaseapp.com/

Go to the "Shows" screen
Click "Next" 9-10 times very quickly
Click one of the other views again "Home" or "Login"
You'll notice the state router no longer renders the destination state

Source code is available here: https://github.com/giannico/angular1-tv-tracker

Sorry @christopherthielen , it looks like the firebase version bump from 3.3.0 to 3.4.0 caused a breaking change in the application. I pushed the new package.json pinning the version to 3.3.0. If you just npm install<EMAIL_ADDRESS>and then run npm start, the app should work.
Thanks for taking a look.

@christopherthielen Thanks, I'm hitting this as well. Any timeframe where this will make it into a new release?


DragValue with hexadecimal values

Currently, the DragValue  is mostly geared for decimal values, and provide a store of knobs and features around precision etc.
I'm personally interested in having a hexadecimal drag-value allowing, presentation dragging and editing in hex values.
Is this something you feel is reasonable for:

egui?
the current DragValue widget through adding formatting/validation capabilities
A new HexDragValue widget that is special purposed for this scenario

This was recently implemented in https://github.com/emilk/egui/pull/1851 !


NEXT-1797 - execute composer require on plugin install

Description
Composer 2.0 is in RC phase now. A good time to finish the plugin installation how it was one meant to be.
Having already this bad boy
https://github.com/shopware/platform/blob/master/src/Core/Framework/Plugin/Composer/CommandExecutor.php
which of course needs some love.
it is also not the best solution to execute the whole command, imo. but unfortunately the composer commands contain much logic.
maybe it is possible to extract only the needed things. so that we could have nice exception handling instead of parsing the string output of the command for errors, for example.
we also need the counter part on plugin uninstall.
additionally we need some benchmarks. composer 2 is amazingly fast, but on slow connections the downloading of packages takes some times which will probably lead to timeout issues if the plugin installation is triggered in the adminstration.
first steps, which I already could provide: https://github.com/mitelg/platform/tree/next-1797/composer-2-compatibility

updating composer dependencies in our composer.json
method for executing composer remove
exceptions which show the buffered output, if the exit code was not 0

checks needed:

performance
system has still composer 1.x but Shopware has already above code

It would make me happy, if some of you are willing to help here 🤗💙 I will give support as much as I can
Tickets:

https://issues.shopware.com/issues/NEXT-1797
https://issues.shopware.com/issues/NEXT-10745

I tried this with one of our plugins and it worked well. Nice Job. Installing a plugin took about 10 second via the Administration.

Unfortunately I cant execute composer install for your platform-branch with Composer 2.0.0-RC1. Seems like some packages in the dependency tree of shopware/platform are not compatible with PHP7.2 and Composer 2.
10:05 $ composer update
The "hirak/prestissimo" plugin was skipped because it requires a Plugin API version ("^1.0.0") that does not match your Composer installation ("2.0.0"). You may need to run composer update with the "--no-plugins" option.
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
  Problem 1
    - ocramius/package-versions[1.1.1, ..., 1.2.0] require composer-plugin-api ^1.0 -> found composer-plugin-api[2.0.0] but it does not match the constraint.
    - ocramius/package-versions[1.3.0, ..., 1.4.2] require composer-plugin-api ^1.0.0 -> found composer-plugin-api[2.0.0] but it does not match the constraint.
    - ocramius/package-versions[1.5.0, ..., 1.5.1] require php ^7.3.0 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/package-versions[1.6.0, ..., 1.9.0] require php ^7.4.0 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/proxy-manager[2.3.0, ..., 2.5.2] require php ^7.4.0 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/package-versions[1.10.0, ..., 1.11.0] require php ^7.4.7 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/proxy-manager[2.6.0, ..., 2.7.0] require php 7.4.* -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/proxy-manager 2.7.1 requires php 7.4.0 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - ocramius/proxy-manager[2.8.0, ..., 2.9.1] require php ~7.4.1 -> your php version (7.2.9; overridden via config.platform, actual: 7.4.8) does not satisfy that requirement.
    - symfony/proxy-manager-bridge v4.4.13 requires ocramius/proxy-manager ~2.1 -> satisfiable by ocramius/proxy-manager[2.1.0, ..., 2.9.1].
    - ocramius/proxy-manager[2.2.0, ..., 2.2.3] require ocramius/package-versions ^1.1.3 -> satisfiable by ocramius/package-versions[1.1.3, ..., 1.11.0].
    - ocramius/proxy-manager[2.1.0, ..., 2.1.1] require ocramius/package-versions ^1.1.1 -> satisfiable by ocramius/package-versions[1.1.1, ..., 1.11.0].
    - Root composer.json requires symfony/proxy-manager-bridge ~4.4.13 -> satisfiable by symfony/proxy-manager-bridge[v4.4.13].
ocramius/package-versions only provides support for Composer 2 in 1.8+, which requires PHP 7.4.
If you can not upgrade PHP you can require composer/package-versions-deprecated to resolve this with PHP 7.0+.
You are using a snapshot build of Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report an issue to them to ask them to support Composer 2. To work around this you can run Composer with --ignore-platform-req=composer-plugin-api, but this may result in broken plugins and bigger problems down the line.


next-bundle-analyzer usage unclear

The https://github.com/zeit/next-plugins/tree/master/packages/next-bundle-analyzer#usage-with-environment-variables usage example references a yarn build script but does not describe the script. Is it simply next build? I've tried a few combinations of this and not been able to get any of the analyze results to show in a browser.
PS. I'm happy to PR an update to the docs, I just cannot before understanding it myself :sweat_smile:

yeah it's just next build. nothing special there

Well, I was going to take another look at my failing example but it now works. No idea how I screwed it up last time :man_shrugging: Thanks for the info.


fix(routing): async message pickup on init

Currently, when initializing the agent using a MediationPickupStrategy different from None (e.g. PickupV1 or PickupV2), it attempts to start message pickup in a synchronous way, meaning that it might take some more time for startup depending on the . Also, if mediator is not reachable at that moment, it will throw an error and Agent's _isInitialized flag will not be set to true even if can connect afterwards (with the polling of PickupV1 or backoff strategy of PickupV2).
In this PR we are starting the message pickup process in an async way and catching any possible initial error, in a similar way as Agent's initialize method for connecting to ledger pools.

Makes sense +1 I've currently handled it by setting it to None and starting pickup manually afterwards. I think handling this better by default means less custom code and if you need more control you can just set it to None and handle it yourself

Yes, actually I noticed this while writing the tutorial for message pickup that I owe since several weeks :sweat_smile:. There will be the suggestion of using None and handle the cycle manually depending on network status.


Adds contentType tags

Description
Tagging all markdown with the content type.
Possible content types:
HOWTO (Guide)
TUT (Tutorial)
INTRO (index /intro page)
EXP (Explainer)
REF (Reference)
FAQ (Answers)

all README are considered INTRO and all CHANGELOG are considered REF

As outlined here: https://www.notion.so/dapperlabs/Types-of-Docs-033e722018f34036811ff38dac03eded
PR also formats whitespace.

Closing this. Was meant to be used with new docs site build. This is on hold now.
The changes are easy to re-add later if we decide to use the same strategy for naming content types.


Installation Fails

Thanks for using Soft U2F. I'm sorry that you've encountered a bug.
System information
sw_vers
10.13.1
file /Library/Extensions/softu2f.kext /Applications/SoftU2F.app ~/Library/LaunchAgents/com.github.SoftU2F.plist
~ λ file /Library/Extensions/softu2f.kext /Applications/SoftU2F.app ~/Library/LaunchAgents/com.github.SoftU2F.plist
/Library/Extensions/softu2f.kext:                           directory
/Applications/SoftU2F.app:                                  directory
/Users/jacob/Library/LaunchAgents/com.github.SoftU2F.plist: cannot open `/Users/jacob/Library/LaunchAgents/com.github.SoftU2F.plist' (No such file or directory)

kextstat -b com.github.SoftU2FDriver
~ λ kextstat -b com.github.SoftU2FDriver
Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>

ps aux | grep SoftU2F.app
~ λ ps aux | grep SoftU2F.app
jacob             4378   0.0  0.0  4267752    872 s004  S+   11:42am   0:00.00 grep SoftU2F.app

grep SoftU2F -a20 -b20 /var/log/install.log | sort -g | uniq | tail -n200
4532884-2017-12-04 11:40:04+11 space-jacob Installer[3648]: Starting installation:
4532959-2017-12-04 11:40:04+11 space-jacob Installer[3648]: Configuring volume "Macintosh HD"
4533045-2017-12-04 11:40:04+11 space-jacob Installer[3648]: Preparing disk for local booted install.
4533138-2017-12-04 11:40:04+11 space-jacob Installer[3648]: Free space on "Macintosh HD": 102.01 GB<PHONE_NUMBER>80 bytes).
4533252-2017-12-04 11:40:04+11 space-jacob Installer[3648]: Create temporary directory "/var/folders/vn/rz7s4p1j1psfjtjwhr1kfx5m0000gn/T//Install.3648ximmLy"
4533402-2017-12-04 11:40:04+11 space-jacob Installer[3648]: IFPKInstallElement (1 packages)
4533486-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Adding client PKInstallDaemonClient pid=3648, uid=501 (/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer)
4533672-2017-12-04 11:40:04+11 space-jacob Installer[3648]: PackageKit: Enqueuing install with framework-specified quality of service (utility)
4533808-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: ----- Begin install -----
4533896-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: request=PKInstallRequest <1 packages, destination=/>
4534011-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: packages=(
4534084:	    "PKLeopardPackage <id=com.GitHub.SoftU2F, version=0, url=file://localhost/Users/jacob/Downloads/SoftU2F.pkg>"
4534199-	)
4534202:2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Extracting file://localhost/Users/jacob/Downloads/SoftU2F.pkg (destination=/var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/7C0235C8-12F7-4FEF-ACF5-BCC19A63CF0A.activeSandbox/Root, uid=0)
4534476-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: prevent user idle system sleep
4534569-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: suspending backupd
4534650:2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Executing script "./preinstall" in /private/tmp/PKInstallSandbox.rxk0NM/Scripts/com.GitHub.SoftU2F.oxmTFc
4534818-2017-12-04 11:40:04+11 space-jacob installd[732]: ./preinstall: Can't open CFBundle for /Library/Extensions/softu2f.kext.
4534940-2017-12-04 11:40:04+11 space-jacob installd[732]: ./preinstall: Can't create /Library/Extensions/softu2f.kext.
4535051-2017-12-04 11:40:04+11 space-jacob install_monitor[3654]: Temporarily excluding: /Applications, /Library, /System, /bin, /private, /sbin, /usr
4535194:2017-12-04 11:40:04+11 space-jacob installd[732]: ./preinstall: /Users/jacob/Library/LaunchAgents/com.github.SoftU2F.plist: No such file or directory
4535344-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Using trashcan path /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/PKInstallSandboxTrash/7C0235C8-12F7-4FEF-ACF5-BCC19A63CF0A.sandboxTrash for sandbox /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/7C0235C8-12F7-4FEF-ACF5-BCC19A63CF0A.activeSandbox
4535683-2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Shoving /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/C/PKInstallSandboxManager/7C0235C8-12F7-4FEF-ACF5-BCC19A63CF0A.activeSandbox/Root (2 items) to /
4535897:2017-12-04 11:40:04+11 space-jacob installd[732]: PackageKit: Executing script "./postinstall" in /private/tmp/PKInstallSandbox.rxk0NM/Scripts/com.GitHub.SoftU2F.oxmTFc
4536066-2017-12-04 11:40:04+11 space-jacob installd[732]: ./postinstall: Cache file /System/Library/Caches/com.apple.kext.caches/Directories/Library/Extensions/KextIdentifiers.plist.gz is out of date; not using.
4536270:2017-12-04 11:40:13+11 space-jacob installd[732]: ./postinstall: Kext rejected due to system policy: <OSKext 0x7fbadbc268f0 [0x7fffa5240570]> { URL = "file:///Library/StagedExtensions/Library/Extensions/softu2f.kext/", ID = "com.github.SoftU2FDriver" }
4536523:2017-12-04 11:40:13+11 space-jacob installd[732]: ./postinstall: Kext rejected due to system policy: <OSKext 0x7fbadbc268f0 [0x7fffa5240570]> { URL = "file:///Library/StagedExtensions/Library/Extensions/softu2f.kext/", ID = "com.github.SoftU2FDriver" }
4536776-2017-12-04 11:40:13+11 space-jacob installd[732]: ./postinstall: Diagnostics for softu2f.kext:
4536871-2017-12-04 11:40:13+11 space-jacob install_monitor[3654]: Re-included: /Applications, /Library, /System, /bin, /private, /sbin, /usr
4537004-2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: releasing backupd
4537084-2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: allow user idle system sleep
4537175:2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: Install Failed: Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package “SoftU2F.pkg”." UserInfo={NSFilePath=./postinstall, NSURL=file://localhost/Users/jacob/Downloads/SoftU2F.pkg, PKInstallPackageIdentifier=com.GitHub.SoftU2F, NSLocalizedDescription=An error occurred while running scripts from the package “SoftU2F.pkg”.} {
4537617-	    NSFilePath = "./postinstall";
4537652:	    NSLocalizedDescription = "An error occurred while running scripts from the package \U201cSoftU2F.pkg\U201d.";
4537767:	    NSURL = "file://localhost/Users/jacob/Downloads/SoftU2F.pkg";
4537834:	    PKInstallPackageIdentifier = "com.GitHub.SoftU2F";
4537890-	}
4537893-2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: Running idle tasks
4537974:2017-12-04 11:40:13+11 space-jacob Installer[3648]: install:didFailWithError:Error Domain=PKInstallErrorDomain Code=112 "An error occurred while running scripts from the package “SoftU2F.pkg”." UserInfo={NSFilePath=./postinstall, NSURL=file://localhost/Users/jacob/Downloads/SoftU2F.pkg, PKInstallPackageIdentifier=com.GitHub.SoftU2F, NSLocalizedDescription=An error occurred while running scripts from the package “SoftU2F.pkg”.}
4538413-2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: Removing client PKInstallDaemonClient pid=3648, uid=501 (/System/Library/CoreServices/Installer.app/Contents/MacOS/Installer)
4538601-2017-12-04 11:40:13+11 space-jacob installd[732]: PackageKit: Done with sandbox removals
4538690-2017-12-04 11:40:14+11 space-jacob Installer[3648]: Install failed: The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.
4538881-2017-12-04 11:40:14+11 space-jacob Installer[3648]: IFDInstallController 11D90 state = 8
4538970-2017-12-04 11:40:14+11 space-jacob Installer[3648]: Displaying 'Install Failed' UI.
4539054-2017-12-04 11:40:14+11 space-jacob Installer[3648]: 'Install Failed' UI displayed message:'The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.'.
4539270-2017-12-04 11:40:17+11 space-jacob Installer[3648]: Package Removal: User opted to keep package.

Additional Info:
My first install was stuck "Approving the unidentified developer" app under Security and Privacy, I clicked Allow tens of times and the message would not disappear. After a reboot I now get failures trying to install.
Perhaps I have misread the instructions, disabling SIP is not required unless its a modified/recompiled version?
Versions attempted:
0.0.15
0.0.14

I was able to Allow an older install of the Kext when installing another pkg which required a Kext allow. At this point I got a multi select allow and approved both.


can't add any api key at all.

Hi i got this error, and i try to add a api key
that says invalid salt, and have change it and recompile flask and try to find where the problem is and don't can figure out where
//bjorne
Dec  5 13:50:09 speed gunicorn[2559]: [2022-12-05 13:50:09,688] [app.py:1891] ERROR - Exception on /admin/key/edit [POST]
Dec  5 13:50:09 speed gunicorn[2559]: Traceback (most recent call last):
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
Dec  5 13:50:09 speed gunicorn[2559]:     response = self.full_dispatch_request()
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/app.py", line 1952, in full_dispatch_request
Dec  5 13:50:09 speed gunicorn[2559]:     rv = self.handle_user_exception(e)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/app.py", line 1821, in handle_user_exception
Dec  5 13:50:09 speed gunicorn[2559]:     reraise(exc_type, exc_value, tb)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/compat.py", line 39, in reraise
Dec  5 13:50:09 speed gunicorn[2559]:     raise value
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/app.py", line 1950, in full_dispatch_request
Dec  5 13:50:09 speed gunicorn[2559]:     rv = self.dispatch_request()
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask/app.py", line 1936, in dispatch_request
Dec  5 13:50:09 speed gunicorn[2559]:     return self.view_functionsrule.endpoint
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/flask_login/utils.py", line 272, in decorated_view
Dec  5 13:50:09 speed gunicorn[2559]:     return func(*args, **kwargs)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/powerdnsadmin/decorators.py", line 33, in decorated_function
Dec  5 13:50:09 speed gunicorn[2559]:     return f(*args, **kwargs)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/powerdnsadmin/routes/admin.py", line 341, in edit_key
Dec  5 13:50:09 speed gunicorn[2559]:     apikey = ApiKey(desc=description,
Dec  5 13:50:09 speed gunicorn[2559]:   File "", line 4, in init
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/sqlalchemy/orm/state.py", line 433, in initialize_instance
Dec  5 13:50:09 speed gunicorn[2559]:     manager.dispatch.init_failure(self, args, kwargs)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 68, in exit
Dec  5 13:50:09 speed gunicorn[2559]:     compat.raise(
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/sqlalchemy/util/compat.py", line 182, in raise
Dec  5 13:50:09 speed gunicorn[2559]:     raise exception
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/sqlalchemy/orm/state.py", line 430, in _initialize_instance
Dec  5 13:50:09 speed gunicorn[2559]:     return manager.original_init(*mixed[1:], **kwargs)
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/powerdnsadmin/models/api_key.py", line 36, in init
Dec  5 13:50:09 speed gunicorn[2559]:     self.key = self.get_hashed_password(rand_key).decode('utf-8')
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/powerdnsadmin/models/api_key.py", line 109, in get_hashed_password
Dec  5 13:50:09 speed gunicorn[2559]:     return bcrypt.hashpw(pw.encode('utf-8'),
Dec  5 13:50:09 speed gunicorn[2559]:   File "/var/www/html/pdns/flask/lib/python3.9/site-packages/bcrypt/init.py", line 84, in hashpw
Dec  5 13:50:09 speed gunicorn[2559]:     return _bcrypt.hashpass(password, salt)
Dec  5 13:50:09 speed gunicorn[2559]: ValueError: Invalid salt

https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/938#issuecomment-853837503


Kubectl describe nodes with Multi containers may display error quota

What happened:
When I use kubectl to describe nodes
It may display error quota like below

In fact ,I never  make a cpu limit and request.

I found init container may cause this.
What you expected to happen:
Not show 100m cpu , the value not set may not  be computed.
How to reproduce it (as minimally and precisely as possible):

Anything else we need to know?:
I found this code may be related.
https://github.com/kubernetes/kubectl/blame/159a770147fb28337c6807abb1b2b9db843d0aff/pkg/describe/describe.go#L4034
https://github.com/kubernetes/kubectl/blob/652881798563c00c1895ded6ced819030bfaa4d7/pkg/util/resource/resource.go#L34
// addResourceList adds the resources in newList to list
func addResourceList(list, new corev1.ResourceList) {
	for name, quantity := range new {
		if value, ok := list[name]; !ok {
			list[name] = quantity.DeepCopy()
		} else {
			value.Add(quantity)
			list[name] = value
		}
	}
}

When quantity is 0 , we cannot  just simply add
Environment:

Kubernetes client and server versions (use kubectl version):
Cloud provider or hardware configuration:
OS (e.g: cat /etc/os-release):
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:23:52Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"18+", GitVersion:"v1.18.8-aliyun.1", GitCommit:"2cbb16c", GitTreeState:"", BuildDate:"2021-01-27T02:20:04Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}

https://github.com/kubernetes/kubectl/blob/652881798563c00c1895ded6ced819030bfaa4d7/pkg/util/resource/resource.go#L34

/triage accepted
/priority backlog

We are potentially only looking at init containers here.

@qixiaobo can you please provide a simple manifest to reproduce this?

@qixiaobo  When quantity is 0, we can add the value to it. This is what is being done in kubectl top
It first create the resource as 0 and then add the current value to it
	podMetrics := make(v1.ResourceList)
	for _, res := range MeasuredResources {
		podMetrics[res], _ = resource.ParseQuantity("0")
	}

	for _, c := range m.Containers {
		for _, res := range MeasuredResources {
			quantity := podMetrics[res]
			quantity.Add(c.Usage[res])
			podMetrics[res] = quantity
		}
	}

@qixiaobo When quantity is 0, we can add the value to it. This is what is being done in kubectl top
It first create the resource as 0 and then add the current value to it
	podMetrics := make(v1.ResourceList)
	for _, res := range MeasuredResources {
		podMetrics[res], _ = resource.ParseQuantity("0")
	}

	for _, c := range m.Containers {
		for _, res := range MeasuredResources {
			quantity := podMetrics[res]
			quantity.Add(c.Usage[res])
			podMetrics[res] = quantity
		}
	}

Yeah , your are right.
So it makes a mistake.
But maybe  this case 0 indicates unlimited.
So when  unlimited plus any value maybe also unlimited in limit

@qixiaobo , can you provide a way to reproduce the error as @eddiezane suggested? That would really help us to fix this issue. Thank You.

@qixiaobo , can you provide a way to reproduce the error as @eddiezane suggested? That would really help us to fix this issue. Thank You.

I will try to make a repo later

https://github.com/qixiaobo/k8s-quota-test/blob/main/myapp.yaml
You may apply -f
Then you can  invoke
kubectl describe  nodes `kubectl get pods -o wide -l app=myapp|tail -n +2|awk '{print $7}'`

You can see not set myapp container cpu limit or request
Just set init container,I don't think not set may be treated as zero to make a plus

The output show for the describe node command reflects the quotas used for  scheduling the pod on the node, with the logic: https://github.com/kubernetes/kubernetes/blob/a48a2efbd45ad77901dd09f2665d8cc1e1d8dbf6/staging/src/k8s.io/api/core/v1/types.go#L2977-L2980
// The resourceRequirements of an init container are taken into account during scheduling
// by finding the highest request/limit for each resource type, and then using the max of
// of that value or the sum of the normal containers. Limits are applied to init containers
// in a similar fashion.

this is taken care by this code:
https://github.com/kubernetes/kubectl/blob/652881798563c00c1895ded6ced819030bfaa4d7/pkg/util/resource/resource.go#L74-L85
Instead of showing the exact quota of the pod (which will be the entire node's resources in this case), the output shows only what was taken into account during scheduling.
A similar scenario may occur when a pod contains multiple containers but some of them do not have the quota set. It will show a summation of the values for those containers which had the limit/resource available.

The output show for the describe node command reflects the quotas used for scheduling the pod on the node, with the logic: https://github.com/kubernetes/kubernetes/blob/a48a2efbd45ad77901dd09f2665d8cc1e1d8dbf6/staging/src/k8s.io/api/core/v1/types.go#L2977-L2980
// The resourceRequirements of an init container are taken into account during scheduling
// by finding the highest request/limit for each resource type, and then using the max of
// of that value or the sum of the normal containers. Limits are applied to init containers
// in a similar fashion.

this is taken care by this code:
https://github.com/kubernetes/kubectl/blob/652881798563c00c1895ded6ced819030bfaa4d7/pkg/util/resource/resource.go#L74-L85
Instead of showing the exact quota of the pod (which will be the entire node's resources in this case), the output shows only what was taken into account during scheduling.
A similar scenario may occur when a pod contains multiple containers but some of them do not have the quota set. It will show a summation of the values for those containers which had the limit/resource available.

Yeah  , so it may cause misunderstanding

/assign @brianpursley


gdk-pixbuf: 2.42.0 -> 2.42.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for gdk-pixbuf is: "A library for image loading and manipulation"
meta.homepage for gdk-pixbuf is: "https://gitlab.gnome.org/GNOME/gdk-pixbuf"
meta.changelog for gdk-pixbuf is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 2.42.2 with grep in /nix/store/h4vvj92p94qd885dl1466fd7qkp5prxg-gdk-pixbuf-2.42.2

directory tree listing: https://gist.github.com/610ce9bef1a92663bf37cfd72f4d392d

du listing: https://gist.github.com/2b7b30523d86576fc9d4f054847772e5

Rebuild report (if merged into master) (click to expand)

19265 total rebuild path(s)

6305 package rebuild(s)

6244 x86_64-linux rebuild(s)
5572 i686-linux rebuild(s)
1969 x86_64-darwin rebuild(s)
5480 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
AusweisApp2
DisnixWebService
Literate
MIDIVisualizer
OSCAR
R
SDL_mixer
Sylk
_1password-gui
abcl
abiword
accountsservice
acoustidFingerprinter
adapta-gtk-theme
adementary-theme
adobe-reader
adoptopenjdk-icedtea-web
adwaita-qt
aegisub
aeon
aerc
aesop
afew
afterstep
agda
agda-pkg
agdaPackages.agda
agdaPackages.agda-categories
agdaPackages.agda-prelude
agdaPackages.cubical
agdaPackages.functional-linear-algebra
agdaPackages.generic
agdaPackages.iowa-stdlib
agdaPackages.standard-library
agenda
ahoviewer
airtame
aj-snapshot
akira-unstable
alacritty
alarm-clock-applet
albert
alchemy
alda
aldor
alephone
alfred
aliceml
aliza
allegro5

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/h4vvj92p94qd885dl1466fd7qkp5prxg-gdk-pixbuf-2.42.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A gdk-pixbuf https://github.com/r-ryantm/nixpkgs/archive/2cff808a1e35388ca282f062eb44cd650ba57e6c.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/h4vvj92p94qd885dl1466fd7qkp5prxg-gdk-pixbuf-2.42.2
ls -la /nix/store/h4vvj92p94qd885dl1466fd7qkp5prxg-gdk-pixbuf-2.42.2/bin

Pre-merge build results
NixPkgs review skipped

Maintainer pings
cc @edolstra @hedning @jtojnar @worldofpeace @dasj19 for testing.

https://github.com/NixOS/nixpkgs/pull/106302


fix(uiSelectHeaderGroupSelectableDirective): do not issue error if feature is disabled and apply selectable feature after options list changed/filtered

Trying to use new feature on my project. Would like to fix issues as soon as I find it.

We use wrapper around ui-select, so we always need uiSelectHeaderGroupSelectableDirective directive to exist on template even when ui-select is used for single/no-groups mode. In current implementation, if directive is disabled and other conditions do not pass, console.error() will be executed. That fix prevents error message to be shown for disabled directive.

If list of available options is filtered on the fly (based on $select.search, e.g. ng-repeat="options | filter: $select.search"), not all group headers receive ui-select-header-group-selectable class, as DOM is updated after enableClick() function runs.

Hi @Klinton90 , look good to me 👍 .


(Re)implement campaigns?

Several people in the IEG committee were of the opinion that we should try and get our app to work with Campaigns if possible. Marti suggested that we might consider implementing a feature that allows people running the campaign to select what the current campaign would be, and all pictures submitted to the campaign by users would automatically fall under the selected category. However, she also said that she understands if we can't implement it in this IEG round, but in that case we could consider it for a future project.
What do you think? I recall there was some unused campaign code that we removed as a bugfix, right? Did that code have this functionality in it (I don't seem to recall that it did), or would we be starting from scratch if we wanted to implement this?

Hi @Nicolas_Raoul, any thoughts on this? Sorry for bumping it, but I should probably get back to Marti soon on this.
Thanks!

It's surprising that there seemed to be zero interest in campaigns when we removed it, and now it seems to be important to some people.
Hopefully reintroducing it would be as simple as reverting https://github.com/nicolas-raoul/apps-android-commons/pull/24/files and https://github.com/nicolas-raoul/apps-android-commons/pull/26/files
I wanted to remove it because my goal was to have a simple app for everyone, and campaigns seemed to be a gadget unrelated to this goal, a gadget only used by insiders and whose complexity might become a burden. Also, it used to create a "Campaigns" icon in the Android launcher whose purpose and usage was unclear, in addition to being useless for most people.
But if campaigns are an important thing again, and can bring us many new users, then it might be a good thing towards the project's goal. We should identify a person familiar with campaigns who ideally can re-introduce this feature, or at least test it. Old APKs of the app can probably be found, to see what the campaigns feature used to look like.

Thanks Nicolas! I'll ask and see if there is anyone familiar with campaigns whom we can talk to about this.

Another example of a campaign type: http://www.wikilovesearth.bio/
There are fixed areas and within those areas any photo can be submitted. Having the polygons of the biosphere reserves we can easily detect if the person is close or within the polygon. A small notification can remind them to take a picture.

@tobias47n9e that looks really cool!
I wonder if we would need different support for different types of campaigns, or if it would be possible to have a framework that works for all?
Also, does anyone know if there's anyone running campaigns whom we can talk to about potential implementations?

@misaochan I still stink we can handle all campaigns the same. We just have to make the way we handle different types flexible enough. I am still ready to work on the API as soon as we feel that other things have become stable and we can tackle new things.

Fixed in #2113


[Suggestion] Improve types

Summary
Currently the library liberally uses any, Function and string types. There is nothing wrong with doing it this way, however the developer experience could be meaningfully improved by implementing generics.
I've made a slice of what the implementation might look like in my fork. My vscode formatted it to 2 space indent, so it might look ugly, sorry for that.
What the actual improvement is?
User land code in both examples is the same, only $lib/core has been changed.
With current implementation the data type is any and keys are string. Because of that we get no type checking and autocomplete.

After adding some generics we get both.

How does that work?
Since the DataHandler instance gets passed around anyway, it makes sense to attach the type to it.
export default class DataHandler<T extends { [key: string]: unknown } = any>

With that adapting Th component to use the type is pretty straightforward.
<script lang="ts">
  type T = $$Generic<{ [key: string]: unknown }>;
  type OrderBy<Row> = keyof Row | ((row: Row) => Row[keyof Row]);

  import type { DataHandler } from '$lib/core';
  export let handler: DataHandler<T>;
  export let orderBy: OrderBy<T>;
  export let align: 'left' | 'right' | 'center' = 'left';
  const identifier = orderBy ? orderBy.toString() : orderBy;

  const sorted = handler.getSorted();
</script>

What's next?
It shouldn't be that hard to extend the same idea to the rest of the library, and I have plentiful free time right now, so I can implement the changes. But that's still a big change and I wanted to discuss it here first.
@vincjo As the author an maintainer of the library, do you feel like the library would benefit from stricter types (like ones in the example above)?
If you have any questions - feel free to ask. And thank you for the awesome work on the library.

Thank you for these clear explanations.
It seems very relevant to me.
I looked at your fork, didn't see any particular restraint (thx for the preview :ok_hand:).
I'm currently quite limited when it comes to Typescript so this would be a great help

I'm done with a draft of implementation, please check it out in the fork.
I couldn't figure out how to make formatting from npm run format match what you have in the repo to make a nice-looking PR. Can you help me with that, please?
Changes follow the same idea as in the example above. Filter and sorting types are a bit convoluted right now, but it's fixable.
What's left now is cleaning up the code, updating the docs, and testing.
Also narrowing most of the exposed types is a pretty big breaking change. Since there are only minor runtime changes (only additional type checks iirc), most of the user land code should be fine. But it is still important to figure out what the migration will look like.

Hey @vincjo , great looking project you have here! Probably the cleanest and most straightforward I've seen for Svelte. Is there any plans to release these type improvements? I'd like to use this as the DataTable for shadcn-svelte, but not having those types is a dealbreaker.
Let me know if this is in the plan or if I should start a fork!
Thank you!

@jst-r :pray:
Just realeased npm package 1.9.0
I refactored here and there, now type declarations live in $lib/index.ts