OpenSSL 3.0.1: FIPS provider not available

In migrating my OpenSSL 1.0.2 FIPS app to OpenSSL 3.0.1, I am having difficulty in loading the FIPS module. I am following closely the "Programmatically loading the FIPS module (default library context)" section of the fips module guide doc.
With the following changes, FIPS module failed to load. In fact, OSSL_PROVIDER_available(NULL, "fips") returns 0.
Can someone please review my changes and see what might still be missing?
Config/Installation changes:

enable-fips, --api=1.1.1, and --libdir=lib were added to config (latter 2 for app compat)
After build & install, openssl-3.0.1/providers/fips.so, openssl-3.0.1/providers/fipsmodule.cnf and openssl-3.0.1/apps/openssl.cnf were copied from the build VM to the app VM.

App changes:

Edited the openssl.cnf to have the settings described in the fips module guide.
Pointed app to the openssl config location: OPENSSL_config("/opt/uno/etc/openssl.cnf")
Added the following loading code:

            const char* default_search_path = "/opt/uno/lib/crypto";
            OSSL_PROVIDER_set_default_search_path(NULL, default_search_path);

            if (!OSSL_PROVIDER_available(NULL, "fips")) {
               SvcLog(LEVEL_ERROR, "FIPS provider not available");
               return false;
            }

            fips = OSSL_PROVIDER_load(NULL, "fips");
            if (fips == NULL) {
                SvcLog(LEVEL_ERROR,"Failed to load FIPS provider\n");
                return false;
            }

Key file locations in app:
[root@ven-rhel lib]# ls /opt/uno/lib/crypto/fips.so
/opt/uno/lib/crypto/fips.so

[root@ven-rhel etc]# ls /opt/uno/etc/openssl.cnf /opt/uno/etc/fipsmodule.cnf
/opt/uno/etc/fipsmodule.cnf  /opt/uno/etc/openssl.cnf

Selected content from openssl.cnf
openssl_conf = openssl_init

.include fipsmodule.cnf

[openssl_init]
providers = provider_sect

[provider_sect]
fips = fips_sect
base = base_sect

[base_sect]
activate = 1

fipsmodule.cnf content
[root@ven-rhel etc]# cat fipsmodule.cnf
[fips_sect]
# activate = 1
conditional-errors = 1
security-checks = 1
module-mac = 67:48:52:5C:46:50:3C:D9:FD:73:DD:77:C0:51:DB:1C:32:48:8D:73:DA:CF:55:B6:38:C9:40:C1:54:7B:B6:D1

You need to load the FIPS provider either via configuration or explicitly.  Please read the migration guide.

@paulidale Is this wrong? It's referenced from the migration guild. How should I interpret it?

Applications may choose to load the FIPS provider explicitly rather than relying on config to do this. The config file is still necessary in order to hold the FIPS module config data (such as its self test status and integrity data)

The FIPS provider needs the bits openssl fipsinstall creates.  This is unconditional.
Your fipsmodule.cnf looks reasonable apart from the commented out activate line.

Are you seeing any error message on the OpenSSL error stack, e.g. via ERR_print_errors_fp(stderr) or similar call?

The code to load the FIPS provider looks ok to me at first glance.

Most probably the problem is with the relative path used in the .include fipsmodule.cnf directive. You need to use an absolute path or set OPENSSL_CONF_INCLUDE environment variable to the path where the fipsmodule.cnf is placed.

Otherwise the fipsmodule.cnf will be looked from the CWD of the application.

Without running openssl fipsinstall you won't have the module checksum and the module won't load.  So yes, it must be run.
This lives in the configuration file fipsmodule.cnf so you need that too -- regardless of how the FIPS provider is loaded. It's easiest via config.

I have a couple fundamental questions:
1. Is FIPS module load by config file and by explicit API calls mutually exclusive or not. As I quoted from fips module guide above, the guide is pretty clear you need config file even if you load `fips.so` explicitly. Now what's not clear is for manual load, you need just `fipsmodule.cnf`? or you still need `openssl.cnf` where `fipsmodule.cnf` is referenced. @paulidale it would be great if you can clarify on that.

You need to somehow load the fipsmodule.cnf file. The easiest way to do that is to properly include it from the default openssl.cnf file.

2. Is `openssl fipsinstall` build target required? I don't know why that's the case based on fips module guide. @paulidale can you please elaborate on why including this **special purpose** build target is unconditional?

make install in a build with enable-fips should create the fipsmodule.cnf with the module checksum. Doesn't it for you?

... using the enable-fips option. If it is enabled, the FIPS provider gets built and installed in addition to the other standard providers. No separate installation procedure is necessary. There is however a dedicated install_fips make target, which serves the special purpose of installing only the FIPS provider into an existing OpenSSL installation.

3. Must `fipsmodule.cnf` be placed in the same directory as `fips.so` in the app?

The fipsmodule.cnf can be placed anywhere. The point is that it must be somehow loaded which is not done automatically.

@t8m, the sample openssl.cnf uses non- absolute path. I tried .include ./fipsmodule.cnf to no avail.

./fipsmodule.cnf is not an absolute path. You need to use absolute path or set OPENSSL_CONF_INCLUDE environment variable, otherwise the file is looked up in the current working directory of the process that loads the openssl library.

# For FIPS
# Optionally include a file that is generated by the OpenSSL fipsinstall
# application. This file contains configuration data required by the OpenSSL
# fips provider. It contains a named section e.g. [fips_sect] which is
# referenced from the [provider_sect] below.
# Refer to the OpenSSL security policy for more information.
# .include fipsmodule.cnf

Yeah, we should adjust the sample openssl.cnf to not use the relative path.

Ok I have an update: I started to get error callbacks (I don't know why it decided to show up).
What's interesting about the callback is that it started before I made any explicit OpenSSL calls. It looks as if loading of libcrypto (which is auto loaded by the app) is somehow causing OpenSSL to look for FIPS config? Both libcrypto.so and fips.so are in /opt/uno/lib/crypto/ dir. My app doesn't tell the loader to load fips.so, only libcrypto.so and libssl.so.
Our installer does not copy fipsmodule.cnf to /opt/uno/lib/crypto/. I copied the file there and the error callback stopped.
Any idea why this is happpening?
2022-03-16T08:10:18.998-07:00 INFO:: calling ERR_print_errors_cb.
2022-03-16T08:10:18.998-07:00 INFO:: OpenSSL: C077D462647F0000:error:80000002:system library:process_include:No such file or directory:crypto/conf/conf_def.c:805:calling stat(/opt/uno/lib/crypto/fipsmodule.cnf)
2022-03-16T08:10:18.998-07:00 INFO:: OpenSSL: C077D462647F0000:error:07800069:common libcrypto routines:provider_conf_load:provider section error:crypto/provider_conf.c:156:section=fips_sect not found
2022-03-16T08:10:18.998-07:00 INFO:: OpenSSL: C077D462647F0000:error:0700006D:configuration file routines:module_run:module initialization error:crypto/conf/conf_mod.c:243:module=providers, value=provider_sect retcode=-1
2022-03-16T08:10:18.999-07:00 INFO:: calling OPENSSL_config(/opt/uno/etc/openssl.cnf)
2022-03-16T08:10:18.999-07:00 INFO:: calling OSSL_PROVIDER_set_default_search_path w/  /opt/uno/lib/crypto
2022-03-16T08:10:18.999-07:00 INFO:: calling OSSL_PROVIDER_load w/ "fips"
2022-03-16T08:10:18.999-07:00 ERROR:: Failed to load FIPS provider

Update: I found an email thread archived discussing a very similar issue as mine. So I reached out to Jason Schultz who was trying to get FIPS provider to load. He told me he eventually got the FIPS provider to load - with procedure described in this email. He also stated that his code only works on the machine that builds OpenSSL 3.0.
So I added the missing call, OSSL_LIB_CTX_load_config, and tried. It didn't work. Then I thought I should try my app on the build VM. And just as what he mentioned, it worked!
Obviously, that's not a solution.
So I figured there must be some states, other than fips.so and fipsmodule.cnf that are left behind in the build machine. And what could those be?
Anyone knows or have a hypothesis?

You could try to use strace to find out what files is the application trying to load.

Hi all, I am finally able to get FIPS provider to load in my app VM. The last issue was my script use cp instead of cp -p to copy the fips.so. Evidently the change of timestamp and/or ownership caused integrity check to fail.
Thanks everyone. Special thanks to @t8m !
Billy

@t8m You are right file attributes didn't invalidate the integrity. Rather, my script unconditionally striped symbols from all libraries, including fips.so, which changed the file content. That's the real cause for failing integrity check.
Thanks again for your assistance.

@biao-billy
hi, I could see this issue is closed and it is resolved.

I could see from the above discussion that

=============================
**- So I added the missing call, OSSL_LIB_CTX_load_config, and tried. It didn't work. Then I thought I should try my app on the build VM. And just as what he mentioned, it worked!
Obviously, that's not a solution.**
so it worked on Build VM but on the app VM it failed is what i understood.
Later in the end we saw cp -p is the solution?
one doubt is did you run the command openssl fipsinstall (openssl-3.0.1/dist/bin/openssl fipsinstall command) on both build VM and app VM?
Is it done on Build VM alone and later copied the files (fipmodule.cnf and fips.so) then it worked for you?
I know this issue is in closed state but just wanted to get some infor which will be helpful for our application
Thanks,

Something that hasn't been noted yet: copying fipsmodule.cnf from the build VM to another VM invalidates FIPS.  The security policy is quite explicit:

Note: The Module shall have the self-tests run, and the Module config file output generated on each
platform where it is intended to be used. The Module config file output data shall not be copied from
one machine to another.

You must run the fipsinstall process on each operational environment.   Before anyone asks, a different VM is a different operational environment.
As for the question being asked, the problem was the stripping of symbols without regenerating the integrity checksum.  The cp -p did fix this, but so would a normal cp.

@paulidale
Good Morning.
Thanks Dr. Paul.
Note: The Module shall have the self-tests run, and the Module config file output generated on each
platform where it is intended to be used. The Module config file output data shall not be copied from
one machine to another.

Yes I completely agree with you.

If we copy both fipmodule.cnf and fips.so/dll together to a different VM, will that solve the issue? Still, I agree that it's not FIPS validated. we have this use case so we were trying POC and if we copy both fips enablement was working so when i saw the biao-billy use case it is exactly same copying to different machine and  enabling fips.
But still i m with you Dr. Paul that "The Module config file output data shall not be copied from
one machine to another". we are doing POC

If we copy both fipmodule.cnf and fips.so/dll together to a different VM, will that solve the issue?

No.  Fipsinstall must be run on each VM.  Anything else is not FIPS.
Yes, it produces exactly the same output for each but that' not the point.  The primary reason for this little piece of craziness is because the self tests are run once at installation time rather than on every load.  Without using fipsinstall, you haven't run the self tests properly.

@paulidale
Thanks you Dr Paul.
Agreed. Just for the knowledge to share with the teams in Dell to get more details.
No. Fipsinstall must be run on each VM. Anything else is not FIPS.
Without using fipsinstall, you haven't run the self tests properly.
==============
only when we do fipsinstall on another machine then only self tests are run and not on provider load, fips enablement etc.
we want at the application level and not at the system level, then how to run fipsinstall from the application side?
should we carry/ install OpenSSL 3.0.x on each VM is this the pre-requisite for enabling FIPS mode (example for1.0.2 - fips_mode_set(1)) on each machine? If so should we bundle complete openssl files in our bundle and run fipsinstall on the remote machine?
Yes, it produces exactly the same output for each but that' not the point.
=============

so if we dont do that fipsinstall then the results will vary at run time or will be there be any consequences later?

Thanks

Answering the questions inorder:

You run fipsinstall via the command line utility: openssl fipsinstall ....  There is no other way.
You need to run the openssl command line utility on each VM.  The easiest way is to install the openssl command line utility but this isn't mandatory.  It could be run over a network.  It can also be deleted after running.
If you don't run fipsinstall and, instead, copy the fip configuration, everything will work fine.  At least until you are audited and it is discovered that your application is not FIPS compliant.  This is a very bad position to end up in and is the kind of thing the board of directors will hear about and action.  I wouldn't take the risk.

Sure Dr Paul we will take your inputs

You run fipsinstall via the command line utility: openssl fipsinstall .... There is no other way.
OK Sure
You need to run the openssl command line utility on each VM. The easiest way is to install the openssl command line utility but this isn't mandatory. It could be run over a network. It can also be deleted after running.
So we need to install OpenSSL 3.0.x on the VM then we can call openssl fipsinstall on that machine as we cant run over the network as these are customer machines. we need to explicitly ask the customers to move to OpenSSL 3.0.x so that we can use that libraries to enable FIPS compliance
If you don't run fipsinstall and, instead, copy the fip configuration, everything will work fine. At least until you are audited and it is discovered that your application is not FIPS compliant. This is a very bad position to end up in and is the kind of thing the board of directors will hear about and action. I wouldn't take the risk.
Ok Sure we need to check with our security team consultants and take the necessary steps

Thanks for the inputs

@paulidale
Hi Dr Paul,

Do we need to have the requirement to the customer where ever our application is supposed to run to have the OpenSSL 3.0.x as the prerequisite?

Thanks

I don't understand the question.  I'm also not sure how I can explain it again any better than I have.
Run fipsinstall before using the FIPS provider on each and every machine.  How you do this is up to you and your individual setup.

I don't understand the question

Will try to make it bit clear as i have mentioned we are running on another product/machine and we bundle all the files which are required for our application to run and install on the product's machine. So to run fipsinstall command whether we need to carry all the required files (openssl.exe, etc) or do we need to ask the product only to install OpenSSL 3.0.x and run fipsinstall which is applicable for the complete system

Both would work, the decision is up to you, the owners of the other machine and the complexities, advantages and disadvantages of each approach.
The OpenSSL project, cannot assist in this decision, we don't know the individual setup in anything like sufficient detail.

@paulidale
Sure Thanks for the information


Remove unused useCallback import

useCallback import was added to src/hooks/useSelector.ts in https://github.com/reduxjs/react-redux/commit/43d1cc61c0ed257fb8d6ddcb6691020b64f0210b without actually being used.

Thanks!


Fix-up bats file and integrate testing with autoinstall.sh

Branch bats-testing-fixup is what I am currently working on.
Here's the result of my work so far.
Installed Bats to /usr/local/bin/bats
1..8
ok 1 instance directories and files exist
ok 2 GT.M installation exist
not ok 3 relink control permissions
# (in test file tests/vista.bats, line 55)
#   `gtmrelinkctl=$(ls -1 /home/${instance}/tmp/gtm-relinkctl-*)' failed with status 2
# ls: cannot access /home/vehu/tmp/gtm-relinkctl-*: No such file or directory
not ok 4 fifo exists
# (in test file tests/vista.bats, line 61)
#   `[ -e /root/fifo ]' failed
ok 5 GT.M install works as intended
ok 6 VistA FileMan access works
not ok 7 RPC Broker connection works
# (in test file tests/vista.bats, line 85)
#   `[ $(expr "$output" : "1^accept.*") -ne 0 ]' failed
# output : HOME DEVICE (0) DOES NOT EXIST IN THE DEVICE FILE PLEASE CONTACT YOUR SYSTEM MANAGER!-1^Failed to Connect
not ok 8 VistALink connection works
# (in test file tests/vista.bats, line 106)
#   `output=$(java -Djava.security.auth.login.config="./jaas1.config" -cp "./*" gov.va.med.vistalink.samples.VistaLinkRpcConsole -s LocalServer -a ${accessCode} -v ${verifyCode})' failed
# /tmp /opt/vista
#   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
#                                  Dload  Upload   Total   Spent    Left  Speed
100   139    0   139    0     0    523      0 --:--:-- --:--:-- --:--:--   522
  0     0    0  792k    0     0  1210k      0 --:--:-- --:--:-- --:--:-- 1210k
# Login error: No path found to specified listener.

Now merged. Closing issue.


Any tutorial for a newb?

THis seems to be the only code i came across that integrates firebase+react+es6+redux. would love a video/written tutorial , so a newbie like be can understand. thanks in advance.

+1

+1

+1

+1

I have a feeling this would require much more than a tutorial.
For me to get my head around everything in this project, looks like it would take me many many hours. To learn this I feel like I would need a full-blown-course.
IMO, video courses for each piece of the "Stack" is a good start. Lynda, Udemy, TeamTreehouse, Vimeo, YouTube, Books... don't underestimate books :-)
Personally, I would really like a simpler version of this, one that only includes what is absolutely necessary, so that I'm not having to learn too much too soon, I want to learn to crawl before I walk.
... sometimes I wonder if it is worth paying the developer for live Tutoring; Imagine a Google Hangout with 5 students learning all of this together, I would love that; Just a dream, I've never seen it done.

+1

+1

YouTube reduxtagram. Wes bos has a series that walks you through a lot of information about using redux and React. No firebase though, but regardless it's a good start.

+1

Wes Bos steps through Firebase too in his tut

This is no beginner template.  Step lightly.


DocumentOperation created on Processors not persisted in storage

Issue:
Having a Processor handling a request from a custom HttpRequestHandler, any DocumentOperation objects generated on it are not persisting the Document in storage.
I've updated one of the sample-apps to showcase this scenario:
https://github.com/vespa-engine/sample-apps/pull/44
Expected result:
When calling the handled endpoint, if a 200 OK response is returned, then any DocumentOperation generated by Processor pipeline should be persisted.
How to reproduce:
- Deploy demo app to Docker
- Hit custom endpoint:
curl 'http://localhost:8080/demo?terms=1%202%203%204'
- Verify if document was inserted:
curl -v "http://localhost:8080/document/v1/default/music/docid/10"

You need to use the document access APi to write documents: http://docs.vespa.ai/documentation/document-api-guide.html#document-access

Thanks for the help, I've sample-app is not updated to reflect the solution, I'll close the issue.


test(compiler-core): add unit test that simple div with interpolation

add unit test that simple div with interpolation

This is already covered by the other test cases.


[Bug]: RPM packaging enforces insecure permissions and default config values

Describe the bug
This bug concerns the RPM packaging defined by scripts/pkg/build_templates/opensearch/rpm/opensearch.rpm.spec and consists of two related problems: default permissions (lack of %attr) and lack of %config(noreplace) on config files/dirs expected to be modified according to documentation.
First problem:
The spec doesn't define default file/directory permissions in %defattr or in %attr for any of the config files/dirs. This means that the RPM packaging is enforcing the permissions present on the build system, leading to the following enforced permissions in the package:
02755 /etc/opensearch
02755 /etc/opensearch/jvm.options.d
 0755 (all packaged directories under /etc/opensearch)
 0644 (all packaged files under /etc/opensearch)

This leads to a situation where the security plugin emits insecure permissions warnings on startup:
Directory /etc/opensearch has insecure file permissions (should be 0700)
File /etc/opensearch/opensearch.yml has insecure file permissions (should be 0600)
...
(repeat for all config dir/files)

The configs will be reset to these permissions on package install/upgrade - any manual fix to secure defaults after install in production will be reset (potentially until a configuration manager corrects them again).
Second problem:
Subdirectories under /etc/opensearch have been defined in the spec with config files included under them. The configs are not marked as %config or %config(noreplace), meaning that the default values are enforced on package upgrade. As of 2.6.0, these consist of:
/etc/opensearch/opensearch-notifications-core/notifications-core.yml
/etc/opensearch/opensearch-notifications/notifications.yml
/etc/opensearch/opensearch-observability/observability.yml
/etc/opensearch/opensearch-performance-analyzer/agent-stats-metadata
/etc/opensearch/opensearch-performance-analyzer/log4j2.xml
/etc/opensearch/opensearch-performance-analyzer/opensearch_security.policy
/etc/opensearch/opensearch-performance-analyzer/performance-analyzer.properties
/etc/opensearch/opensearch-performance-analyzer/plugin-stats-metadata
/etc/opensearch/opensearch-performance-analyzer/rca.conf
/etc/opensearch/opensearch-performance-analyzer/rca_cluster_manager.conf
/etc/opensearch/opensearch-performance-analyzer/rca_idle_cluster_manager.conf
/etc/opensearch/opensearch-performance-analyzer/supervisord.conf
/etc/opensearch/opensearch-reports-scheduler/reports-scheduler.yml
/etc/opensearch/opensearch-security/action_groups.yml
/etc/opensearch/opensearch-security/allowlist.yml
/etc/opensearch/opensearch-security/audit.yml
/etc/opensearch/opensearch-security/config.yml
/etc/opensearch/opensearch-security/internal_users.yml
/etc/opensearch/opensearch-security/nodes_dn.yml
/etc/opensearch/opensearch-security/opensearch.yml.example
/etc/opensearch/opensearch-security/roles.yml
/etc/opensearch/opensearch-security/roles_mapping.yml
/etc/opensearch/opensearch-security/tenants.yml
/etc/opensearch/opensearch-security/whitelist.yml

If any of these files are modified, those changes will be lost on package upgrade. Although it's understood that many are just used to import initial settings into the indexes, it might reasonably be expected that changes to at least some of these files persist after upgrade.
To reproduce
Install opensearch from RPM, either manually or via YUM repository.
Expected behavior

Secure permissions on config files/dirs under and including /etc/opensearch in the RPM packaging.
Config files expected to be modified not reset on RPM package upgrade.

Sorry, I can't confirm corrections to the specfile as I don't have a build environment for this project, and I'm unsure of the intended behaviour of the plugin config settings on upgrade. Obviously setting %defattr has implications for all packaged files (especially Main dirs), so unfortunately it may require plugin subdirectories and files be specified individually in the spec. This leads to something like this (again, sorry, this is unconfirmed), which requires naming/splitting out plugin directories, which may make the packaging more brittle to change going forward:
# Config dirs/files
%attr(0700,%{name},%{name}) %dir %{config_dir}
%attr(0700,%{name},%{name}) %dir %{config_dir}/jvm.options.d

%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/%{name}.yml
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/jvm.options
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/log4j2.properties
%attr(0600,%{name},%{name}) %config(noreplace) %{data_dir}/rca_enabled.conf
%attr(0600,%{name},%{name}) %config(noreplace) %{data_dir}/performance_analyzer_enabled.conf

%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-notifications
%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-notifications-core
%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-observability
%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-performance-analyzer
%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-reports-scheduler
%attr(0700,%{name},%{name}) %dir %{config_dir}/opensearch-security

%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-notifications/*.yml
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-notifications-core/*.yml
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-observability/*.yml
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-performance-analyzer/*
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-reports-scheduler/*.yml
%attr(0600,%{name},%{name}) %config(noreplace) %{config_dir}/opensearch-security/*.yml
%attr(0600,%{name},%{name}) %{config_dir}/opensearch-security/*.example

Screenshots
If applicable, add screenshots to help explain your problem.
Host / Environment
No response
Additional context
No response
Relevant log output
No response

[Triage] @peterzhuamazon Can you take a look? Thanks!

Hi @dmz-uk thanks for the detailed post here.
As for the 1st problem here, I used - for the files as I want to keep them the same permission as when they are packaged. Not sure if my understanding is wrong so please correct me.
Sourcing here: http://ftp.rpm.org/max-rpm/s1-rpm-anywhere-specifying-file-attributes.html
 There are a couple other wrinkles to using the %attr macro. If a particular file attribute doesn't need to be specified, that attribute can be replaced with a dash "-" and %attr will not change it. Say, for instance, that a package's files are installed with the permissions correctly set, as they almost always are. Instead of having to go to the trouble of entering the permissions for each and every file, each file can have the same %attr:

And for files being 644 and the folders being 755, that is standard.
The caused file permission warning you see in log is a long reported issue: https://github.com/opensearch-project/security/issues/1465
I dont remember the exact reason now, but it might due to that this script in the security plugin still needs to modify things in /etc/opensearch. I do remember a PR was sent sometime before but could not find it.

The 2nd problem is more complicated as we are using this spec file to also build rpms when not all plugins are presenting. This means we cannot hardcode either config file for each plugin, or if any plugin not present, the build will surely showing error because it cannot find the config files.

Let me know what you think.
Thanks.

Thanks @peterzhuamazon your understanding is correct. Apologies for duplicating an existing issue, I'm used to working with packaging as its own primary truth, but I can see the intent is to wrapper the existing install.
As for the 2nd problem, after all my nonsense it should be as simple as:
%config(noreplace) %{config_dir}/opensearch-*

which might be sufficient, although it marks the entire of the plugin dir contents as config. Otherwise using the %install section to scan for plugin directories and populating a files list for finer grained control over what is and isn't config would be possible, if awkward.

Thanks @peterzhuamazon your understanding is correct. Apologies for duplicating an existing issue, I'm used to working with packaging as its own primary truth, but I can see the intent is to wrapper the existing install.
As for the 2nd problem, after all my nonsense it should be as simple as:
%config(noreplace) %{config_dir}/opensearch-*

which might be sufficient, although it marks the entire of the plugin dir contents as config. Otherwise using the %install section to scan for plugin directories and populating a files list for finer grained control over what is and isn't config would be possible, if awkward.

Yeah, your proposal is doable but the reason I didnt do that before is due to these reasons 😄

At the time not all plugins are having opensearch- prefix
As you said it will mark the folders, alongside all the content that is not config files, as config. I am not sure what will be the side effect, other than if changes are made, the files will preserved on the server.

Let me know what you think. I am not against having this change as a result.
We will be appreciate if you can make a PR/contribution as well 😄 .
Thanks.

Hi @opensearch-project/security could you take a look again on opensearch-project/security#1465 once you have time?
This issue has been going on for a long time.
It also related to when to retire / change the demo configuration script later on.
Thanks.

@peterzhuamazon looks like security team has changed the permissions now. Does that help fix this issue?

Hi @bbarani,
Seems like it would resolve some warnings at least for now.
We need to monitor the changes in new snapshots.
As of now, I think we can close this issue until more information surface.
Let me know what you think @dmz-uk.
Thanks.

Hi, @dmz-uk , I am gonna close this issue for now as it has been a while no dialogues  ... please do not hesitate to reopen it if still needed.. thanks again!!


TypeError: Cannot read property 'tableType' of undefined

I'm submitting a ...

[x ] bug report
[x] feature request
[ ] question

PostGraphQL version:

4.0.0-alpha2.9

Minimal SQL file that can be loaded into a clean database:

Steps to reproduce:

Current behavior:
graphql_1   | TypeError: Cannot read property 'tableType' of undefined
graphql_1   |     at introspectionResultsByKind.class.forEach.table (/usr/local/lib/node_modules/postgraphql/node_modules/graphile-build-pg/node8plus/plugins/PgTablesPlugin.js:64:40)
graphql_1   |     at Array.forEach (<anonymous>)
graphql_1   |     at PgTablesPlugin.builder.hook (/usr/local/lib/node_modules/postgraphql/node_modules/graphile-build-pg/node8plus/plugins/PgTablesPlugin.js:42:38)
graphql_1   |     at SchemaBuilder.applyHooks (/usr/local/lib/node_modules/postgraphql/node_modules/graphile-build/node8plus/SchemaBuilder.js:149:20)
graphql_1   |     at SchemaBuilder.createBuild (/usr/local/lib/node_modules/postgraphql/node_modules/graphile-build/node8plus/SchemaBuilder.js:183:10)
graphql_1   |     at SchemaBuilder.buildSchema (/usr/local/lib/node_modules/postgraphql/node_modules/graphile-build/node8plus/SchemaBuilder.js:189:26)
graphql_1   |     at Object.exports.createPostGraphQLSchema (/usr/local/lib/node_modules/postgraphql/node_modules/postgraphile-core/node8plus/index.js:60:18)
graphql_1   |     at <anonymous>
graphql_1   |     at process._tickCallback (internal/process/next_tick.js:188:7)

Expected behavior:
Introspected database
I loaded a postgres database w/postgis using a standard ubuntu tool
osm2pgsql -a -d osm -U $POSTGRES_USER --slim $FILE

PostGraphQL v4 is in alpha; you're using a very old version that had quite a few issues. Please update to the latest version (postgraphql@next or 4.0.0-alpha2.22) and then let me know if the issue still exists.

I went to the latest releases and downloaded. I'll try postgraphql@next

Oops; seems I've not been pushing those tags! Pushed the latest tags now; the branch is benjie/graphql-build (for legacy reasons) and you can track progress via #506

Thanks. I got it up and running in a minimal docker:
FROM node:9-alpine

RUN mkdir /app

WORKDIR /app

RUN npm install -g postgraphql@next

COPY ./.graphql/entrypoint /app/entrypoint

EXPOSE 5000

ENTRYPOINT /app/entrypoint

[semi-automated message] To keep things manageable I'm going to close this issue as I think it's solved; but if not or you require further help please re-open it.


Cli

A working cli interface for the library

Codecov Report

Merging #27 (c24fe4b) into master (7583fff) will increase coverage by 0.67%.
The diff coverage is 88.23%.

@@            Coverage Diff             @@
##           master      #27      +/-   ##
==========================================
+ Coverage   84.37%   85.05%   +0.67%
==========================================
  Files           3        4       +1
  Lines         320      388      +68
==========================================
+ Hits          270      330      +60
- Misses         50       58       +8

Flag
Coverage Δ

unittests
85.05% <88.23%> (+0.67%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

jsonparse/cli.py
88.23% <88.23%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Get ft examples to run on circleci

@teonbrooks can you update: https://github.com/mne-tools/mne-python/blob/master/doc/documentation.rst ?
It's the reason for your error

@teonbrooks circle works!
but now you need to make the plots appear: https://12516-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_ftclient_rt_average.html
and:
https://12516-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_ftclient_rt_compute_psd.html
I think it's because of the plt.close that we don't see them

LSL client added back, hopefully it'll be more robust this time around:
https://12697-1301584-gh.circle-artifacts.com/0/dev/auto_examples/index.html#real-time-m-eeg-acquisition

I think we should merge this and deal with the stim/client naming separately, okay with you @jasmainak @teonbrooks ?

Travis is red just due to a style error, pushing a fix now. Ready for review/merge

ran examples:
https://12720-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_ftclient_rt_average.html
https://12720-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_ftclient_rt_compute_psd.html
https://12720-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_lslclient_rt.html
https://12720-1301584-gh.circle-artifacts.com/0/dev/auto_examples/realtime/plot_rt_feedback_server.html
LGTM !

awesome, thanks everyone!


In the range mode, the input field is not editable

@shahabyazdi  In the range mode, the input field is not editable. It would be awesome if the input field is editable to allow users to change using keyboard.  Please kindly let me know if there is any such plan in the pipeline.
I am hacking the code to make it editable. But it looks like change are pretty complex to accomplish this.
Appreciate if you have any insight on this!

As you mentioned, in multiple and range modes, managing the change of dates entered by the user in the input is very complicated and requires validation. that's why I disabled it.
Currently, I am in the process of making some changes and updates in the 'develop' branch, I will definitely work on it and let you know if it is possible or not.

@shahabyazdi Awesome! thanks for the response!
I understand that multiple mode is free style selection. It would be great if at least make the field editable in range mode. In the custom render input we can control the validation and trigger handleValueChange only after it passed through all the validation.

Since I added a possibility in the onChange method to validate the date for V4.0.0, the input is now editable for all modes (single, range & multiple).

@shahabyazdi  Thanks for the update! I have added custom render that overrode all the props to make it editable. I will check your changes and go with whichever is easier to maintain.

@shahabyazdi  Not a big thing. In the latest type declaration, dateSeparator and multipleRangeSeparator are defined as boolean.
Is that the expected behavior?
   onChange?(       selectedDates: DateObject | DateObject[] | null,       validatedValue: string | Array<string>,       input: HTMLElement,       isTyping: boolean     ): void | false;     dateSeparator?: boolean;     multipleRangeSeparator?: boolean;
If I set the boolean, it renders 'true' string based on the following condition in date_picker.js. I can change in my local to repo to string. Just want to be sure, if this is the intent.
 separator = dateSeparator || (range || weekPicker ? " ~ " : ", "),

@shahabyazdi When will V4.0.0 be out? :)
@vinesh20 Would you share your code?

@Schum123 I forked V4.0.0 code and published to our internal npm registry and using it from there. There are few bugs there as I reported above. They are minor ones and you can publish on your own after fixing it. Not sure when v4.0.0 is going to be released.
Unfortunately, I can't share the code. Because, my changes are very much intertwined with our code base. Sorry about that!

dateSeparator?: boolean; multipleRangeSeparator?: boolean;

Both the dateSeparator & multipleRangeSeparator have a string type and their default value is ~ for range and , for multiple mode and ,

The input is now editable in multiple and range modeds.


Support for returning Result<OpaqueRustType, TransparentEnumType> from async Rust functions

This PR adds support for returning Result<OpaqueRustType, TransparentEnumType> from async Rust functions.
related to #159.
Here's an example of using this.
#[swift_bridge::bridge]
mod ffi {
    enum NetworkError {
	NoData,
	Authentication,
    }
    extern "Rust" {
        type Data;
    }
    extern "Rust" {
        async fn fetch_from_server() -> Result<Data, NetworkError>;
    }
}

do {
    let data = try await fetch_from_server()
    //...
} catch let error as NetworkError {
    //...
} catch {
    //...
}

Note that This PR doesn't support Result<TransparentEnum, ()> and Result<(), TransparentEnum> yet.

Addressed your review. Please let me know if there are any omissions or errors

Thanks!


Typo in About

"webapges"
It's good to know of this package if I need it. It's not clear what the pros and cons vs Gumbo, except it's a convenience wrapper of it, for Table.jl?

Thanks. With this u can only scrape tables with Gumbo its6a parser so you can scrape.more stuff


ISKFunction SimpleInvokeAsync

Motivation and Context
We do have very simple scenarios where we just want to output the LLM result without having to manage or handle the SKContext result.
This is similar to what can be done with the ITextCompletion.CompleteAsync extension method with the additional benefit of using the Template Engine provided by the Kernel to execute your function (in case it's a Semantic Function)
Description
Adding a ISKFunction.SimpleInvokeAsync extension methods to return the string result from a ISKFunction call.
Contribution Checklist

[x] The code builds clean without any errors or warnings
[x] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
[x] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with dotnet format
[x] All unit tests pass, and I have added new tests where possible
[x] I didn't break anyone :smile:

I don't fully understand when this would be used, and I don't think SimpleInvoke really explains how it's any different. Could these just be more "InvokeAsync" overloads?
Let's follow up on this change offline.

@RogerBarreto Flipping to draft for now. Let's look at this in context of the bigger changes we want to make with SKContext, etc.


Stuck on Check dependencies when using react-native run-ios

It works when I run it from XCode but not when when i run it from the CLI
CLI works fine when running react-native run-android

same here


How to create the stream from this plugin

@chenyeju295 can you please help get the stream from this so we can apply this https://pub.dev/packages/flutter_pytorch

@nickagrawal hi,I added a onEncodeData callback to see if it would be helpful to you.


New nodeJS based lambda artifacts to provide access to DMP metadata from an S3 bucket

Fixes: #18 and #19

New nodeJS Lambda Layers in lambda/layers/dmptool/ that provide standardized functionality to facilitate access to AWS resources.
New nodeJS integration Lambda lambda/integrations/dmp_extractor that exports all DMP metadata stored in the DynamoDB Index table and generates a JSONL file and places it into a new FileExchange S3 bucket
New nodeJS API Lambda lambda/api/get_dmps_downloads that generates pre-signed URLs for each file for the calling client app that exist in the FileExchange S3 bucket. The caller must have been authenticated with the [env].data-transfer scope. The caller can only access files prefixed with their client name as defined on their Cognito Client id

@jupiter007 you already reviewed some of this. The DmpExtractor lambda that generates the JSONL files for COKI and the database and general lambda layers are pretty much the same.
The new stuff are the cloudformation, cognito, ssm and s3 layers and the new get_dmps_downloads API lambda function


ingest: download Nextclade V2 dataset

Description of proposed changes
The automated ingest pipeline failed during align with nextclade2 with an error "specified file not found in archive".¹
I believe this is due to the nextclade dataset command downloading a Nextclade V3 dataset. I verified locally that using nextclade2 dataset will download a V2 dataset.
¹ https://bedfordlab.slack.com/archives/C03J4JG4ZE0/p1705594390033449
Related issue(s)
Follow up on https://github.com/nextstrain/mpox/pull/226
Checklist

[ ] Checks pass

Heh I just independently saw this was the reason for failure. Thanks for already fixing!


cos not defined

Traceback (most recent call last):
File "pokecli.py", line 120, in
main()
File "pokecli.py", line 117, in main
bot.take_step()
File "/Users/administrator/PokemonGo-Bot/bot.py", line 29, in take_step
self.stepper.take_step()
File "/Users/administrator/PokemonGo-Bot/stepper.py", line 39, in take_step
self.api.walk(self.config.walk, *position,walking_hook=self.walking_hook)
File "/Users/administrator/PokemonGo-Bot/pgoapi/pgoapi.py", line 114, in walk
dist = distance(i2f(self._position_lat), i2f(self._position_lng), lat, lng)
File "/Users/administrator/PokemonGo-Bot/pgoapi/utilities.py", line 46, in distance
a = 0.5 - cos((lat2 - lat1) * p)/2 + cos(lat1 * p) * cos(lat2 * p) * (1 - cos((lon2 - lon1) * p)) / 2
NameError: global name 'cos' is not defined

#126


TSDM Presentation to ESDC EARB

Closing this as this should be done by the architecture teams (part of the action item "Produce Loose Coupling Guidance"

Closing this as this should be done by the architecture teams (part of the action item "Produce Loose Coupling Guidance"


cleanup(storage): improve debugging information

Also fix some nits in the comments.

This change is

/FYI: @Jseph


Install boot JDk16 for bootstrapping JDK17 builds.

Checklist

[x] commit message has one of the standard prefixes
[ ] FAQ.md updated if appropriate
[ ] other documentation is changed or added (if applicable)
[ ] playbook changes run through VPC or QPC (if you have access)
[ ] for inventory.yml changes, bastillion/nagios/jenkins updated accordingly

VPC not run yet due to VPC failing.
Related AIX enhancement request to maek the role parameterised as per other platforms has been raised at https://github.com/adoptium/infrastructure/issues/2239

LGTM - I assume this was only needed for AIX

No - this modifies the files for Windows and UNIX playbooks as well


origin of data indication

sometimes when debugging merged configurations, its really helpful to be able to tell what file/line/source an element came from
for example, if a setting can be provided by cli, default settings file and optional settings file it would be a great help to tell
a) where the final setting came from
b) if its a parsed file what line it was

unless those libraries provide a entrypint for this, its not something to be concerned with directly, a layer that adds the details to validation errors is a separate concern
the key is that the data  is easily available for debugging values/their origin
all the better if frameworks have standard ways to consume them, but we shouldnt shoehorn them


License is not compatible with Qt

This is a small issue in many cases, but the license is not quite compatible with Qt since the additional piece they add about being able to include header files is not present here.
Can this be fixed though? It would enable me to use this on a project involving a closed source proprietary product, which currently I can not.

I've changed the license to MIT. Do whatever you want with this code.


Support mouse wheel inputs

Overview
Adds support for mouse wheel input types, and fixes #75.
Mouse wheel inputs are modelled as a form of SingleAxis / DualAxis user inputs. This means that lateral mouse wheels are supported by default!
If you want to extract the values, use the input_value family of methods. If you just want to verify that it's pressed, use the pressed APIs.
Notes for reviewers

Sorry about the long commit history; this code / problem was very gnarly and I needed to do clean up work as I went to make this feasible to reason about.
I've refactored DualAxis to store two SingleAxis types, as previously suggested. This made the code significantly nicer!
AxisPair is now DualAxisData.
InputMode is yeet; it was quite useless in practice and wasn't playing nice with cursed mousewheel x gamepad dual axis inputs.
I've had to remove clamping from DualAxisData and elsewhere in the API, as we now use it store mouse wheel data, which isn't normalized.

To Do

[x] tests, tests, tests

[ ] fix input mocking axislike inputs so the tests actually pass

[x] add example
[x] verify that this is ergonomic to use when considering ScrollUp and ScrollDown as button-like
[x] create an issue to consider handling ScrollUnit  for mouse wheel events (#174)

I'll try to give this at least a quick once over soon. For anybody else's reference who's reviewing, here's a more tame version of the diff that compares this branch to a newer commit after the initial pass in #151.
https://github.com/Leafwing-Studios/leafwing-input-manager/compare/e8bd6e0...mouse-wheel

Great :) Yeah, I'm mostly interested in conceptual / API feedback; I can write tests to make sure it actually works 😂

Merging in now; this PR is already far too large. Fixing the input mocking should be done in a follow-up per #178.


Update and fix changelog

rendered

updates the changelog
tweaks and minimizes wording of some lines
fixes formatting and numbering issues introduced by mesh overhaul # 599 (likely products of merge conflicts)

Much appreciated :heart:


ActionModeHelper.isActive() returns false while it shouldn't?

hi.
i have a list of items and when one of them is clicked i need invoke some method. however, if action mode is active, i do not want to invoke that method and instead a click should select that item. basically my onclick looks like this:
@Override
	public boolean onClick(View v, IAdapter<BaseItem> adapter, BaseItem item, int position)
	{
		if (mActionModeHelper.isActive() == false)
		{
			doSomething();
		}

		return true;
	}

i have successfully set up my list to select items on long click, and after the first item is selected, selecting additional items is done via regular click. so far so good.
the problem is after selecting the first item (by long clicking), when i click (tap) another item in the list in order to select it, mActionModeHelper.isActive() return false and therefore doSomething() is invoked, which i don't want. why does isActive() return false? action mode is clearly active.
thanks

You could try to call the reset method, because active is checking if the mode is null or not.

@FabianTerhorst thanks for your reply.
where should i call the reset method? what will it do exactly and how would it fit my needs? why would action mode be null once i click an item on my list? (not on the CAB)

i figured it out! kind of...
if you came across the same issue as me and found this thread, please keep in mind that while this works for my app logic, it may not work for yours
my original onPreClickListener was simply copied from the sample project, however i still don't fully understand the flow of the click events of this library.
@Override
			public boolean onClick(View v, IAdapter<BaseItem> adapter, BaseItem item, int position)
			{
				Boolean res = mActionModeHelper.onClick(item);
				return res != null ? res : false;
			}

anyways, i figured out that while in actionMode, when the last selected item is clicked, the "behind the scenes" onClick (triggered by mActionModeHelper.onClick(item)) is finishing the actionMode (as it should, since the last item was de-selected) and thats why when i reach my on onClick actionMode is not active anymore!
i came up with a fix but it feels kind of like a hack to me... @mikepenz @FabianTerhorst please tell me if you think this is a bad solution, and you have a better idea (like i said, i still don't fully understand the flow of the click events in the library).
this is my new onPreClickListener and so far it seems to work.
@Override
			public boolean onClick(View v, IAdapter<BaseItem> adapter, BaseItem item, int position)
			{
				Boolean res = mActionModeHelper.onClick(item);

				//if actionMode is no longer active,
				//it means that this click event was performed on the last
				//selected item (which ended actionMode).
				//in this case, we do not want to pass the event on
				//to the activity's onClick method because this click
				//was intended to de-select an item, and not to
				//perform the click action of the item.
				if(isActionModeActive() == false)
				{
					return true;
				}

				return res != null ? res : false;
			}

@or-dvir do you use mSupportSubItems? of the ActionModeHelper?
Can you please debug the locations where the mActionMode is set to null:
https://github.com/mikepenz/FastAdapter/blob/develop/library-extensions/src/main/java/com/mikepenz/fastadapter_extensions/ActionModeHelper.java#L149
https://github.com/mikepenz/FastAdapter/blob/develop/library-extensions/src/main/java/com/mikepenz/fastadapter_extensions/ActionModeHelper.java#L156
and what triggers them?
That's the only reason for it to return false

@mikepenz no i am not using supportSubItems (ive seen it mentioned in some places in the source but havent looked into what it even means yet).
after further investigation i believe it was happening only with regards to the last item (i have since fixed the issue so i don't remember exactly) and it just had to do with the library's order of calls to the onClick and/or selection process. if i remember correctly, when i de-selected the last item, the library first finished action mode, and only then invoked onClick() - therefore by that time action mode was indeed closed. i dont fully understand the order of calls regarding click events, so i am assuming that the situation i just described makes sense to you and to the library's operation.
the way i fixed it was to give up and handle action mode myself and then i had control on whenever to finish it. i would have much preferred to save all that time (and potential future bugs) though by using the library's inner logic but as i said, i couldnt figure out the way click events are handled and forwarded :(

@or-dvir I really wonder what was going on here. I was testing and debugging it myself and was not able to see it. but possibly your use-case just results in this issue

Like I said, it just has to do with the order of event handling in the library.
I.e. First it closes action mode, then invokes on click. Therefore in my onClick, action mode is not active


bracket pair color flickers if large text is comment and then uncomment

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.81.1
OS Version: Windows

Steps to Reproduce:

comment a text from large file and uncomment it
bracket's pair color is flickring

https://github.com/microsoft/vscode/assets/50770619/88758473-bc01-41c6-be22-6e1199c8f25f

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.80.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

This is as designed, but maybe it can be improved, thus keeping this issue open.


Use spk-config in azurecredentials

As a: developer
I want: to use the spk-config file
So that: azurecredentials doesn't have to rely on the config.ts file
Describe the solution you'd like: delete config.ts and refactor azurecredentials.ts to use values from spk-config.yaml
Does this require updates to documentation?: no

Resolved with the pr from @samiyaakhtar


initialize Rec.ripas by zero (fix fdt bug)

This PR fixes #118 .
In-depth analysis for this bug is here.
While debugging this issue, I came across a new issue, #131 , which needs to be handled in the future.
Plus, we need to have a secure way to manage Rd/Rec/Data/... . They could be handled via #112 .

Additional thought:  Not sure, but we might be able to catch this bug using Miri, as it is a kind of undefined behavior.

oops! my bad. Thanks for finding the bug!
By the way, when the pages are delegated to RMM before it is used for Rec or Rd, the state of the page granule is UNDELEGATED. According to the ARM spec, the state transition of a granule to UNDELEGATED has to be accompanied with wiping out the page. As I know, we also have implemented it too. However, there seems a mistake with the granule implementation.

accompanied with wiping out the page. As I know, we also have implemented it too. However, there seems a mistake with the granule implementation.

I got your point. I had a quick look at this.
At this moment, wiping out seems to only happen when making a transition from "Rd/Rec" to "Delegated" based on the below code. This seems to be a mistake as you said.
I'm doing #113 , I'll fix this there as #113 has to do with granule management.
pub fn set_granule(addr: usize, state: GranuleState, mm: PageMap) -> usize {
     GranuleState::Delegated => {
            if prev_state != GranuleState::Undelegated
                && prev_state != GranuleState::Delegated
                && prev_state != GranuleState::RTT
            {
                granule.get_mut(&addr).unwrap().zeroize();   // This is only part that calls "zeroize()".
}


Changing subnet for network interface ends up with error

I tried to change subnet for a network interface. Here is my code:
NetworkInterface ni = ...;
ni.update().withSubnet("newsubnet").apply()
I got exception com.microsoft.azure.CloudException: Cannot parse the request.: Cannot parse the request.
After inspecting the log, I noticed that there is one slash missing in the subnet resource id. I'll submit a pull request to fix this bug.

Yep, clearly a bug. Thanks for catching and providing a fix. I'm adding a test for this as well

fixed for v1.1.0


FAQ - Use vim/nvim/nano as preview

Category

[x] fzf binary
[x] fzf-tmux script
[ ] Key bindings
[ ] Completion
[x] Vim
[x] Neovim
[ ] Etc.

OS

[x] Linux
[ ] Mac OS X
[ ] Windows
[ ] Windows Subsystem for Linux
[ ] Etc.

Shell

[ ] bash
[x] zsh
[ ] fish

I'm trying to pipe files to fzf and view the contents in a preview window inside vim/nvim/nano etc.
While cat works perfectly eg:
find * -type f | fzf-tmux --reverse -d 100 --preview 'cat {}'

However using vim/nvim/nano doesn't work.
find * -type f | fzf-tmux --reverse -d 100 --preview 'nvim {}'

Example:
https://drive.google.com/file/d/1Z66KfWHCPKw0C23mmnn-WwsPqvCT456M/view?usp=sharing
Am i missing something obvious? Any help is greatly appreciated.

fzf is not a terminal multiplexor and you can't use an interactive process as the preview command. Also, the command should finish quickly as the preview window is updated only when the process completes.
You can still make fzf launch vim or an interactive editor by binding a key to execute action as follows:
fzf --preview 'head -100 {}' --bind 'ctrl-v:execute(vim {} < /dev/tty)'

fzf is not a terminal multiplexor and you can't use an interactive process as the preview command. Also, the command should finish quickly as the preview window is updated only when the process completes.
You can still make fzf launch vim or an interactive editor by binding a key to execute action as follows:
fzf --preview 'head -100 {}' --bind 'ctrl-v:execute(vim {} < /dev/tty)'

is there on option to use fzf to open up a file in nano/vim after searching?


Need provider screen layout presentation dimensions in Epic

See if we can get dimensions for the provider app subframe within Epic. That will help us figure out width of columns, etc.

Stephen said that the provider app launch window dimensions from Epic and they basically said it's another window that pops up which can be resized to whatever size they want. So  no standard dimensions. @swmuir


Unicode symbols are turned into &#x....

When I use the Unicode (or Cyrillic) in the output HTML I get encoded symbols like ™, etc.
The error occurs only when I use string objects (e.g. data loading from DB).
Take a look at an example. For template

Test™

the output HTML is

Test™

However for template

@("Test™")

the output HTML is

Test™

I'am using RC1.
Fortunately browsers displays all fine, but this is a great overhead for Cyrillic sites (8 symbols instead 1).

The literal Test™ is not further encoded because the system assumes the Razor author has written valid (safe) HTML. However all output from C# is encoded because the system assumes included values come from a form submission or other user input.
If you're positive some ranges of Unicode characters are safe for your application and visiting browsers, you can adjust the HtmlEncoder, JavaScriptEncoder and UrlEncoder defaults e.g.
public class Startup
{
    ...
    serviceCollection.AddWebEncoders(options =>
    {
        options.TextEncoderSettings = new TextEncoderSettings(
            UnicodeRanges.Cyrillic,
            UnicodeRanges.LatinExtendedB,
            UnicodeRanges.LetterlikeSymbols);
    });
    ...
}

Note that by default the TextEncoderSettings property is null but the various encoders have internal defaults.


Thread safety of multiple devices on a single SPI bus (IDFGH-3570)

Development Kit:      none
Module or chip used:  ESP32D0WDQ6 (revision 1)
IDF version: v4.2-dev-1905-g625bd5eb1
Build System:        make
Compiler version: esp-2020r2-8.2.0
Operating System:     Linux
Using an IDE?: No
Power Supply:         external 5V

I'm having issues with this assertion triggering intermittently.
I have 2 SPI devices on the same bus (SPI3). In the warning here, it says I have to just add a mutex lock around the shared Device using xSemaphoreCreateMutex, which is exactly what I'm doing, but the app breaks. The way I'm doing it is by not locking all spi transactions behind a single universal mutex, but rather having a mutex for each SPI device, and locking the one linked to that specific device.
So for example, instead of this:
SemaphoreHandle_t spi_semphr;

void spi_trans( spi_device_handle_t spi_device, uint8_t *buf_w, uint8_t *buf_r, uint8_t len )
{
	xSemaphoreTake( spi_semphr, portMAX_DELAY );

	ESP_ERROR_CHECK( spi_device_polling_transmit( spi_device,
		&( spi_transaction_t ){ .length = 8 * len, .tx_buffer = buf_w, .rx_buffer = buf_r } ) );

	xSemaphoreGive( spi_semphr );
}

I'd do something like this:
SemaphoreHandle_t spi_dev1_semphr;
SemaphoreHandle_t spi_dev2_semphr;

spi_device_handle_t spi_dev1;
spi_device_handle_t spi_dev2;

void spi_trans_dev1( uint8_t *buf_w, uint8_t *buf_r, uint8_t len )
{
	xSemaphoreTake( spi_dev1_semphr, portMAX_DELAY );

	ESP_ERROR_CHECK( spi_device_polling_transmit( spi_dev1,
		&( spi_transaction_t ){ .length = 8 * len, .tx_buffer = buf_w, .rx_buffer = buf_r } ) );

	xSemaphoreGive( spi_dev1_semphr );
}

void spi_trans_dev2( uint8_t *buf_w, uint8_t *buf_r, uint8_t len )
{
	xSemaphoreTake( spi_dev2_semphr, portMAX_DELAY );

	ESP_ERROR_CHECK( spi_device_polling_transmit( spi_dev2,
		&( spi_transaction_t ){ .length = 8 * len, .tx_buffer = buf_w, .rx_buffer = buf_r } ) );

	xSemaphoreGive( spi_dev2_semphr );
}

I can avoid this issue by reverting to use one global mutex for all transactions, which brings me to the questions: what's going on? Am I missing something? How thread-safe is the spi master library really?

you should use only 1 mutex for each spi bus, not device. the mutex prevent you to access the bus when it is busy. if you have 2 mutex, then device 1 and device 2 can access the bus at the same time and you get your assertion.

you should use only 1 mutex for each spi bus, not device. the mutex prevent you to access the bus when it is busy. if you have 2 mutex, then device 1 and device 2 can access the bus at the same time and you get your assertion.

Reading must be difficult, so no worries

I think the concept you are missing ismutex. Here is a short explaination https://www.webopedia.com/TERM/M/mutex.html

Thanks, I guess? In return, could you do me a favor and actually read what I wrote beyond the title and presume the rest? Thanks in advance.

@igrr I don't like tagging anyone but as it seems to be a trivial thing, its importance to me isn't. If the docs are right, I could avoid redundantly locking the entire SPI bus, but I also wouldn't have the assert triggering on me. Just throw me a bone or something.

@ginkgm Can you take a look at this? Is lyris85 right? In that case, the doc printed above is wrong because it means 1 task per SPI device, not 1 task per SPI bus, and it should be reworded to "... As long as all devices on the same bus are accessed by only one task ... if multiple tasks try to access any of the SPI devices...".
Or the docs are correct and the spi_master component has always been bugged because it doesn't implicitly handle the 1 task/device approach.
Btw, if my first hypothesis is correct, why is that the case? Why doesn't spi_master offers a way to implicitly handle concurrent accesses to the same bus, through the spi_device_polling_transmit and spi_device_transmit wrappers or similar? They fulfill this role of being the simplest and easiest APIs for SPI transactions anyway.

Answered here. I'll close it, even though the suggestion for improving the documentation remains.

I'm probably slow but I'm not sure I understand the conclusion. I'm having that same problem https://github.com/espressif/esp-idf/issues/8179 but my understanding of the doc is that you can access multiple devices (for simplification I mean one device = a peripheral with its own CS line, represented by a handle obtained by spi_bus_add_device) without worrying as long as each device is accessed by a single task.
In other words, the driver does not handle for you concurrent accesses to the same handle that you obtained from spi_bus_add_device() which seems reasonable to me, as it is purely under the control of the user's application.
Now, what I'm observing is that I need to put a global mutex on the SPI host (SPI0..3) for it to work. That sounds counter-intuitive to me because that means, for example, that SPI-to-ethernet devices cannot coexist with anything, unless I patch esp-idf's spi_device_polling_transmit

@philippe44 conclusion is that I'm right. @Spritetm cleared it up. The wording in the docs section I posted the print of is wrong, and "Device" really means bus there, not actually each of the up to 3 devices on the same bus. So it's either using a bus-wide mutex, or a single task governing each bus, or rolling up your own spi_master with actual device-wide mutual exclusion.

@KaeLL thanks for answering. What puzzles me is that all SPI-Ethernet driver are problematic then because they require exclusive usage of an SPI bus, and when you use SPIRAM @ 80MHz, there is only one left. It sounds to me like a big flaw. Of course, I can (and this is what I did) change spi_master to include a mutex per host (if I understand the concept :smile:)
Now, consider the following code
#include <string.h>
#include <stdlib.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"
#include "esp_task.h"
#include "esp_log.h"
#include "esp_heap_caps.h"
#include "driver/spi_master.h"

static char TAG[] = "spi-bug";

spi_device_interface_config_t config;
spi_device_handle_t handle1 = NULL, handle2 = NULL;

bool inTask;
int taskCount, timerCount;

static esp_err_t spi_write(spi_device_handle_t handle, size_t len) {
    spi_transaction_t transaction = { };
	uint8_t *buffer = heap_caps_malloc(len, MALLOC_CAP_SPIRAM);

	transaction.tx_buffer = buffer;
	transaction.length = len*8;

	esp_err_t ret = spi_device_polling_transmit(handle, &transaction);
	free(buffer);
	return ret;
}

static void task(void *arg) {
	while (1) {
		taskCount++;
		inTask = true;
		spi_write(handle2, 1024);
		inTask = false;
	}
}

static void timer(void *arg) {
	static int count = 0;
	if (inTask) {
		//ESP_LOGI(TAG, "Timer (likely) interrupting task");
	}
	timerCount++;
	spi_write(handle1, 128);
}

void app_main()
{
	spi_bus_config_t spi_config = {
		.mosi_io_num = 23,
		.miso_io_num = 19,
		.sclk_io_num = 18,
		.quadwp_io_num = -1,
        .quadhd_io_num = -1
	};

	esp_err_t err = spi_bus_initialize( SPI2_HOST, &spi_config, 1 );
	ESP_LOGI(TAG, "SPI host %d init %d", SPI2_HOST, err);

	memset(&config, 0, sizeof(spi_device_interface_config_t));
    config.clock_speed_hz = SPI_MASTER_FREQ_8M;
	config.clock_speed_hz = 1*1000*1000;
    config.spics_io_num = 22;
    config.queue_size = 10;
	config.flags = SPI_DEVICE_NO_DUMMY;
	err = spi_bus_add_device(SPI2_HOST, &config, &handle1);
	ESP_LOGI(TAG, "SPI device %p %d", handle1, err);

	memset(&config, 0, sizeof(spi_device_interface_config_t));
	config.clock_speed_hz = SPI_MASTER_FREQ_8M;
	config.clock_speed_hz = 1*1000*1000;
    config.spics_io_num = 22;
    config.queue_size = 1;
	config.flags = SPI_DEVICE_NO_DUMMY;
	err = spi_bus_add_device(SPI2_HOST, &config, &handle2);
	ESP_LOGI(TAG, "SPI device %p %d", handle2, err);

	xTaskCreate(task, "task", 4096, NULL, ESP_TASK_PRIO_MIN + 1, NULL);
    xTimerStart(xTimerCreate("timer", pdMS_TO_TICKS(10), pdTRUE, NULL, timer), portMAX_DELAY);

	while(1) {
		ESP_LOGI(TAG, "TaskCount %d TimerCount %d", taskCount, timerCount);
		vTaskDelay(pdMS_TO_TICKS(2000));
    }
}

It's not supposed to be pretty but, knowing that timer task is @ priority 10, shouldn't it fail very often? The low-priority task is saturating the bus with "long" transfers and the timer is interrupting it as frequently as possible. That has been running for a day w/o any issue where the real app with the w5500 driver and a SPI display fails after a few seconds.

@philippe44 conclusion is that I'm right. @Spritetm cleared it up. The wording in the docs section I posted the print of is wrong, and "Device" really means bus there, not actually each of the up to 3 devices on the same bus. So it's either using a bus-wide mutex, or a single task governing each bus, or rolling up your own spi_master with actual device-wide mutual exclusion.

How do you read that in my response there? I'm actually saying the exact opposite: the API is supposed to be threadsafe as long as you keep each one of the 3 devices in the same thread.

That makes sense to me but I was not sure anymore what to think. So yes, I absolutely have a case https://github.com/espressif/esp-idf/issues/8179 where 2 threads access 2 different devices but on the same bus and randomly, after a few seconds, one thinks that it as acquired the lock but if you check right when exiting the spi_bus_lock_acquire_start(), you're not the acquiring device. There is only one call to spi_device_polling_transmit() in my code, the other ones are made by w5500 which have a mutex. Just to be sure, I've traces that there is no re-entrance in my own call to spi_device_polling_transmit(). As long as I put a per-host mutex inside spi_device_polling_transmit() then it will work for hours.

@Spritetm

How do you read that in my response there?

You know what? I have no idea. I'm actually asking myself that same question right now.  Thanks for pointing it out and sorry about that. It'll probably happen again.

If you have a case where it's not, that is a bug and it should be fixed.

Great, because I've had it for a year and half now, and I do recall assuming the docs were wrong because, well, I had no reason to believe otherwise, but had suggestions to believe it so.
No one else was complaining about, @lyris85 was the only one who bothered commenting and he reinforced the idea of a bus-wide mutex; the chip runs code, not documentation, so I'm inclined to believe the former rather than the latter, especially regarding a behavior that isn't necessarily a bug by itself, but an inefficiency. So I guess you can see where I'm coming from.


Cursor does not change back to arrow when a annotation gets moved on the timeline

See screencast: When I activate an annotation and then move it on the the timeline the cursor gets shown as a cross. After having moved the annotation the cursor remains in this cross-shape. When I do such a "moving-an-annotation-movement" next to an annotation (click > move the mouse while having "pushed" the mouse button > release the button) the cursor returns to its arrow-shape.
Annotation Tool_Cursor ändert sich und bleibt so.mp4.zip

Done in 8cadb4eb305b279068fd2b5c72c228ed6e824238


add support for jsx, es6, and coffee file extensions

this needs tests and perhaps some configuration support but i wanted to get the ball rolling by creating a (flawed) pr.

this apparently affects the loading of non-sourcemaped files. (only see main file under file://, not full file set  although webpack:// has everything...yeah, i'm using webpack)


Fixed syntax highlighting setting not being saved

Fixed syntax highlighting setting not being saved
Fixes #21815

Yeah that's too much code just to save a tiny option like that IMO, it should reuse an existing format. Or at least it should be made more future proof so that it can be used to save other such contextual menu settings in the future.
CC @Paulb23

You guys were totally right, updated to save settings in project metadata.

Thanks!

This won't work as syntax highlighter setting's need to be done per open file, whereas this creates a global one. Therefore if you open a file, change the syntax highlighter, restart Godot every opened file will now have that syntax highlighter selected.
In addition the idx cannot be trusted, if the syntax highlighter is removed, fails to load or a new syntax highlighter is added you'll end up with a random selection. It would be better to rely on the name.
The fix would be adjusting the loading under set_window_layout and saving in get_window_layout in ScriptEditorPlugin. Currently its just a list of files, but would have to be coveted to some kind of HashMap allowing storage of metadata.
This has been to my todo list for a while, but to store the last caret position, selection etc between sessions. (#19109).


Improve README

The README should be focused on users, not developers. For devs, we might add a DEVELOPER.md file.

There should be examples how to incorporate time as a filter ($__timeFilter) in the query.

We should have examples for all macros

I just tested macros and they work, this is great.
Example query:
select $__timeGroup(created_at,'1w') as date, to_milliseconds(avg(merged_at - created_at)) / 3600000 as avg_ttm_hours
from hive.v2.unique_pulls
where $__timeFilter(created_at)
group by 1
order by 1

We might be able to reuse most of this as docs: https://grafana.com/docs/grafana/latest/datasources/postgres/

Please add example connection-provisioning yamls to populate basic auth, etc.

Also improve the getting started section. It should not assume users have built the plugin locally, instead use the GF_INSTALL_PLUGINS environment variable, like:
docker run -d -p 3000:3000 --name=grafana \
  -e "GF_INSTALL_PLUGINS=trino-datasource" \
  grafana/grafana-oss


AMS dependencies are now linked in as private

Giving it a try before lunch, I should have outcomes by the meeting.

Mods needed for me to compile:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fbeea1e..4e7bd02 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -130,9 +130,9 @@ endif() # WITH_REDIS
 if (WITH_HDF5)
   find_package(HDF5 NAMES hdf5 COMPONENTS C shared REQUIRED NO_DEFAULT_PATH PATHS ${HDF5_Dir} ${HDF5_Dir}/share/cmake)
   list(APPEND AMS_APP_INCLUDES ${HDF5_INCLUDE_DIR})
-  list(APPEND AMS_APP_LIBRARIES ${HDF5_C_SHARED_LIBRARY})
+  list(APPEND AMS_APP_LIBRARIES ${HDF5_LIBRARIES})
   list(APPEND AMS_APP_DEFINES "-D__ENABLE_HDF5__")
-  message(STATUS "HDF5 Shared Library: ${HDF5_C_SHARED_LIBRARY}")
+  message(STATUS "HDF5 Shared Library: ${HDF5_LIBRARIES}")
   message(STATUS "HDF5 Include directories: ${HDF5_INCLUDE_DIR}")
 endif() # WITH_HDF5

@@ -182,7 +182,7 @@ if (WITH_TORCH)
   find_package(Torch REQUIRED)
   # This is annoying, torch populates all my cuda flags
   # and resets them
-  set(CMAKE_CUDA_FLAGS "")
+  #set(CMAKE_CUDA_FLAGS "")
   set(CMAKE_CUDA_ARCHITECTURES ON)

   list(APPEND AMS_APP_INCLUDES "${TORCH_INCLUDE_DIRS}")


Work plan

Components and dependencies:

Bandersnatch

EC Embedded in BLS
Multi-scalar Multplication, de/Serialization
Implemented in Constantin

(Advaita) Banderwagon

Most logic is in here
Need to add Decaf representation: https://hackmd.io/wliPP_RMT4emsucVuCqfHA?view#A-Decaf-Style-representation-of-cofactor-4-incomplete-twisted-Edwards-curves
map to curve
Merge into Constantin

(Agnish) IPA

First stage: implement over Bandersnatch
Second stage: implement over Banderwagon
Look at Gnark or go-ipa
Merge into Constantin

Pedersen commitments

Depends on IPA
Lagrange interpolation

(Daniel) Verkle tree

Depends on IPA & Pedersen commitments
RNG (nimcrypto)
append to tree
compute root ...
Note: if we use nbindgen it's at "Verkle Tree" level

Comparative tests with other Verkle implementations

Integration in Nimbus-eth1 / testnet

You can assign 4 to me while I wait for access to the recording


nixos action_env

In some systems (nixos), action_envs are used to tell the sandbox environment where to find basic system libraries. With this change, the user replace for instance:
test          --test_env=NIX_LD=/run/current-system/sw/share/nix-ld/lib/ld.so        --test_env=NIX_LD_LIBRARY_PATH=/run/current-system/sw/share/nix-ld/lib
common      --action_env=NIX_LD=/run/current-system/sw/share/nix-ld/lib/ld.so      --action_env=NIX_LD_LIBRARY_PATH=/run/current-system/sw/share/nix-ld/lib
common --host_action_env=NIX_LD=/run/current-system/sw/share/nix-ld/lib/ld.so --host_action_env=NIX_LD_LIBRARY_PATH=/run/current-system/sw/share/nix-ld/lib

There are some weird behavior around use_default_shell_env which i don't want rules_oci to get involved in and this would cause more action cache for everyone even if they don't use Nix.
Note that if these variables are already exported from your shell env, you can simply do
common --test_env=NIX_LD --action_env=NIX_LD --host_action_env=NIX_LD
common --test_env=NIX_LD_LIBRARY_PATH --action_env=NIX_LD_LIBRARY_PATH --host_action_env=NIX_LD_LIBRARY_PATH

I figured out the issue is connected with the current packaging of bazel_7 on nixos. Specifically, https://github.com/NixOS/nixpkgs/blob/nixos-24.05/pkgs/development/tools/build-managers/bazel/bazel_6/actions_path.patch this patch doesn't seem to be applied.


skip nil and zero length hits, fix #556

Focus on the flowing multiread function code snippet
	var traces []*model.Trace
	for _, result := range results.Responses {
		if result.Hits == nil {
			return nil, errNilHits
		}
		spans, err := s.collectSpans(result.Hits.Hits)
		if err != nil {
			return nil, err
		}
		traces = append(traces, &model.Trace{Spans: spans})
	}
	return traces, nil

when trace id is invalid or not in the es store, we got response json as follows:
{
   "responses":[
      {
         "took":2,
         "timed_out":false,
         "_shards":{
            "total":15,
            "successful":15,
            "failed":0
         },
         "hits":{
            "total":0,
            "max_score":null,
            "hits":[]
         },
         "status":200
      }
   ]
}

and then the response json is unmarshalled to the elastic.MultiSearchResult struct, you will notice that the snippet
"hits":{
    "total":0,
    "max_score":null,
    "hits":[]
},

will not get nil result.Hits, but a zero length result.Hits.Hits.
When len(result.Hits.Hits) == 0,  collectSpans will return []*model.Span with zero length and no error.
In this case, got result traces as
[]*model.Trace{
    &model.Trace{
        Spans: {
        },
        Warnings: nil,
    },
}

this results that len(traces) == 0 not triggered, and then no errNoTraces  is returned.
As explained above, neither nil result.Hits nor zero length result.Hits.Hits should do the following collectSpans, just skip them.

Coverage remained the same at 100.0% when pulling 0ba832d6b8675f9febfae0b77a7a76e440a4a049 on NeoCN:master into 05c995819ce11f32093787a06215743a7c741fbe on jaegertracing:master.

Thanks!
Fixes #556


renderer: introduce IF_FITSCREEN and RSF_2D

Introduce IF_FITSCREEN to rescale image to the smaller size larger than screen.
The idea behind this feature is that we have images that should not be rescaled smaller than screen to look good:

minimaps,
UI background,
levelshot,
etc.

So for them we use IF_PICMIP, either directly in code, either with material keyword nopicmip.

Here is what happens once this feature is implemented AND (not done yet) the related images are configured to use IF_FITSCREEN:
]/listImages
------------------------------------------------------------------
num   width heigth layers mm  type format   wrap.t   wrap.s   name
------------------------------------------------------------------
63       50   1115      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/bg
64       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black
65     1041    685      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/duel
66       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black2
67     1250    833      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles1
68     1250    833      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles2
69      875    221      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/fog
121     960    540      1 no  2D   DXT1     t.clmp   s.clmp   meta/chasm/chasm

This is far better!
So this feature scales down images flagged with IF_FITSCREEN to the smaller size larger than (or equal to) the screen, this way the image is never underscaled compared to the screen, while not being too much large for nothing.
Made for:

https://github.com/Unvanquished/Unvanquished/pull/2999

Example with the chasm map being loaded, with lowest preset and 640×480 screen size:
]/listImages
…
41669771 total texels (not including mipmaps)
52.98 MB total image memory (estimated)
666 total images

I just tested it with a very old card (ATi R300 family) with limited memory and other resources.
Before:

After:

It works well. So I'll start to clean-up things to make it ready.

I added a cvar named r_imageFitScreen.
Values:

0: do nothing
1: downscale “fitscreen” images until it is not smaller than the screen size.
2: downscale “fitscreen” images to never be larger than screen size.

The 1 value is enabled by default.
The 2 value is meant to be used in lowest preset, where it's OK to take the risk to not look that good while not being that bad. In practice this is good enough: most UI images don't fill the whole screen, and the one that does are usually background images that can suffer a bit of downscaling.
The following examples are done with the game running on a 640×480 screen, on main menu.
Feature disabled with value 0 (same behavior as in current master):
]/listImages ui/assets/background
------------------------------------------------------------------
num   width heigth layers mm  type format   wrap.t   wrap.s   name
------------------------------------------------------------------
66      100   2230      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/bg
67       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black
68     2082   1371      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/duel
69       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black2
70     2500   1667      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles1
71     2500   1667      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles2
72     3500    886      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/fog
------------------------------------------------------------------
14561422 total texels (not including mipmaps)
13.88 MB total image memory (estimated)
129 total images
------------------------------------------------------------------

Feature enabled with default 1 value:
]/listImages ui/assets/background
------------------------------------------------------------------
num   width heigth layers mm  type format   wrap.t   wrap.s   name
------------------------------------------------------------------
63       50   1115      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/bg
64       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black
65     1041    685      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/duel
66       20   1200      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black2
67     1250    833      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles1
68     1250    833      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles2
69     1750    443      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/fog
------------------------------------------------------------------
3674585 total texels (not including mipmaps)
3.50 MB total image memory (estimated)
88 total images
------------------------------------------------------------------

Feature enabled with 2 value:
]/listImages ui/assets/background
------------------------------------------------------------------
num   width heigth layers mm  type format   wrap.t   wrap.s   name
------------------------------------------------------------------
63       25    557      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/bg
64       10    600      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black
65      520    342      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/duel
66       10    600      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/black2
67      625    416      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles1
68      625    416      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/circles2
69      437    110      1 no  2D   DXT5     t.clmp   s.clmp   ui/assets/background/fog
------------------------------------------------------------------
771835 total texels (not including mipmaps)
0.73 MB total image memory (estimated)
88 total images
------------------------------------------------------------------

Actually the game use RSF_NOMIP and the engine sets IF_NOPICMIP, in fact we would better have:

RSF_NOPICMIP and IF_NOPICMIP (do not automatically downscale the image with r_picmip) .
RSF_NOMIPMAP and IF_NOMIPMAP (do not generate mipmaps for the image).

I may also add some option to prevent the generation of useless mipmaps on such image.

In fact RSF_2D already does:
imageParams.filterType = filterType_t::FT_LINEAR;

Which already prevents the generation of mipmaps, as mipmaps are only generated with filterType_t::FT_DEFAULT.


Patch RDS loading vulnerability

Not sure if this was done. Just moving it to an Issue so it doesn't get forgotten.

We should handle CVE-2024-27322 separately from the 4.4 update/rebuild for multiple reasons, e.g.:

Preparing the R 4.4 rebuild might need extra steps I'm not aware of, so I can't say what our time frame on it will be.
We will continue to build for R 4.3 for an unset amount of time.
We currently build packages for R 4.3 and 4.2 on Unix (4.1 on Windows).
Packagers from other ecosystems likely handle this via backported patches -- which we can follow suit.

As for point 4, a quick search yields:

https://src.fedoraproject.org/rpms/R/c/b1a4e124f24f03916877bc116c1f9e89dd6c34a5?branch=f39
https://github.com/spack/spack/pull/44050/files

Since it appears to apply cleanly, we should just add https://github.com/r-devel/r-svn/commit/f7c46500f455eb4edfc3656c3fa20af61b16abb7.patch to our branches main, 4.2.x, 4.1.x.
Anyone able to submit PRs?
Originally posted by @mbargull in https://github.com/conda-forge/r-base-feedstock/pull/297#issuecomment-2127776232

Just saw #338. I shouldn't work from phone...


[FLINK-26767][python] Update code to use the changes for TableConfig

What is the purpose of the change
Adjust the python code to match the latest changes to the corresponding
TableConfig and EnvironmentSettings, so that python also uses the
new API methods, and can benefit from the app config + env config view
that TableConfig provides.
Brief changelog:

Use directly set() on the TableConfig instead of TableConfig.get_configuration.set_string()
Use the new get() on the TableConfg instead of TableConfig.get_configuration.get_string() so that, transparently, TableConfig#rootConfiguration is also used to read options set in the environment.

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

@matriv please give this PR a proper JIRA issue and component tag. We should stop opening PRs for hotfixes and this one is definitely more than just a hotfix. It is actually part of the previous Java JIRA.

@twalthr Thx @twalthr, Sorry for the delay, I've created a JIRA subtask for it and adjusted the title and the description.

@dianfu Thanks a lot for your help to resolve the issues with the kubernetes end-to-end test!

@dianfu I addressed the comments already, rebased with master, and let it build one more time.

Closed via aa28cd73e4467968af9df70701fbd48541403bdb


command: Support custom Prelude

Fixes #725
I have:

[x] Based work on latest develop branch
[x] Looked for lint in my changes with hlint . (lint found code you did not write can be left alone)
[x] Run the test suite: $(nix-build -A selftest --no-out-link)
[ ] (Optional) Run CI tests locally: nix-build release.nix -A build.x86_64-linux --no-out-link (or x86_64-darwin on macOS)

If I understand correctly, this PR would allow me to use a custom prelude like relude without necessarily having to use No Implicit Prelude in the app project?

@srid See #725 for how @maralorn uses this.

@srid Yeah, you can use NoImplicitPrelude to include your own Prelude (or Relude). Have a look at the relude README, they explain the various ways to do that.

Yup I already use relude. That and ormolu have been the two new additions to my obelisk apps of late.


C extension iterator type doesn't read special char correctly within a multiple keys' container

To reproduce this,
with open("file_below") as file:
    content = ion.load(file)
    print(content)

read file below,
{
  field1:[
    {
      language_tag:en_US,
      value:"💗This fails to parse only when the string is long enough? I don't fully understand what is going on. The field2 are impacting the parsing of this string?"
    },
    {
      language_tag:en_US,
      value:"Here is the weird apostrophe -> ’   This file can be parsed if the special characters are removed or if some of these strings are shortened or removed..."
    }
  ],
  field2:[
    {
      language_tag:en_US,
      value:"Why does this information interfere with the field1 - I have to put words here to demonstrate the error - testtesttesttesttesttesttesttesttesttesttesttesttesttest"
    },
    {
      language_tag:en_US,
      value:"Why does this information interfere with the field1 - I have to put words here to demonstrate the error - testtesttesttesttesttesttesttesttesttesttesttesttesttest"
    },
    {
      language_tag:en_US,
      value:"Why does this information interfere with the field1 - I have to put words here to demonstrate the error - testtesttesttesttesttesttesttesttesttesttesttesttesttest"
    }
  ]
}

it will raise something like,
IERR_READ_ERROR

Related to https://github.com/amzn/ion-python/issues/213


RELEASE MIME4J 0.8.6

Post for the release
Update of the download page

Merging in order to streamline the relase.
If you have some comments, I promise I will handle them, but asynchronously...


Upload to a single package on Bintray

This simplifies maintenance and configuration, especially when it comes to syncing to Maven Central.
For an example of what the result looks like: https://bintray.com/abesto/zipkin-test/zipkin/view#files
The artifacts are not published (=made public) on Bintray, expect another PR on that.
Side-note: uploading stuff takes long. Most of the fat jars are ~80MB, and they have a .zip and a .tar friend.

:clap:


Accept React 17.x

Hi, seing this repo has no recent activity, we are still using it daily with React 17 with no issues, but I'm trying to remove our warnings.

hi @ljharb

The last commit is almost 2 years old, I don't see a CONTRIBUTING file either, and most of the PRs are being closed with a single comment like this. On NPM the last package version is 4 years old.
I'm very thankful for what react-dates it has brought to the open source, but React 16 development ended 3 years ago and React 17 was released about the same date (and is also not actively maintained either way), so if it's unacceptable to support it, this package definitely feels abandoned to me.
I see no docs on testing, and I am not allowed to run the tests on the CI anyway. If you point me in the right direction I might try to add React 17 to the testing workflow and see how it goes :slightly_smiling_face: As I said, we've been using it in production for a while with React 17.x and encounter no issue.

Recency is irrelevant; this package is maintained.
we use enzyme for tests; enzyme doesn’t support react > 16 yet, so we’re blocked from doing so. You’re welcome to take a look at enzyme and see if you can get the open PR for react 17 support to have passing tests.

I've seen the discussions on the enzyme repository about React 17+ compat, I understand that sadly this isn't going anywhere. Thank you for your time and dedication to be responsive on these subjects nevertheless!
May I suggest indicating in the README of this repo that React 17 & up won't be supported unless https://github.com/enzymejs/enzyme/issues/2429 is merged AND tests are updated here to verify the compatibility? Again, my only complaint here is that de facto this works great on my React 17 project, I just want to avoid the npm i -f all the time because of the peerDependecy error.

Tests won’t need to be updated here beyond just adding the version to peer deps, once enzyme supports it.
I’m very happy to hear it works; that suggests tests will Just Work at that future time.


how to train using multiple gpus?

hi, dear authors, thank you for sharing you cool model. i am trying to train the model on my datasets to figure it out how it works well.
the problem is that although it can run with 1 gpu (A-100-unique), the gpu capactiy will soon be filled and the train goes very slowly. so i  change to 2 gpus, but an error is reported and i cannot fix it.  could you please give me some suggestions  how to solve it ?
thanks a lot

Could you give a bit more of the error message and what version of the packages you are running please?

@PeeInTheWind Hi, did you get it to work?