Change to IDF v5.1 (master) causing SPI related link errors (IDFGH-8855)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
v5.1-dev-2063-g593335578f
Operating System used.
macOS
How did you build your project?
Command line with CMake
If you are using Windows, please specify command line type.
No response
What is the expected behavior?
Compile and link to be successful
What is the actual behavior?
Compiles successfully but linker fails with errors.
Steps to reproduce.
Part of a complex app with many IDF and private components but build fails with any config including the SPI adapter.
Build or installation Logs.
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.literal.spi_master_init_driver+0x40): undefined reference to `spi_hal_init'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.literal.spi_master_init_driver+0x4c): undefined reference to `spi_hal_deinit'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.6.literal+0x0): undefined reference to `spi_hal_fetch_result'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.0.literal+0x0): undefined reference to `spi_hal_setup_device'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.5.literal+0x0): undefined reference to `spi_hal_setup_trans'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.5.literal+0x4): undefined reference to `spi_hal_prepare_data'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.5.literal+0x8): undefined reference to `spi_hal_user_start'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.iram1.7.literal+0x18): undefined reference to `spi_hal_usr_is_done'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj):(.literal.spi_bus_add_device+0x48): undefined reference to `spi_hal_cal_clock_conf'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_master_init_driver':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:241: undefined reference to `spi_hal_init'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: /Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:255: undefined reference to `spi_hal_deinit'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_master_deinit_driver':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:277: undefined reference to `spi_hal_deinit'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_post_trans':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:604: undefined reference to `spi_hal_fetch_result'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_setup_device':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:502: undefined reference to `spi_hal_setup_device'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_new_trans':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:589: undefined reference to `spi_hal_setup_trans'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: /Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:590: undefined reference to `spi_hal_prepare_data'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: /Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:595: undefined reference to `spi_hal_user_start'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_intr':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:619: undefined reference to `spi_hal_usr_is_done'
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/driver/libdriver.a(spi_master.c.obj): in function `spi_bus_add_device':
/Users/andremaree/Dropbox/devs/ws/z-sdk/esp-idf/components/driver/spi_master.c:371: undefined reference to `spi_hal_cal_clock_conf'

More Information.
No response

Hello?I have a try with your question but it is ok for me. but what the version you mean as v5.1-dev-2063-g593335578f, is it the tag v5.1-dev or you use a installation pkg? in my experience, you can:

try to update your tool-chain
try to build a example to see if there is the same issue
esp-idf use a components-manager now, check if you add REQUIRES driver in main/CMakeLists.txt of your project
check if you add some special compile option flags

@wanckl
Thanks for the suggestions.

Toolchain test done, using latest.
not sure building of an example will be conclusive proof.
"driver" is not an external/managed component so not component manager related as far as I know. But, "driver" is listed as a REQUIRE in main/CMakeLists.txt
Compile flags, difficult to say where to start.

The messages seem to indicate, at least to me, that the "driver" component is being built and that the "spi_master.c" APIs are included, but that "spi_hal_????" APIs, all part of the "hal" component cannot be found.
Similarly "ledc.c" cannot find "led_hal_??????" APIs, all of which also form part of the "hal" component.
Only a single component in my codebase refer to "ledc.c" APIs and that module has "PRIV_REQUIRES driver"
My code does not in any way reference "hal" functions directly, only through "spi" and "led" as being part of "drivers"
So, to me it looks like component "driver" not finding component "hal" at link time.
@igrr maybe you can in your wisdom point me at my mistake, or identify this as a bug?

Could you help check the hal component CMakeLists.txt file in your local project? To see if the needed spi_hal_x.cs and ledc_hal_x.cs are in the source file list?

You may directly do message(SRCS="${srcs}") to message out the source file list,
or byidf_component_get_property(my_srcs hal SRCS)
message(STATUS "my_srcs is: ${my_srcs}")

to check the registered source files.
Then do a idf.py reconfigure to re-run the cmake to see the needed messages.
Note if you do it in the latter way, you need to put the idf_component_get_property after the hal component idf_component_register is called.
@ammaree

@wanckl
Confirmed that REQUIRES hal is indeed present in components/driver/CMakeFiles.txt
@Icarus113
Result of adding message(SRCS="${srcs}") into components/hal/CMakelists.txt yields...
SRCS="mpu_hal.cefuse_hal.cesp32/efuse_hal.cmmu_hal.cwdt_hal_iram.crtc_io_hal.cspi_hal.cspi_hal_iram.cspi_slave_hal.cspi_slave_hal_iram.ctimer_hal.ctimer_hal_iram.cgpio_hal.cuart_hal.cuart_hal_iram.cspi_flash_hal.cspi_flash_hal_iram.cspi_flash_encrypt_hal_iram.cadc_hal_common.cadc_oneshot_hal.cledc_hal.cledc_hal_iram.ci2c_hal.ci2c_hal_iram.crmt_hal.cpcnt_hal.cmcpwm_hal.ctwai_hal.ctwai_hal_iram.ci2s_hal.csdm_hal.cadc_hal.csha_hal.csdio_slave_hal.ctouch_sensor_hal.caes_hal.cesp32/brownout_hal.cesp32/touch_sensor_hal.cesp32/gpio_hal_workaround.c"
So, it seems the required spi_hal????.c and ledc_hal???.c are there, or am I missing something?

This is kinda weird. The error logs show that those spi_hal_xx symbols are to be resolved, but the references cannot be found. Seeing all of the spi_hal_xx functions in spi_hal.c/spi_hal_iram.c are missing, I can only suspect that these two source files are not in the build.
Could you please help check in your local project build directory <your-project-dir>/build/esp-idf/hal/CMakeFiles/__idf_hal.dir to see if spi_hal.c.obj, spi_hal_iram.c.obj, ledc_hal.c.obj, ledc_hal_iram.c.obj are there? I believe these obj files are to be dealt by the linker.
If there you find the needed .obj files, then you do a for example
nm spi_hal.c.obj

to list the symbol table, to see if you can find the needed function symbols.

@Icarus113
Also checked in libhal.a that all the same symbols for all 4 file-sets are present there.

Are you storing your IDF project in a Dropbox-synchronized folder? I see Dropbox/ in your path?
If that's the case, can you try moving your project out of it just to have a try? It may be unrelated but I saw a lot of weird errors related to files, symbolic links, hard links, permissions etc when using Dropbox or Google Drive-synchronized folders.

@ammaree Are you storing your IDF project in a Dropbox-synchronized folder? I see Dropbox/ in your path?
If that's the case, can you try moving your project out of it just to have a try? It may be unrelated but I saw a lot of weird errors related to files, symbolic links, hard links, permissions etc when using Dropbox or Google Drive-synchronized folders.

After having cleaned my build environment as far a REQUIRES, PRIV_REQUIRES and COMPONENTS are concerned the link problems are becoming more and more strange.
The latest errors refer to symbols that do not exist anywhere in my code, but they all appear to be concatenations of symbols or some form of .obj or .a file corruption.
/Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/main/libmain.a(main.cpp.obj):(.literal.app_main+0x94): undefined reference to '_Z11xEpGDI_InitP19tskTaskControlBlock' /Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/main/libmain.a(main.cpp.obj):(.literal.app_main+0xa0): undefined reference to '_Z13vEpGDI_DeInitv' /Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: esp-idf/main/libmain.a(main.cpp.obj): in function 'app_main': /Users/andremaree/DevSpace/z-projects/irmacs/main/main.cpp:149: undefined reference to '_Z11xEpGDI_InitP19tskTaskControlBlock' /Users/andremaree/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/11.2.0/../../../../xtensa-esp32-elf/bin/ld: /Users/andremaree/DevSpace/z-projects/irmacs/main/main.cpp:198: undefined reference to '_Z13vEpGDI_DeInitv'
This _Z11xEpGDI_InitP19tskTaskControlBlock appear to include 2 separate symbols, xEpGDI_Init and tskTaskControlBlock joined together with _Z11 and P19 to miraculously create a new symbol.
Similarly _Z13vEpGDI_DeInitv comprises of vEpGDI_DeInit ( a valid symbol) with _Z13 and v added to the start and end.
Any suggestions....

Suspecting it might be related to a corrupt build environment I have now deleted the complete esp-idf as well as the .espressif directories, reinstalled everything from scratch, recompiled and the exact same error at link stage.
The symbols are the same ones listed in the post above.
If it was memory corruption I would expect the results to be random, based on applications loaded and process running, but there is nothing inconsistent in the result.
Any suggestions?
@igrr @o-marshmallow @david-cermak

The names of the missing symbols are not corrupted. They are the result of C++ name mangled representation of the following function signatures:

xEpGDI_Init(tskTaskControlBlock*)
vEpGDI_DeInit(void)

Are these functions defined (implemented) in a .c or a .cpp source file?
Are these functions defined in the same component as your main.cpp?
If they are in a different component, is that component present in the REQURES or PRIV_REQUIRES list of your main component?

@igrr
You once again saved my backside....
My first attempt to convert some modules over to C++ caused this learning curve. I successfully made the required changes converting my "main.c" to "main.cpp" but in the larger scale restructuring I created separate header files, some of which did not get the c++ guards.
Added those and the problem gone, now I can continue testing and fixing the rest....
Thanks again!


Cannot delete my Bot in portal azure

Bot Info

Deployment Environment: Azure portal

Issue Description
I´m trying to delete a test Bot in my account, but affter click do delete, the messe Cannot delete your bot is displayed. Without any detalis!

Message info on Notifications:
Com êxito: 0, Com falha: 2, Cancelado: 0.
Detalhes do erro
BootBC2k18: message: The remote server returned an error: (412) Precondition Failed. original trace: at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync[T](IAsyncResult result) at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass21.b__0(IAsyncResult ar) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Azure.Helpers.CloudTableObjectExtensions.d__131.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Azure.Helpers.CloudTableObjectExtensions.d__121.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Models.Storage.d__80.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Models.Storage.d__95.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at DevPortalLib.Helpers.BotHelper.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at Intercom.ResourceProvider.DataProviders.ResourceDataProvider.d__3.MoveNext() (Código: UnknownError) TesteAlkBootCamp: message: The remote server returned an error: (412) Precondition Failed. original trace: at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync[T](IAsyncResult result) at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass21.b__0(IAsyncResult ar) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Azure.Helpers.CloudTableObjectExtensions.d__131.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Azure.Helpers.CloudTableObjectExtensions.d__121.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Models.Storage.d__80.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Intercom.Models.Storage.d__95.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at DevPortalLib.Helpers.BotHelper.d__16.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() at Intercom.ResourceProvider.DataProviders.ResourceDataProvider.d__3.MoveNext() (Código: UnknownError)

It's a known issue that's being worked on...


Experiencing deployment failure that says file size larger than 2GB

How did you install the Amplify CLI?
npm
If applicable, what version of Node.js are you using?
v20.11.1
Amplify CLI Version
12.10.1
What operating system are you using?
AWS Linux
Did you make any manual changes to the cloud resources managed by Amplify? Please describe the changes made.
No manual changes made
Describe the bug
I was trying to run amplify publish for a web app made by react native, and the process failed after zipping all the artifacts. It shows the deployment error which says: file size<PHONE_NUMBER>) is greater than 2 GiB
Expected behavior
Amplify finish with success
Reproduction steps
run amplify publish on my react native project (not open source)
Project Identifier
No response
Log output

# Put your logs below this line
2024-03-15T05:18:38.930Z|error : File size<PHONE_NUMBER>) is greater than 2 GiB
UnknownNodeJSFault: File size<PHONE_NUMBER>) is greater than 2 GiB

Additional information
No response
Before submitting, please confirm:

[X] I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
[X] I have removed any sensitive information from my code snippets and submission.

Hey @Alicewyz, thank you for reaching out. Diving into the error message this appears to be a NodeJS limit. You could try setting the max-old-space-size to a higher value and retry the publish.
But curious on the size of the application, does the application utilize assets such as images being zipped up as well?

Closing the issue due to inactivity. Do reach out to us if you require any assistance.


Restrict pilot registrations to consent domain

This makes it only possible to register for the pilot via the www.give-or-refuse-consent-for-vaccinations.nhs.uk domain in production.
It also makes the registration URL more intuitive, allowing an arbitrary slug to go after the /:school_id.
Before:
/schools/1/registration/new

After:
/1 # or
/1/pool-hayes-primary

Review without whitespace changes.

Seems to break on review apps. Can we make them work? Happy to punt if that's too hard, but I think it would be important to have them sorted.

The /1/ URL isn't actually working as it's not specific enough and conflicts with /422. There isn't enough time to keep iterating this right this moment.


Fix a link

I'm trying to fix a link...

@yoichinak : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@yoichinak : Thanks for your contribution! The author(s) have been notified to review your proposed change.

This looks correct to me, but it's not possible to tell definitively in GitHub preview. I'll move the commit to the private repository to verify on staging. Then, we'll close this PR.

@yoichinak Thanks for your contribution! I was able to verify on staging in the private repo that the link works. We'll merge it here.


Feature request: concise "compatibility" matching

I'd really like a concise expression for "is version x compatible with version y?"
Specifically, suppose I write code against one version of an API, and the API exposes a semver-compliant version. Is v_caller compatible with v_api?
The most concise expression I can come up with is something like v_caller <= v_api and v_caller.major == v_api.major, but I really wish this was simpler and more readable. Maybe v_caller.compatible(v_api); or maybe v_caller.can_call(v_api) better illustrates which operand is which.
I know this would be covered by #241, but its scope is quite broad. I wanted to specifically call out this feature.

@sbrudenell Thanks for your report.

I'd really like a concise expression for "is version x compatible with version y?"

Yes, but what you mean by "compatible with"? I have a vague idea, but "In the face of ambiguity, refuse the temptation to guess." :wink:
Could you help me to understand what you mean by giving a more verbose example? Thanks! :+1:

Maybe a clearer way to say what I mean is: x -> y is not a breaking change.
Another way: x matches "^y" according to npm version matching idioms. (or probably a subset of the idiom, not treating version 0 as special)
Does that make sense?

Yes, but what you mean by "compatible with"? I have a vague idea, but "In the face of ambiguity, refuse the temptation to guess." 😉

For my use case I'd most like to be able to use the PEP 440 version of "compatible": https://www.python.org/dev/peps/pep-0440/#compatible-release
I would also greatly appreciate being able to use the operators from that pep in the code, for example
>>> semver.match("1.2.3", "==1.*")
True

Isn't the specification enough?
SemVer is all about compatibility...

Isn't the specification enough?
SemVer is all about compatibility...

The spec is about API compatibility, but doesn't have any info about version compatibility, eg ~=1.2

The spec is about API compatibility, but doesn't have any info about version compatibility, eg ~=1.2

Did you mean version matching?
OP asked for a method to check if a caller implementing version X is compatible with a callee implementing version Y, using somthing like X.compatible_with(Y).

I'd really like a concise expression for "is version x compatible with version y?"

That's exactly what SemVer is about.
In order to do that, compatible_with function should simply apply the rules described in the spec, in reverse.

Yes, but what you mean by "compatible with"?

This is where I'm lost, SemVer describes exactly the rules to answer that.

I've played around with these extended matching parts in PR #367. It may or may not be integrated into the main branch. If you want to give it a try, please comment on the respective PR.

I'm looking for trivial matching according to semver rules

if major is different, it's incompatible
if major is equal but minor is lower, it's incompatible
if Prerelease is present and different, it's incompatible
otherwise it's compatible

Would something like this be useful?
def iscompatible(v1: Version, v2: Version):
     if v1.major != v2.major:
         return False
     if v1.minor < v2.minor:
         return False
     if v1.prerelease != v2.prerelease:
         return False
     return True

>>> v1 = Version(1, 2, 3)
>>> v2 = Version(1, 1, 4)
>>> v3 = Version(1, 3, 5)

>>> iscompatible(v1, v2)
True
>>> iscompatible(v1, v3)
False

The code is derived from your description. Certainly we could optimize it.

@tomschr
Yes, that's roughly what I was looking for.
It should follow the specification rather than my brief summary, but I think the only thing I've missed is that versions starting with 0 are incompatible with each other unless identical.
Also, I'd rather have a method instead of a function, so there is a clear this and that, since compatibility is directed, i.e.

caller 1.1 is compatible with callee 1.2, but
caller 1.2 is not compatible with callee 1.1.

I'd like to put a version in my model classes and yaml files, so the program can verify if it can handle the files, similar to Kubernetes.
Cheers

Not an native English speaker, but how about naming it compatible_with? Wouldn't it make the direction clear?

is X compatible with Y?

if X.compatible_with(Y):

The actual factor that is directional is the dependency relation. The word with is not directional (meaning there is no difference between x is compatible with y and y is compatible with x if you know nothing else about x and y). Using the phrasing compatible_with does sound nice and natural though, so it still could be an excellent candidate for the method (or function) name. But the args would still have to contain the semantics of the dependency direction to make sense.
def compatible_with(self, callee: Version) -> bool:  # Quite natural
    ...

There is the convention of prefixing names for boolean values with is, maybe this would be nice (if it isn't too verbose):
def is_compatible_with(self, callee: Version) -> bool:
    ...

For naming, I've been using variations on breaking, like
def is_breaking(v_from, v_to):
   ...

It implies more direction than "compatible with"

Both is_compatible and is_breaking are possible. I have three questions:

Should we make is_compatible an alias of is_breaking? Or would it be confusing? Probably there should be only one way to do it (according to the Zen of Python).
We have a class method isvalid without an underscore. As the naming should be consistent, should we:

Rename isvalid -> is_valid?
As we are approaching a major release, it would be possible to introduce a breaking change. We could mitigate this break by creating an alias and deprecate the isvalid method.
Rename is_compatible -> iscompatible (likewise is_breaking)?

Should we make is_compatible a class method?

Thanks!

Both is_compatible and is_breaking are possible. I have three questions:
1. Should we make `is_compatible` an alias of `is_breaking`? Or would it be confusing?

An alias would be very confusing, since is 'breaking' is opposite of 'compatible'. ;)

2. We have a class method `isvalid` _without_ an underscore. As the naming should be consistent, should we:

   1. Rename `isvalid` -> `is_valid`?
      As we are approaching a major release, it would be possible to introduce a breaking change. We could mitigate this break by creating an alias and deprecate the `isvalid` method.
   2. Rename `is_compatible` -> `iscompatible` (likewise `is_breaking`)?

I'm not a user yet, so I don't have a stake here.
According to SemVer, there is nothing wrong with breaking changes in pre-release.

3. Should the method `is_compatible` only accept Version? Or should it allow other types like strings, tuples, dicts etc.?

Good question.
Functions should do one thing, but it would be a convenient shortcut if it did allow other types. Though that would mean it does two things - conversion/validation and comparison.
What do other functions accept?

From what I understand, the current a.is_compatible(b) shows if you could replace package b with package a without any problems right?
I don't think the is_breaking would reflect that behaviour at all?
Just so I understand

1.2.0 is compatible with 1.1.1
2.0.0 is not compatible with 1.1.1
1.1.1 is compatible with 1.1.1
1.1.0 is not compatible with 1.1.1
Riiiight?

[...]
An alias would be very confusing, since is 'breaking' is opposite of 'compatible'. ;)

Possibly yes. :slightly_smiling_face: My brain didn't catch that in the early morning. :smile:

[...]
According to SemVer, there is nothing wrong with breaking changes in pre-release.

Yeah, I'm inclined to make this breaking change in the upcoming semver 3 version.

[...]
Functions should do one thing, but it would be a convenient shortcut if it did allow other types. Though that would mean it does two things - conversion/validation and comparison.

That's a good point. It seems, that in most cases, people use string types a lot. Maybe let's wait what others have to say here. Maybe they come up with some good arguments pro or against it.

What do other functions accept?

Depends on the function. :wink:  For example, the Version.compare function allows several types. In that example, it is useful as developers might have different types to compare against it.

It seems to me, the is_compatible is basically an extended comparison like the tilde comparison:
~1.2.3 := >=1.2.3 and <2.0.0

Correct?

@tomschr

It seems to me, the is_compatible is basically an extended comparison like the tilde comparison:

Not exactly, as @Lexicality rightfully noted, the patch part is ignored.
The difference is that SemVer is more about the public API and less about implementation. The API must not change at all between different patch releases so caller v1.2.3 is fully compatible with API of callee v1.2.0 .
Patch actually describes a change of callee's behaviour (a bug fix).
In my use case (files with version), it's perfectly fine to ignore the patch version.
The generator program ('caller' in our vocabulary) doesn't expect any behaviour from the consuming program ('callee'), only that in will accept the file as long as it validates against the contract (API@version).
Of course there might be cases when patch should be checked. If so, how about adding a parameter check_patch=False"

From what I understand, the current a.is_compatible(b) shows if you could replace package b with package a without any problems right?

I'm not sure thinking of packages is the right approach. SemVer is more about API compatibility.
Dependency X 1.1.0 is API-compatible with X 1.0.0 because caller using 1.0.0 API will work with X 1.1.0 on the API level.
But consider this:
Caller may depend on dependency X 1.1.1 because 1.1.0 has a bug that's fixed in 1.1.1
Alternatively, caller may depend on X 1.1.0's bug and break with 1.1.1
Those cases are beyond SemVer specification.
I think we're trying to handle two separate use cases:

I want to use version X, but not Y or Z (>=1.2.3 <2.0.0) - useful in packaging time dependency resolution.
Can I use version X, if I'm expecting version Y - useful at runtime, like for remote APIs, files or plug-ins.

The extended comparison would handle the former case, is_compatible would handle the latter.

From what I understand, the current a.is_compatible(b) shows if you could replace package b with package a without any problems right?
I don't think the is_breaking would reflect that behaviour at all?
Just so I understand

1.2.0 is compatible with 1.1.1
2.0.0 is not compatible with 1.1.1
1.1.1 is compatible with 1.1.1
1.1.0 is not compatible with 1.1.1

Right?

@Lexicality you are very right indeed. The direction of the relation I was talking about was not that of the dependency, but the bump (I totally misunderstood that). Therefore this would make more sense:
def is_compatible_with(self, new: Version) -> bool:
    ...

Or
def is_compatible(old: Version, new: Version):
    ...

So please disregard anything I said about dependency relationships, and replace it with old/new relationship instead 😅

Thank you for all your input. It gives me a much better picture.
However, still we need to solve the following questions:

Should is_compatible() allow other types than Version?
Should is_compatible() also check for patches, if we have an optional argument set check_patches=True as suggested by Raphael in https://github.com/python-semver/python-semver/issues/284#issuecomment-1316866067?


Integrate Update Admin profile with backend

Description

Go to 'http://localhost:3000/dashboard'
Click settings
Click Myprofile and click edit icon
The data not updated while submitting the form.

Hey @Kajol-Kumari
Please assign me the issue

It was working last time i check, not sure what changed

@BHS-Harish  even right now i updated the image for one of the admins profile, can you clarify the bug here?

Hello @Kajol-Kumari
Sorry,
I checked in the local so that i have raised the issue.
It's working fine in production. :)


Path problem when running behind a reverse proxy

Hi,
I'm trying to run the container behind a reverse proxy, the url is like http://myserver/compose-ui/ and the proxy is configured to strip the compose-ui/ part before passing the request.
Everything is working fine, except for one link: + Create new project
That link has a leading "/", so the resulting url is http://myserver/#/create instead of http://myserver/compose-ui/#/create.
I didn't play much with the ui yet, i'll update the issue if i find other absolute paths.

Hi,
I think the link here should be relative
  ng-href="#/create"

@WTFKr0 thanks, it should be fixed now

@riccardopedrielli Hi could you please share the reverse proxy configuration? thanks

Hi, i confirm the fix works.
Here are the configurations:
haproxy
global
    log <IP_ADDRESS> local0 debug

defaults
    mode    http
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    option  forwardfor
    option  redispatch

frontend testserver

    bind *:80

    acl compose-ui path_beg /compose-ui/
    use_backend compose-ui if compose-ui

    #other acls omitted

backend compose-ui
    reqrep  ^([^\ :]*)\ /compose-ui/(.*)  \1\ /\2
    server compose-ui compose-ui:5000 check

#other backends omitted

nginx
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    access_log          /var/log/nginx/access.log  main;
    sendfile            on;
    keepalive_timeout   65;

    server {
        listen              80;
        server_name         localhost;

        proxy_set_header    Host $host;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Host $server_name;
        proxy_set_header    Connection "";
        proxy_http_version  1.1;

        location /compose-ui/ {
            proxy_pass              http://compose-ui:5000/;
            auth_basic              "Docker Compose UI";
            auth_basic_user_file    /etc/nginx/.htpasswd;
        }

        #other locations omitted...
    }
}

Thank you!
I did some quick test withfrancescou/docker-compose-ui:latest and it seems to work fine.
In the next days I will add some documentation based on your configuration to describe how to use a reverse proxy with docker-compose-ui

For information I use traefik in front of all my webapp
docker-compose-ui too
Many reverse proxy solution are available, don't know if doc is needed in this project

@WTFKr0 yes you're right but I think it could be useful to have at least some docs on how to require basic authentication to access compose-ui

OK I see
For that I used the h3nrik/nginx-ldap image in front of traefik  :D
Which assure a ldap basic http auth


Port set in env file

Describe the feature you'd like
The port the application listens to can be set in the env-file.
Describe the benefits this would bring to existing BookStack users
To use Bockstack behind a reverse proxy (like nginx) it would be great if the application could be configured in such a way that the port it listens to is set in the env-file.
My current problem is that with podman port 80 is restricted as mapped port in a pod and I want nginx to use that port.
Would that be feasible?
Can the goal of this request already be achieved via other means?
Not afaik
Have you searched for an existing open/closed issue?

[X] I have searched for existing issues and none cover my fundemental request

How long have you been using BookStack?
0 to 6 months
Additional context
No response

Hi @Stoiker,
None of the release content within this core project/repo listens to a port.
The port is usually handled by the webserver in use.
If you're using one of the community containers, usually they expose 80 by default but you can usually map a different host port to port 80 of the container, when running/starting the container.


Build for iOS on remote machine with Bitrise (connected with downloading repo)

Plugin Version or Commit ID
v0.10.1
Unity Version
2021.3.7f1
Your Host OS
Xcode 13.4.x on macOS 12.4 (Monterey)
Target Platform
iOS
[Windows Only] Visual Studio C++ and Windows SDK Version
No response
[Linux Only] GCC/G++ and GLIBC Version
No response
[Android Only] Android Build Tools and NDK Version
No response
[iOS Only] XCode Version
Xcode 13.4.x on macOS 12.4 (Monterey)
Command Sequences
/Applications/Unity/Unity.app/Contents/MacOS/Unity -nographics -quit -batchmode -logFile -projectPath "$BITRISE_SOURCE_DIR" -executeMethod BitriseUnity.Build -buildOutput "$BITRISE_SOURCE_DIR/xcodebuild" -buildPlatform ios
Log
apps_62e4773208838feb_e7d5bc85-7f74-47d6-ae39-483b0c49b475-full.txt
Additional Context
Hi,
I am currently trying to build an application with Mediapipe Unity Plugin with Unity for iOS on a remote machine with Bitrise.
I get a lot of blocking errors like: 'A meta data file (.meta) exists but its asset "libName" can't be found. '
Could you please take a look in the attached log file and maybe you could tell me, how to fix this issue?
Thanks in advance for your help.

Edit: I realized that errors show locally after I clone the repo to a new project.
So I attach Editor.log - it is more straightforward than the previous one.
Editor.log

Solution: change gitignore... :)
Sorry for bothering you. :)


Cant build on Windows

 Generating Code...   tdutils.vcxproj -> C:\TDLib\td\build\tdutils\Release\tdutils.lib   Building Custom Rule C:/TDLib/td/tdactor/CMakeLists.txt   ConcurrentScheduler.cpp   Scheduler.cpp   MultiPromise.cpp C:\TDLib\td\tdactor\td/actor/PromiseFuture.h(317): error C2672: 'promise_interface_ptr': no matching overloaded functio n found [C:\TDLib\td\build\tdactor\tdactor.vcxproj]   C:\TDLib\td\tdactor\td/actor/PromiseFuture.h(716): note: see reference to function template instantiation 'td::Promis   e<td::Unit>::Promise<td::unique_ptr<td::detail::EventPromise>>(F &&)' being compiled           with           [               F=td::unique_ptr<td::detail::EventPromise>           ]   C:\TDLib\td\tdactor\td/actor/PromiseFuture.h(716): note: see reference to function template instantiation 'td::Promis   e<td::Unit>::Promise<td::unique_ptr<td::detail::EventPromise>>(F &&)' being compiled           with           [               F=td::unique_ptr<td::detail::EventPromise>           ] C:\TDLib\td\tdactor\td/actor/PromiseFuture.h(317): error C2783: 'auto td::promise_interface_ptr(F &&)': could not deduc e template argument for 'from_promise_interface' [C:\TDLib\td\build\tdactor\tdactor.vcxproj]   C:\TDLib\td\tdactor\td/actor/PromiseFuture.h(241): note: see declaration of 'td::promise_interface_ptr'

Could you tell exact compiler version?
Could you change compiler output to verbose and show full error message?

Could you tell exact compiler version?
Could you change compiler output to verbose and show full error message?

Sure, here's the full log, including the instructions found on the TDLib build instructions generator:
https://pastebin.com/gYWFRpbv
DCMAKE_VERBOSE_MAKEFILE=ON
-- Building for: Visual Studio 14 2015
-- Selecting Windows SDK version  to target Windows 10.0.19042.
-- The CXX compiler identification is MSVC 19.0.24210.0
-- The C compiler identification is MSVC 19.0.24210.0
The build options are:

JavaScript
Windows (Node.js)
PowerShell
64-bit

Thanks.
This looks like a VS 2015 bug, which needs to be workarounded.
You have two options:

Use TDLib 1.7.0 by invoking git checkout v1.7.0, which is tested to be succesfully built by Visual Studio 2015.3.
Update Visual Studio to 2017+.

Use TDLib 1.7.0 by invoking git checkout v1.7.0, which is tested to be succesfully built by Visual Studio 2015.3.

Using TDLib 1.7.0 worked for me. Thanks!

This was fixed in master.


Carthage Support

This is a pull request to support the Carthage dependency manager for Objective-C and Swift development. Unfortunately, doing this is causing a few issues:

The buck build is now broken: I have the impression we can't #import <yoga/Yoga.h> from a public header of the framework because the importing module does not know the yoga module. This was the case in UIView+YogaKit.h. Fixing this requires adding the C headers as standard headers of the framework and #import <YogaKit/Yoga.h> instead. Unfortunately, this has broken the buck build. I don't know enough about buck to fix this. Any ideas?

The tests fail in Xcode: Weirdly enough, two tests which run fine when run with buck test //YogaKit:YogaKitTests --config cxx.default_platform=iphonesimulator-x86_64 --config cxx.cflags=-DTRAVIS_CI fail when run inside an Xcode test target. Those are testSizeThatFitsSmoke and
testFrameAndOriginPlacement. There's a test target in the Xcode projet of this Pull Request to play around with. Any ideas?

Yeah, we were running into a similar problem internally. I'm going to take another look as soon as I have time, thanks for the PR!

@guidomb Yep, I saw I had forgotten that. But haven't fixed this yet because of the other roadblocks. And by the time they are cleared, I think I might as well do a PR to support Cocoapods at the same time. But that requires getting a good idea how to handle semver for the project.

@hartbit @dshahidehpour  Yeah, what do you guys think is the best approach moving forward? I am happy to help, I can add CocoaPods support but I think it would be better for now to wait, as @hartbit said, for a semver policy and ideally for #289 to be merged. Regarding buck I don't have any experience with it.

What is the status of this? 1. should be able to be fixed using header maps in xcode i think?

@hartbit Yes it worked. I must have done something wrong. I also added support for CocoaPods in #309 but for some reason I couldn't pick your fork as the PR's target.


Added expansion panels.

Added ExpansionPanel and ExpansionPanelList. The implementation
is based on the Material design spec, without enforcing every
facet of it, leaving the developer using this the liberty to
enforced it lower down the widget tree. This decision was made
based on the argument that implementing more of the spec would
reduce flexibility to a point where some design would not be
implementable with this widget anymore.

This is pretty slick. The fact that the ExpansionPanelList is internally as simple as it is shows off the MaterialSlice and MaterialGap widgets very nicely.

@dragostis What's the status of this PR?

@Hixie Fixed the issues apart from the last one about the widget being private. Waiting for anything else to fix or LGTM.


Adnane signup

Description

Created the user dashboard. Currently have the preferences on the dashboard ensuring it is loaded properly and working properly.
Tests
Tests cover the interaction of the buttons based of the data from mocked db objects.
UI Changes

Issues
#47 #66

Additional Notes
Add any other information about the PR here.
Need to work putting the preferences on pop-up window on first sign up. Otherwise they will be located on the settings page.

Need help, some of the tests are not passing. Can someone assist ?

Need help, some of the tests are not passing. Can someone assist ?

I'll look into this


Updated FAQ to clarify git server usage and fixed requirements

@bridgetegan Interested to know what you think of using "tags" (GSWP, PF, PP) in the FAQ. It's one way of associating different answers to the courses where they apply. Another option would be to duplicate the content so there are two FAQ sections, one for GSWP and one for legacy classes. The GSWP FAQ would be shorter.

This should be the new layout with the tags added. I based this off of the latest code after merging his PR. I can also break it into two FAQ sections - one for GSWP and leave the current one under PF/PP.


Hangs when generating certificates due to AMD Ryzen RDRAND bugs

AMD cpu issue also present here: https://github.com/input-output-hk/daedalus/issues/1242
My initial issue: https://forum.cardano.org/t/latest-daedulus-seems-to-be-stuck-at-startup-with-generating-the-certificates/38600
This occurs for both 2.1 and 2.2 when I tried.
I'm on a AMD Ryzen 3600.
Output from strace:
me/chris/.local/share/Daedalus/mainnet"),("updateArchive",String ""),("updateWindowsRunner",String ""),("tlsPath",String "/home/chris/.local/share/Daedalus/mainnet/tls")])
[launcher:Notice:9] [2020-08-16 15:52:48.09 UTC] Locking file so that multiple applications won't run at same time
[launcher:Info:9] [2020-08-16 15:52:48.10 UTC] Generating the certificates!
) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
openat(AT_FDCWD, "/tmp/nixzSzfCM/escape-hatch", O_RDONLY) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
openat(AT_FDCWD, "/tmp/nixzSzfCM/escape-hatch", O_RDONLY) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
openat(AT_FDCWD, "/tmp/nixzSzfCM/escape-hatch", O_RDONLY) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
openat(AT_FDCWD, "/tmp/nixzSzfCM/escape-hatch", O_RDONLY) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
openat(AT_FDCWD, "/tmp/nixzSzfCM/escape-hatch", O_RDONLY) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---

Seems to be stuck in an endless loop (output from strace -f ...):
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5284] <... read resumed> "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4,  <unfinished ...>
[pid  5269] openat(AT_FDCWD, "/dev/random", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x8), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5269] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x9), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5284] <... read resumed> "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4,  <unfinished ...>
[pid  5269] openat(AT_FDCWD, "/dev/random", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x8), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5269] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x9), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5284] <... read resumed> "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4,  <unfinished ...>
[pid  5269] openat(AT_FDCWD, "/dev/random", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x8), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5269] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x9), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5284] <... read resumed> "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4,  <unfinished ...>
[pid  5269] openat(AT_FDCWD, "/dev/random", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x8), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5269] openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 34
[pid  5269] fstat(34, {st_mode=S_IFCHR|0666, st_rdev=makedev(0x1, 0x9), ...}) = 0
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] ioctl(34, TCGETS, 0x7ffe382b8720) = -1 EINVAL (Invalid argument)
[pid  5269] close(34)                   = 0
[pid  5284] <... read resumed> "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, "\1\0\0\0\0\0\0\0", 8) = 8
[pid  5284] read(4, ^C <unfinished ...>

I have the same processor (AMD Ryzen 3600) and it also got stuck here. I was wondering why it took so long.
This failure would be clearer if some sort of progress output or verbose output was enabled for this step.

This is an actual bug in AMD cpus which requires a microcode update in order to be fixed.
See https://community.amd.com/t5/processors/ryzen-3000-random-bug/td-p/213044 https://github.com/systemd/systemd/issues/11810
Possibly working around this issue might be a solution.

This is an actual bug in AMD cpus which requires a microcode update in order to be fixed.
See https://community.amd.com/t5/processors/ryzen-3000-random-bug/td-p/213044 https://github.com/systemd/systemd/issues/11810
Possibly working around this issue might be a solution.

Unfortunately, there is nothing we can do on Daedalus side.
Please follow up @chrissound's instructions.


[FLOC-3100] Memoize wire encode when sending updates to agents

Instead of serializing config and state to JSON once for each destination, we only do it once.
The actual end-to-end result of this (lower CPU usage, i.e. the fact that we have caching enabled in _send_state_to_connections) is not tested, it's not clear to me how one would given current abstractions. Ideas welcome.

The object is pretty much always immutable.

That "pretty much" is slightly worrying. One thought, is that SerializableArgument should check what kind of objects it can take, and make sure they are immutable? Probably over thinking things, though.

This looks good, just a couple of cosmetic changes below.. If the benchmarks look good and buildbot is green, go ahead and merge.

Reviewed 2 of 2 files at r1.
Review status: all files reviewed at latest revision, 2 unresolved discussions, some commit checks pending.

flocker/control/_protocol.py, line 95 [r1] (raw file):
:var:

flocker/control/_protocol.py, line 347 [r1] (raw file):
I think maybe we want a comment here about how everything sent via SerializableArgument needs to be immutable here.

Comments from the review on Reviewable.io

Addressed, can be merged as soon as buildbot is green.

Review status: 1 of 2 files reviewed at latest revision, 2 unresolved discussions, some commit checks failed.

flocker/control/_protocol.py, line 95 [r1] (raw file):
I was actually suggesting that _caching_encoder be documented.

Comments from the review on Reviewable.io


A proposal for the implementation of aggregation options in Jongo.

I decided to use the existing AggregationOptions rather than duplicating its api so that the solution would
automatically accept any new options the mongo team introduces.
The testing coverage is light because I couldn't think of an effective way to check that
the options were being applied without relying heavily on the Mongo implementation itself.
After writing this I noticed this there is a related pull request @see  issue #203

We are going to release 1.2 in few days, in the meanwhile you can use an early version of 1.2
This version must be considered as a SNAPSHOT of future 1.2 release
<dependencies>
  <dependency>
    <groupId>org.jongo</groupId>
    <artifactId>jongo</artifactId>
    <version>1.2-early-20150210-0143</version>
  </dependency>
</dependencies>
...
<repositories>
    <repository>
       <id>cloudbees-jongo-early-release</id>
        <url>http://repository-jongo.forge.cloudbees.com/release</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>


Update Center - Debian support

Hi team,
please can you commented on OS Debian, if is planned in future to be supported ?

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

ID: 7a6eada9-2fd6-c8a4-4d7c-c9b6647642c8
Version Independent ID: 9a18fe92-8ab3-90c7-5495-98ae3299a451
Content: Update management center (preview) support matrix
Content Source: articles/update-center/support-matrix.md
Service: update-management-center
GitHub Login: @SnehaSudhirG
Microsoft Alias: sudhirsneha

@jjindrich
Thanks for your feedback! We will investigate and update as appropriate.

Do we have any updates on Debian ?

@jjindrich, the team is working on support plan for distros. It will take a while to confirm the support for Debian and we do not have any timeline as of now. I will share additional details as soon as possible.

@jjindrich, I wanted to update that it might take a while for the support plan for new distros to be updated. Once we have this finalized, the supported OS list here would be updated with the same.
I'm closing this GH issue, as there is nothing pending on the documentation side based on the current state of support matrix.


Code style in a sample doesn't match the common C# style

The article uses a bizarre syntax for attributes:
[
    Theory,
    InlineData(-1), InlineData(0), InlineData(1)
]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value) =>
    Assert.False(_primeService.IsPrime(value), $"{value} should not be prime");

While the commonly accepted style would be something like this:
[Theory]
[InlineData(-1)]
[InlineData(0)]
[InlineData(1)]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value) =>
    Assert.False(_primeService.IsPrime(value), $"{value} should not be prime");

of if you really want to combine the two attributes:
[Theory, InlineData(-1), InlineData(0), InlineData(1)]
public void IsPrime_ValuesLessThan2_ReturnFalse(int value) =>
    Assert.False(_primeService.IsPrime(value), $"{value} should not be prime");

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

ID: 588a6d72-f70f-15f8-7505-5db491c8a8c6
Version Independent ID: ab6ce421-f5e5-94f1-e707-32763b3a6a24
Content: Use code coverage for unit testing - .NET
Content Source: docs/core/testing/unit-testing-code-coverage.md
Product: dotnet-fundamentals
GitHub Login: @IEvangelist
Microsoft Alias: dapine

Associated WorkItem - 57755

It's not bizarre, but perhaps it's something that you're unfamiliar with. There aren't any style guidelines on the preference for attribute usage that I'm aware of. This is a style preference of mine, as it avoids redundant opening [ and closing ], and it makes it easier to read. This is the way I prefer to read these declarations. It's a theory, then the next line shows the three inline data args. When it's all on the same line it's harder to read in my opinion. And when they're all on their own line, it's too verbose. Again, this is preference. I'm going to close this issue as it is too subjective.

I'm not aware of any style guides either, but I do think it's quite unusual to have the brackets on their own lines. What about changing the code to the following?
[Theory]
[InlineData(-1), InlineData(0), InlineData(1)]

It maintains the separation between Theory and InlineData and I think it looks more succinct (it has more [], but fewer lines, which makes it somewhat subjective).

I guess my concern is it really worth the effort. Is there anything wrong with the way it is now?

@IEvangelist hi David,

It's not bizarre, but perhaps it's something that you're unfamiliar with.

As a C#/.NET engineer for more than 20 years I assure you I've seen many different styles of writing in C#.

Again, this is preference. I'm going to close this issue as it is too subjective.

I agree this is subjective. But here's lies the problem:

This is a style preference of mine.

Microsoft documentation is not a place for personal preferences. I hope you'll agee that it must use consistent and unified style, as well as easy to read and commonly accepted.
Here's a few excerpts from article Attributes (C#):
[Conditional("DEBUG"), Conditional("TEST1")]
void TraceMethod()
{
    // ...
}

[DllImport("user32.dll")]
[DllImport("user32.dll", SetLastError=false, ExactSpelling=false)]
[DllImport("user32.dll", ExactSpelling=false, SetLastError=false)]

What makes me think that the proposal by @svick makes total sense and would fit the rest of the documentation/codebase.
[Theory]
[InlineData(-1), InlineData(0), InlineData(1)]

Otherwise, please provide few examples of other articles that use the style of your preference.

I do like @svick suggestion better than the other suggestions. Since there isn't any guidance on this, consistency and readability are certainly the priority. The difference between what @svick is suggesting and where it started, is negligible. If you'd like to make the changes, please tag this issue number and me in the comments of your PR. Thank you.

Thank you, @IEvangelist, appreciate!


Remove unnecessary lifetimes

Linter with new nightly toolchain finds another lifetime that can be elided, do so.

Found by #3467

Successfully ran local tests.

lol, @apoelstra writes that because he has an enormous machine that runs a plethora of tests. (And I assume he has a script that pushes the actual message to GitHub.) And he wants the line to appear in the commit history, which it does if its on the same line as the ACK (I think, you'd have to check the merge script to confirm that).

Thanks for the review though @storopoli, review effort is super valuable, appreciate it.

Has two acks, not going to rebase just to pick up WASM fix. All other CI jobs are green.


Change time zone

Summary
User should be able to select their desired time zone, and the dates should display accordingly.

I might take a shortcut here, and force Europe/Paris for everyone. At least for now :)


Why Using Dart, instead of TypeScript or Plain JavaScript ES6 ?

Why this framework using Dart ? not using more stable and robust like TypeScript or ES6 Javascript ?
Look at Angular and other TypeScript based framework, it stable and easy to understand for large team and beginner.
So any plan to leave Dart and using TypeScript language ?

Apparently flutter was originally written in Javascript, but was rewritten in Dart. I cant find any articles relating to specifically why that was done, but I don't expect it was done without good reason.

@Rockvole, I found linkto help get answer to your query.

Why not use angular 6 with typescript ?

@sethladd
seems to be a dup of #11865

I was convinced by this post https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf

i'm not!

@zoechi yes it can be a duplicated, but the flutter team has a strange way to resolve the conversation, when someone say something about implementing Typescript and Dart or template view they close the thread like #11865 as resolved. very bad!

@gimox this discussion is absolutely pointless.
The linked docs explain why the decision was made.
I don't want even argue about whether TypeScript is a good language or not, but there is no way to compile it to native code which is one of the main benefits of Flutter.
If you prefer Angular, why don't you just use Ionic.
What would be the point of making Flutter another Ionic?
Flutter is being worked on since about 2013 and is about to be released and you argue for just dropping all that and rebuild it in another language.
You didn't even provide an argument why TS would be a better fit, just that you prefer it.
Also running in the browser was even a non-goal, so Angular is not an argument as well.

I don't want another ionic, ionic is perfect as is for simple project.
I'm looking at Nativescript! It's something like flutter but it's not a Google project.
Google is working hard on Angular for a mobile framework and Golang for data and api language with high performance, and Kotlin is officially endorsed as Android language.
So why use an other language as Dart to do the same think as this language done?
The linked document say something like... i need this, dart do this, etc etc... ok!  Kotlin or angular/typescript can do the same things, and it do it from many time ago, it has a large user base and it's ready and tested...... by Google (and  Microsoft for angular/typescript).
When Google release Angular, it endorsed Dart as main language, result: no one use it!!!! nobody use it with dart now, they changed approach and Typescrit (aot) became the default. So angular now is one of the most used frontend/mobile framework.
So Flutter is very exiting and has something amazing like UI it can be the real winner, and i think that Dart can damage the project.
I'm a developer, do you think that my team can write a:

nodejs(typescript)  / golang backend API
a web frontend in Angular (typescript)
a mobile app in Dart and something add native code in swift and kotlin or java (because the app in a real word need some native code, you know)

OR
write a:

nodejs backend,
a frontend in typescript/angular for web and with some minimal refactoring create a mobile app with Nativescript or ionic

We need solutions not technologies, do not introduce new tech to do what we have already!

We need Flutter!!!!!!

I think decision has been made and we can't change anything by firing issues like this. If no one adopt it, may be they will reconsider.

I think that everything can change many people have this opinion.

@gimox you seem to have some prejudices that you just refuse to give up

When Google released Angular, it endorsed Dart as main language, result: no one use it!!!! nobody use it with dart now, they changed approach so Typescript (aot) became the default. So angular now is one of the most used frontend/mobile framework.

When Google started Angular2 they wanted to target both JS and Dart developers.
It turned out to be too painful to develop for to languages from a single language,
and 2 years both are developed individually.
Angular is for the browser, Flutter is for native apps.
There is a big difference that you seem to generously overlook.
And as mentioned several times. This discussion is so redundant that there is hardly a comparison.
Flutter works great and there is a ton of great feedback about Flutter itself and also for Dart.
There close to zero reasons to even think about alternatives.
There will always be people who want something different, but there is no reason to drop years of work and an already successful project just because some people think TypeScript (which is completely inappropriate for Flutter) should be used instead.
I can ensure you that you never beat a horse more dead than this one ;-)
With Flutter and the ability to reuse code between native mobile apps and mobile/desktop browser applications AngularDart is gaining popularity. Still far from TypeScript, but things are changing.

@zoechi i hope nobody at angular team read this thread...
Angular has SSR (server side rendering), take a look at Nativescript and Ionic, it change Render according with custom rules, angular is not angularJS. So angular is not only for browser, the big new motto of angular 2 is: for mobile not for browser, please take a look at angular.io website.
Yes flutter work great and many people like it. But we are debating about  if it can be better?
Angular team choices is to write a framework that use Js, typescript or dart, as you mentioned, this is fantastic, why flutter can't  do it using typescript or kotlin (this is not a angular sponsorship)?
I have used flutter, to try a complex app, and i think that view and code organization is too confuse for complex app. But this my opinion.
And about AngularDart... please tell me one name of people that use it!! tell me a company that use it!!
(except the team that build it)
The initial porting of flutter desktop is fantastic, but now it can not be usable. So for now electron is my choice
We are writing code now, for future i don't know if i will use angular, Go, nodejs, flutter, electtron, nativescript, c++ or other, certainly i will use the most performace, simple and supported and stable framework and language, i hope this can be Flutter.

Thanks for all the comments!
We published https://hackernoon.com/why-flutter-uses-dart-dd635a054ebf to help answer the questions. Because we think the article does a good job at explaining our thoughts, we are going to close the comments on this issue.

One thing I would add is that we would be very happy to see people develop similar frameworks in other languages. For example, someone could take TypeScript or Kotlin and develop an equivalent framework using those languages. You could even follow Flutter very closely, with the same class hierarchy, names, etc, copying the documentation, and so forth. If such projects were developed, we would be interested in being involved at a high level in coordinating designs and sharing experiences.
If anyone is interested in doing this and would like to talk about it, please don't hesitate to reach out to me by e-mail<EMAIL_ADDRESS>


[Do not merge, After launch] Add an edit in Github link to each root index page.

You can preview this change here:
Built with commit bbd9be6eaf340155904bef65c880a7061d0d8b0f
https://deploy-preview-343--govuk-design-system-preview.netlify.com

I'm not sure 'Edit this page' has the right implication - you can't edit the live page. You can suggest a change, but I'm also not sure most people will understand how to? You'll need to open a Pull Request

Closing this, will propose this as a 'firebreak' task.


? WsListenerTest.html: Test3 connection was not cleanly closed.

Test3 (large messages). In browsers other than FireFox, closeEvent.wasClean = false. Sometimes with status code ABNORMAL_CLOSURE (1006). Regardless of the send message or stream method.

The issue is missing in Chromium 88.0.4324.146. Bug fixed?


Default.qubit can give exceptions with shots > 1 due to poorly normalized probability

See this user report on pennylane discussion forum.
It appears that the default.qubit plugin code which performs approximate expectation estimation with finite shots can lead to probabilities which are invalid (greater than one). This leads to an exception when numpy.random.binomial is called. At the moment, it is unclear what is causing this, as the probability is generated via steps that should lead to a valid probability.

I'll have a look at how the sampling is implemented, maybe I'll spot something right away.
Also note that I changed the sampling behaviour in #256, maybe this will already solve this.

It seems from the user's feedback that this bug may be coming from something further upstream, but only manifests during this step because numpy checks for normalized probabilities. I don't know if merging in the changes to sampling will solve or just mask the original source of the issue :thinking:

Maybe it is related to the following fact in AmplitudeEncoding:
The absolute square of all elements in ``features`` has to add up to one.
I can imagine that if that was not the case we could get problems downstream. If this is correct, then we should implement some sanity check in this or better the underlying routine.

Good find. I agree on all suggestions

I am actually somewhat dissatisfied with the function AmplitudeEncoding. Right now it's 98% percent superfluous because it has no advantage about using QubitStateVector directly (only that it has a speaking name).
We could probably beef up this function a bit -- by allowing a feature vector that has less than 2^n elements (we would then pad them with zeros) and allowing that the squares don't sum to 1 (we would then normalize the vector). What are your thoughts?

Rather than discuss AmplitudeEncoding here, best to make a new issue regarding it with a descriptive title.

Okay, coming back to the error, maybe we should also have a sanity check in default.qubit that checks if the internal state is valid?

Maybe it is related to the following fact in AmplitudeEncoding:
The absolute square of all elements infeatureshas to add up to one.
I can imagine that if that was not the case we could get problems downstream. If this is correct, then we should implement some sanity check in QubitStateVector which is directly underlying AmplitudeEncoding. Maybe also in both to have a more informative error message.

You are right. The test that checks if features used by  AmplitudeEncoding is normalised was missing. I added one now in the PR #275 . I dont know if this fixes the error our user has, however.


Fix math for higher seed values and negative incremental values. Issue #2017

Fix math for higher seed values and negative incremental values. Fixes issue #2017

Oh, excellent! We've needed this one. Thank you 💃
@wsmelton or @jpomfret would you have time to create a very simple Test for Test-DbaIdentityUsage in another PR?

I can take a look at creating a test today for it

Thanks so much! I think a tinyint will be nice for showing percentages above 1 😂
My lab is filllled with 0-1%

PR for Pester Tests
https://github.com/sqlcollaborative/dbatools/pull/2108

Thanks, ya'll! let's see how this goes

Will come back to celebrate once the test passes!


A file:is-tty command would be useful

The equivalent of the POSIX test -t $fd command would be useful. It should default to the Elvish equivalent of os.Stdout to allow for LHS of a pipe and redirections. It should optionally accept an explicit *os.File or vals.File argument with any other type (e.g., a pathname string, including something like /dev/tty) being an error.
Related #1262

For anyone inclined to implement this note that Elvish already depends on github.com/mattn/go-isatty which provides an OS agnostic API for determining whether an open file refers to a tty.

FYI, I started work on implementing this. Which quickly revealed an obvious, in hindsight, challenge to using such a command. Consider that the POSIX test -d $fd returns a non-zero exit status which Elvish would translate to an exception. Well, the same is going to be true for a builtin file:is-tty that returns an error because the output stream doesn't support a value channel; regardless of whether the byte channel is open on a tty. Which means you always have to wrap this command in a try block. Something I didn't realize when I opened this issue but should have recognized as something that would complicate using this type of command. Given the design of Elvish I don't see any way to avoid having to always use this command in a try block but I would be thrilled to learn I was wrong.


Improvements on maintainability.

This pull request aims following,

Adding .lock file
Dependabot package updates.
Package updates.
Github actions CI testing.
Shorter and readable filenames.
Much more readable code.
Removal of editorconfig for prettier project wide linting.

Some may consider this pr to be very opinionated if so please feel free to close this pr.

Hi @Himadu2000
Thanks for the PR.
There are a couple of things I would like to address.
This is a very big PR with a lot of mixed concerns. I prefer to merge PR which tackle a single concern (or at least not that much concerns).
Maintenance PR are of course welcome and REALLY appreciated whoever I am not looking for changes which are subjective to coding style preference like "Shorter and readable filenames." & "Much more readable code."
Adding .lock file
We already do have a yarn.lock and a package-lock.json files, is there something I am missing?
Removal of editorconfig for prettier project wide linting
I would like to know more about why you did this change?
Dependabot configuration
At the moment, I am not interested in having a ton of PR opened by dependabot for package updates.
Looking forward to collaborate with you!
Patrick

Well first of all I have to say,
neither the pull request nor your message wasn't expecting because my original expectation was giving a try to fix the pnp compatibility,
As I have experience with most of the time there's nothing to be done in open source repositories because the code is unfamiliar and have no idea what does what and what connects where.
But I just had to give it a shot cause my moneys burning because of node_modules, I always like having a project that this pr represent, but after few hours as I knew this isn't happening I just stopped my work but my mind did not let me go of the commits so I made a pr but as I mentioned in the last line this is worthless pointless pr just close it but now you put a message.
So now if you're interested in the pr then here's my answers,

Single concern - Yes the commits are out of shape I can change them to much "single concern".
yarn.lock - yarn.lock and package-lock.json both will never be kept only one and if I used package-lock.json I will never get anything done because too slow and resource intensive.
editorconfig - editorconfig is for code editor so it works while writing code and prettier is for project wide linting so in my opinion I suggest running linter in the precommit than in the editor.
dependabot - Well I only saw six packages so not many pull requests but we can enable auto merge if tests catch any problems.

And again feel free to close  this issue. But could somebody please add pnp support, I actually complained about this in a different issue which was closed so nobody would know but again waiting for your answer.


Ensure all dashboards are of equal height

Sum of all panels should vertically be the same for all dashboards shown on the screen.

@terjesyl Har ikke sjekket dette


Question: What is the difference between firstParser and secondParser

I read the documentation but I still don't get it

Hey @revington
I recently peaked under the hood of the Riot.js router, so I'm happy to take a crack at answering your question. However, there's one caveat: the info below assumes that that you're using the default parser and secondParser functions (ie. you haven't provided custom parsers via route.parser( <custom-parser>, <custom-second-parser> )).
Hope this helps!
CC: @GianlucaGuarini and @cognitom.
TL DR
parser

Splits the path string (ie. /products/1/edit) into an array of path segments (ie. [ 'products', '1', 'edit' ]).
Used in all cases if application does not inlude custom route filters.

secondParser

Only used if the application includes custom filters (ie. route( 'products/*', ( id ) => { ... } )).
If a given route matches the custom filter, then the second parser applies the corresponding RegEx and returns any match groups.
Based on the example above, the route 'products/1' would trigger the custom parser, which would extract and return '1'

The Details
parser
To provide a point of comparison, I'll start with a quick overview of the default parser function. This function is defined by the Riot.js router, and is used to split path strings into an array of path segments.
If an application DOES NOT provide any custom filters, then the default parser will be invoked on each route change, and the resulting 'path segment' array will be provided as arguments to the applications 'route change' callback. See the example below:
// Invocation below DOES NOT include a custom filter, so the default `parser` will be used on route change.
route( ( ...args ) => {
    // `args` will contain an array of path segments.
    // For example:
    // - Given the route 'products/', `args` will be equal to `[ 'products' ]`
    // - Given the route 'products/1/edit', `args` will be equal to `[ 'products', '1', 'edit' ]`
} );

secondParser
The second parser is only used if the application includes at least 1x custom filter. In this case, the second parser serves two purposes:
1. It converts 'wildcard' values to their corresponding regular expressions.
2. It applies the resulting regular expression to the new path and returns the contents of any match groups.

This behavior is useful in cases where the application must respond to a very specific route, especially if it also needs to extract a specific segment.
// Invocation below includes a custom filter, meaning that the `secondParser` will be used to parse the corresponding route.
// This filter will match:
// - `products/1`,
// - `products/2`, etc.
// But not:
// - `products`
// - `products/1/edit`
route( 'products/*', ( id ) => {
    // Since the filter only includes 1x 'wildcard', the callback function will be invoked with 1x argument.
} );

Hey @jrmykolyn thanks for such  a complete answer, definitely this should be included in the docs

Closing this issue because it's related to an old router version. Please update to the latest @riotjs/route version if you can.


Transfer of project

@xen Are you willing to transfer this project to me and I will continue maintaining it? (Both the repo and the PyPI package.)

Great that you wish to take this package. Checked your profile and seems that it is good move for users of the package.
Thank you for reaching me out.

Thank you very much @xen. I'm going tk get it updated to work with current Sanic. Can you also add me to the pypi.org to be able to push packages? My profile there is: https://pypi.org/user/brewmaster/
It is the same profile I use to publish Sanic as well.


python312Packages.py-canary: 0.5.3 -> 0.5.4

Diff: https://github.com/snjoetw/py-canary/compare/refs/tags/0.5.3...0.5.4
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 320445 run on x86_64-linux 1

5 packages built:

home-assistant-component-tests.canary
python311Packages.py-canary
python311Packages.py-canary.dist
python312Packages.py-canary
python312Packages.py-canary.dist


Can not find vertico-directory package

Copy the configuration from emacs-straight/vertico repository as below:
(use-package vertico
  :init
  (vertico-mode)

  ;; Grow and shrink the Vertico minibuffer
  ;; (setq vertico-resize t)

  ;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
  ;; (setq vertico-cycle t)
  )

;; Configure directory extension
(use-package vertico-directory
  ;; More convenient directory navigation commands
  :bind (:map vertico-map
              ("RET" . vertico-directory-enter)
              ("DEL" . vertico-directory-delete-char)
              ("M-DEL" . vertico-directory-delete-word))
  ;; Tidy shadowed file names
  :hook (rfn-eshadow-update-overlay . vertico-directory-tidy))

But when start Emacs, I got the error below:
error("Could not find package %S. Updating recipe reposit..." vertico-directory (org-elpa melpa gnu-elpa-mirror el-get emacsmirror-mirror))
  straight--convert-recipe(vertico-directory nil)
  straight-use-package(vertico-directory)

Given your example I'm assuming you have a non-nil straight-use-package-by-default.
In this case, use-package will attempt to install packages via straight-use-package.
This will fail here since the vertico-directory package is included in the same repo as vertico and not published anywhere else. So you need to inform straight that vertico-directory lives in the vertico repo:
(straight-use-package '( vertico :files (:defaults "extensions/*")
                           :includes (vertico-buffer
                                      vertico-directory
                                      vertico-flat
                                      vertico-indexed
                                      vertico-mouse
                                      vertico-quick
                                      vertico-repeat
                                      vertico-reverse)))

or you could alternatively set :straight nil in the use-package declarations for the extensions:
(use-package vertico-directory
  :straight nil
  ;;etc
)

However, in either case you'll want to amend the :files directive for vertico to properly link the extensions as I did in the first example.
Does that help?

Thanks for the explanation and example. It works like a charm.

How about the following?
It works on my environment.
(use-package vertico
  :straight t ; vertico and extensions files are installed under ~/.emacs.d/straight/{repos,build}/vertico
  ;; ...
  )

(use-package vertico-directory
  :load-path "straight/build/vertico/extensions" ; is beter than straight/repos/vertico/extensions
  ;; ...
  )

Hmm, I'm not sure I would recommend that way of doing things. I tend to think it's better to avoid messing with :load-path if you can avoid it. But, whatever floats your boat :)


JDK 9+ Compatability with Project Jigsaw & module-info.class

With the release of JDK9, Project Jigsaw was introduced into the Java ecosystem.  The most prominent advantage for adopting these (relatively) new features is for modularization of dependencies. The CLI tool jlink was introduced into the JDK that allows building a custom minimal JRE using only the necessary native Java modules that a module requires.
Currently, this project does not have a module-info.java that explicitly states all of its dependencies and namespace. This causes some incompatibility issues when developing a project with argparse4j, since automatic module names are generated for it (i.e. argparse4j, and not net.sourceforge.argparse4j). Is there any chance that JDK/JRE 9+ modularization can be supported in this project?
Without it, the Maven compiler outputs the following:
[WARNING] Can't extract module name from classes: C:\[REDACTED]\target\classes
[WARNING] ********************************************************************************************************************************************
[WARNING] * Required filename-based automodules detected: [argparse4j-0.8.1.jar]. Please don't publish this project to a public artifact repository! *
[WARNING] ********************************************************************************************************************************************

A quick note: adding a module-info.java is generally backwards compatible; a Maven configuration can be used to compile the module-info.java for Java 9, but retain lower Java versions for the rest of the classes (I have an example in one of my repositories)

I don't see a problem with that. As I do not know how argparse4j is used, I also do not know which classes are accessed by client code. I guess this means I have to make all packages public. Later major revisions can then only expose the classes that are part of the public interface.
The biggest obstacle at this moment is having the time to add this to the build, and to make a new release.

Exposing all packages/classes publicly should be fine as a minor change - making a major change that only exposes the public API would be ideal, but I understand the hesitance to make a breaking change. I would very much like to see this support, as it would stabilize JDK9+ support for several projects I use that are based on this library.
If I authored a pull request for this issue, would you have the time to be able to review it and potentially merge? I suspect it should not take too long, but I can understand these things can vary drastically in implementation time.
Thank you for your time and work on this project!

A pull request is always welcome. If you submit one I will review and merge it.

Sounds good - I will spend some time making a pull request within the next couple days.

The pull request for this is over at #124.
I did not realize my experimental changes (with copious amounts of force pushing) would be logged in this issue - lesson learned.

I made the build a bit faster by minimizing what is compiled using Java 9. It looked good, so I merged it. Thanks for your work.

One caveat with that changes is that the validity of requires statements in the module-info.javas will not be properly validated against the sources, since the only source in the jdk9-compile is module-info.java. For example, removing the following lines in the module argparse4j-hadoop will still compile successfully, but will generate a jar that does not have all its modules specified correctly and could lead to errors for developers.
https://github.com/argparse4j/argparse4j/blob/783f8ac3754f732797bcf0470fc7ad9453f04640/extensions/hadoop/src/main/java/module-info.java#L3-L4
Please keep that in mind when adding any other dependency that you will need to ensure your module-info.java explicitly includes the relevant dependencies before pushing to Maven central, because the Maven build will not catch this error by only including module-info.java for compilation.
We can simplify the build times using a multi-release JAR if necessary, the setup just becomes more complicated (but is not hacky). The project builds from scratch in under 10 seconds on my setup, so I did not think the build times were too excessive with the dual compilation. I think a big slowdown in the CI/CD configuration is uncached Maven dependencies, which we could also resolve (see https://docs.travis-ci.com/user/caching/) in another PR.

If this PR is all good, I can create a new PR simplifying the build setup to only require JDK 9+ (which is needed anyways) rather than JDK6/7 as well, which should alleviate developer headaches.

Javadoc was broken in the Maven build because of the changes for Java 9. It is working again now.
I will keep updating the dependencies in module-info.java files in mind when making changes.
I will look at caching on Travis CI.
Maybe switching to Gradle is a better investment than messing around with Maven.
I am closing this issue now, as the currently built JAR files look good. Please reopen if you find another issue related to JDK 9 support.

@concision Implementing this moved the problem you had to the Hadoop extension, because (the version argparse4j uses and later versions of) hadoop-common do not have an explicit module name.
I hope to release a new version in the near future, but the Maven warning is blocking.
The problem is solved by not including module information in the Hadoop extension. Do you use this extension? If not, I am going to remove module information for it. If it introduces problems for someone else, I guess I have to tell them to nag the Hadoop team to pick a module name.

As you suggested, we should probably opt to remove the module information from the Hadoop extension since it requires upstream support from the Hadoop team. I personally do not use the extension.
The vexing part of trying to integrate module information for a dependency is trying to PR all upstream transitive dependencies, which is no fun. In this PR, I was trying to be uniform with applying the module information to the entire project, but I must have missed that warning/discrepancy.

Thanks for your answer. I will remove module information from the Hadoop extension.


[Java] Drag drop payload always returning an empty byte array

No matter what I set the payload to it only returns empty bytes in the return array. Is there something I'm missing here?

Uhm, no idea because I never had a chance to use it..
Is it urgent? Because I'd like first to catch up the original and then try to fix it, I guess a week or so..

Not an urgent issue. I'm not very familiar with koltin but from what I see in the dragDropSource function the only two things implemented to be put into the payload is vec2's and integers.

Hi, quick info: my machine got broken, I'll be back asap

There seems to be a bug with the hash function.. it fire an IndexOutOfBounds exception..

Hey @KuliuTho,
sorry for the huge delay, but many things came in the way..
Anyway, this was quite tricky because the hash function was failing since I had to pass a String, but the problem was that special values, such as -23 arent valid and they get automatically changed.
This happens because the default charset used is UTF8.
Instead, with ISO-8859-1 all values are valid
Give it a try, I also filled all the other possibilities, Vec2 included

Hi! Friendly reminder that there has been no activity here for over a month and this appears to be fixed. If you wish to keep this open, please respond with what still is an issue, or this will be closed in a week. Thanks!


cf create-app-manifest does not preserve health-check-type

cf create-app-manifest <app> -p manifest.yml
When using the create-app-manifest command to copy a manifest of an already pushed app, if health-check-type was previously set, it did not carry over into the newly created manifest. This is particularly useful and needed when things like workers are blue-green deployed.
cf version 6.23.0+c7866be18-2016-12-22

CC API Endpoint Version
API version:    2.54.0

Hi @crstamps2
Thanks for reporting this - I'll discuss with the team when we can implement this.
Regards,
Dies Koper
CF CLI PM

We have implemented this in cf CLI 6.24.0.
https://github.com/cloudfoundry/cli#downloads
Regards,
Dies Koper
CF CLI PM


ModuleNotFoundError: No module named 'streamlit_prophet'

🐛 Bug Report

Unable to run streamlit app as "No module named 'streamlit_prophet'"
🔬 How To Reproduce
Steps to reproduce the behavior:

Git clone the repo
Error when downloading command "pip install -U streamlit_prophet"

Code sample

Environment

OS: Windows
Python version, get it with: 3.7.16

Screenshots

When downloading:

📈 Expected behavior

📎 Additional context

It looks like the pypi package is outdated, as an alternative you could build it from source with the following steps:
git clone git@github.com:artefactory/streamlit_prophet.git
cd streamlit_prophet
# Install poetry, optional if you already have it
# curl -sSL https://raw.githubusercontent.com/python-poetry/install.python-poetry.org/main/install-poetry.py | POETRY_HOME=/home/docker_user/poetry python
poetry install
poetry run streamlit_prophet deploy dashboard


Importing animation assets

Situation:
Godot generates many files to use animation assets.  It doesn't (or didn't) have a good way to import or cut and paste settings for the animation assets.
Preferred:
Some file format so that these assets can be imported on the fly, without a bunch of point and click inside godot.
Should godot even really care what animations we're going to use until the game is launched?

Situation:
Godot generates many files to use animation assets. It doesn't (or didn't) have a good way to import or cut and paste settings for the animation assets.
Preferred:
Some file format so that these assets can be imported on the fly, without a bunch of point and click inside godot.
Should godot even really care what animations we're going to use until the game is launched?


Fix build: upgraded and locked version of Rubocop.

Changes Unknown when pulling 50bacb518f700167a12fc5275bb57a48b1b806ad on dblock:rubocop-0.47.0 into ** on ruby-grape:master**.


Build errors with vite

Installing (and importing) this package on a clean vue-vite project with typescript causes build errors
Cannot find module 'vue/types/options' or its corresponding type declarations
Cannot find name 'Vue'.
Cannot find module '@vue/composition-api' or its corresponding type declarations.

Relevant dependencies:
{
  "scripts": {
    "build": "vue-tsc --noEmit && vite build",
  },
  "dependencies": {
    "chart.js": "^3.6.0",
    "vue": "^3.2.16",
    "vue-chart-3": "^0.5.10"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.9.3",
    "typescript": "^4.4.3",
    "vite": "^2.6.4",
    "vue-tsc": "^0.3.0"
  }
}

Minimal reproduction repo - https://github.com/JasonMan34/vite-vue-chart-3-bug

Any word on this?

Should be fixed with new version!

Works fine now, thanks for the support!


Catalog resource is unavailable in China

Today, the catalog HTTP API is available globally under the following URL:
https://api.nuget.org/v3/catalog0/index.json
This URL can be looked up in the global V3 service index using the Catalog/3.0.0 @type value:
https://api.nuget.org/v3/index.json
Unfortunately, this is not available in China. The following response is returned when hitting the catalog index:
<Error>
  ResourceNotFound
  <Message>
    The specified resource does not exist. RequestId:8e18a7af-001e-001b-1edd-54f8b9000000 Time:2017-11-03T19:53:38.6607730Z
  </Message>
</Error>

We should make this resource available in China, now that is it documented publicly.
This URL works just fine anywhere else in the world. Note some hacky workarounds exist, but it's not an ideal scenario.
Also, if you are in China and need access to the catalog, please upvote this issue and contact<EMAIL_ADDRESS>

Note: China users can access the catalog if they use the global CDN directly:
https://az636225.vo.msecnd.net/v3-catalog0/index.json

Note: China users can access the catalog if they use the global CDN directly:
https://az636225.vo.msecnd.net/v3-catalog0/index.json

This is INT catalog. PROD catalog has api.nuget.org baked in.


[Release 25] Update base image (cherry-pick 2275)

Description
Update base to UBI 8.7 for all architectures
Update golang (go-build) in arm64
Cherry-pick https://github.com/tigera/operator/pull/2275

For PR author

[ ] Tests for change.
[ ] If changing pkg/apis/, run make gen-files
[ ] If changing versions, run make gen-versions

For PR reviewers
A note for code reviewers - all pull requests must have the following:

[ ] Milestone set according to targeted release.
[ ] Appropriate labels:

kind/bug if this is a bugfix.
kind/enhancement if this is a a new feature.
enterprise if this PR applies to Calico Enterprise only.

/merge-when-ready

OK, I will merge the pull request when it's ready, leave the commits as is when I merge it, and leave the branch after I've merged it.


Revert "ci: skip publishing upgrade-helper diff for next releases"

Hey, I just made a Pull Request!
This reverts commit a948b6af07d45b304eb39af6e81582a5f965e848 in order to start creating diffs for the next versions of Backstage.
The next versions are currently filtered out by the upgrade helper https://github.com/backstage/upgrade-helper/pull/10
We will remove the filter once proper support for the next version is introduced in the upgrade helper.
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

@vinzscam needs signoff plz 👍

@vinzscam needs signoff plz 👍

sorry, revert commit fooled me