amdgpu-pro: 16.50 -> 16.60

Motivation for this change
Things done

[ ] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] Linux

[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

So far I've only tested this on linux-4.8.13 and Xorg-1.18.4.  Things to test:

Boots on

[x] R9 290
[ ] Polaris

[x] KMS
[x] Xorg
[x] x64 GL (glxgears)
[ ] x86 GL
[ ] x64 Vulkan
[ ] x86 Vulkan
[ ] x64 OpenCL
[ ] x86 OpenCL
[ ] x64 VDPAU **FAILED
[ ] x86 VDPAU

BTW, do you know anything about support for xorg-server-1.19.x?

@vcunat There is none, unfortunately.  We'll have to roll it back or wait for AMD.

Well, we have fglrxCompat mechanism to force 1.17, so adding something like amdgpuCompat would be easy.

I had to use Linux 4.4 because 4.8 has been removed. And it didn't quite work, so here's a log dump: http://pastebin.com/qnzZwiXE
BTW I tried the amdgpu and ati drivers and they too fail, no idea why ..

@plchldr thanks.  I'll see about patching this for 4.9.

@vcunat Thanks.  I generalised fglrxCompat to abiCompat, and used it for both drivers.  I know xorg is still 1.18 in this branch, but it should now survive an update.  BTW I couldn't actually build fglrx for either linux 4.4 or 4.9 due to compile errors in the kernel module.
@plchldr I applied a patch someone sent me for the arch driver.  It'll probably clean it up a bit, but it's very simple, and it now builds on 4.9.6.  I get a KMS switch on tty, but X crashes in the dri driver: http://ix.io/1RrB.

Well, either the fglrx users have older kernels or there isn't anyone interested enough anymore.

@corngood Do you want me to try again?   I'll update that when I get home.

http://pastebin.com/aS3gLxnm
The monitor shows slowly changing colors, which I've only seen after messing around with CRU (EDID overrides) under Windows.

@plchldr Well I've never seen anything like that.  Someone on Arch said he needed to set amdgpu.dc=0 in kernel flags to get tty, but he still had the same crash in Xorg.
I'm thinking it's something like an incompatibility between the amdgpu-pro libdrm and linux-4.9 drm syscalls?

@plchldr My next step is to roll back the kernel to 4.8.  I'm expecting it to work, but I haven't tested that change in isolation.

A new libdrm was released ~2 days ago, if that could be related.  I plan to stage it soon.

@plchldr I've updated it so it will use 4.8 (as long as you don't override kernelPackages in your config).  Could you give it a shot?  GL and vulkan are working ok for me.
@vcunat I reverted the change that removed 4.8, and set kernelPackages in the driver module.  What do you think of this approach?

@corngood: there's a security problem – 4.8 isn't supported upstream anymore, and it will probably become vulnerable within weeks.  If it isn't vulnerable already and someone adds support for 4.9 soon, it might be a simple short-term solution.
Longer-term possibility: take kernel patches e.g. from Ubuntu 16.10, as it's to be supported until July.

I've looked through AMDGPU-PRO as I've touched graphics drivers lately and was interested how things are on AMD side. I noticed that Vulkan ICDs contain paths like /opt/amdgpu-pro/lib/i386-linux-gnu/amdvlk32.so. Those should probably be patched (not sure how it works like this).

@vcunat AMD has been updating this driver a several times a year, so hopefully the next release will support newer kernels.  Also if by some miracle they get merged upstream this may become userspace only.
@abbradar postFixup is patching the manifests to nix store paths, and doing some really sketchy replacement of /usr/lib/ paths in string literals.  The module creates /run/lib (in the activation script) for this purpose.  I should actually go and verify this is still needed with 16.60.

Oh, I got it now -- it replaces the string in icd64 but not in icd32 for 64-bit version. Maybe you want to remove the other one? Just a passerby remark though -- feel free to ignore ~_^.

@abbradar yeah I believe the reverse is also true for the 32 bit library.  It doesn't break anything, but it causes warnings in loader debug, so I'll remove the manifests for the other arch when I get around to testing i686.

http://pastebin.com/FbF31y6t
I don't really see a change, still just alternating colors.
Compiling Linux 4.8 took quite a while .. is it even necessary though? amdgpu-pro-16.50 works fine with Linux 4.4.
BTW the next release is supposed to land in about 2 months and is aimed at Linux 4.8 (???)

@plchldr There are no custom kernel configs, so it's just compiling it because it's not in the cache any more.  If we did merge this it would get cached again.
You mentioned trying this driver with 4.4 and it didn't work, right?
I really don't know what's going on with your colours, or all the EDID errors.  I've talked to some Arch and Gentoo people about this driver, and I haven't heard of anything like that, but I'm not sure if any of them have Polaris.
Do you have another display you can test?  Other than that, maybe make sure the firmware it's loading is actually symlinked to amdgpu-pro and not just the upstream one?

Sadly I only have this one monitor (QNIX2710). I guess the problem here is that it lacks a "scaler" and relies on the GPU doing the job, which will hopefully allow me to use Freesync soon like on Windows .. I guess this might indeed be a problem with the monitor and not with Polaris.

So I gave this a try on linux-4.4, and the module builds, but I get:
amdkcl: exports duplicate symbol drm_atomic_helper_duplicate_state (owned by drm_kms_helper)

I'm sure that particular problem could be fixed, but I don't really think it's worth putting effort into.

I got a fix from the guy who originally did the linux-4.9 patch.  Turns out it was just a small typo.  I was ready to give up, but luckily he wasn't.
So this should now work on either 4.8 or 4.9.  Kernel rollback is gone.
@plchldr I kind of doubt this will fix your problems, but let me know if you get a chance to try it.
@vcunat Any thoughts on the abiCompat thing?

Oh, I also added a patch to fix the remaining warnings and enabled -Werror in the hopes that it will catch more upstream breakage.  This is virtually guaranteed to need more work with each kernel release.

abiCompat seems very good to me :-) I'm just about to test xorg-server-1.19.1 this week.

Ok, well I'm happy with this now, so I removed WIP.
I've tested with linux 4.8 and 4.9.  4.10 will probably require more patches, but I can coordinate that with other distros.  I'll also make sure to test it after Xorg 1.19 goes in.

Alright, is there some easy way to keep 16.50 and still get updates for unstable?

@plchldr You should be able to take the old default.nix and callPackage it from your packageOverrides, or revert the 16.60 change in git and rebase on unstable if you already have a git repo for your nixpkgs.
Did you try last version I posted with linux 4.9?  Maybe we can still get it working.

I tried, but there was no change. I'm not too interested in this particular release and assume the problem was introduced upstream anyway .. so thanks for the tip! That much I should be able to do.

I'm having problem using this with an AMD RX 470 card on 64-bit Linux. Here is what I did:

add services.xserver.videoDrivers = [ "amdgpu-pro" "modesetting" ]; to /etc/nixos/configurations.nix.

rebuild nixos:

nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --update
nixos-rebuild switch -I nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs

However I get a kernel panic after reboot, right at the point where kernel tries to load amdgpu module. Did I do something wrong? Do I need to blacklist some kernel module or something? Any help is greatly appreciated!

@ninegua Well that's not good.    Do you have any kernel related things in your config?
I have:
boot.kernelPackages = pkgs.linuxPackages_latest;

Which should use 4.9.something.  However, I don't think the module even compiles against 4.4 (the default last time I checked).
Were you using amdgpu-pro before this update?

@corngood Thanks for the quick reply . This is a new computer I'm building, so this is first time I am trying to get amdgpu-pro working. I'll try the kernelPackages thing.
Meanwhile, here is a photo showing the trace, see if you can spot anything wrong.

@ninegua Hmm, I see a reference to 4.9.8 in there.  I haven't tested that specific version yet, it looks like you are already on a '_latest' kernel.  Could you share your configuration.nix (minus any personal info)?

Here is my full configurations.nix:
{ config, pkgs, ... }:
{
  imports =
    [ # Include the results of the hardware scan.
      ./hardware-configuration.nix
    ];
  boot.loader.gummiboot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;
  boot.supportedFilesystems = [ "cifs" "exfat" "vfat" ];
  boot.kernelPackages = pkgs.linuxPackages_latest;
  networking.hostName = "agent001"; # Define your hostname.
  time.timeZone = "US/Pacific";
  environment.systemPackages = with pkgs; [
    curl wget pciutils lm_sensors which inetutils psmisc
  ];
  services.openssh.enable = true;
  services.xserver.enable = true;
  services.xserver.videoDrivers = [ "amdgpu-pro" "modesetting" ];
  system.stateVersion = "16.09";
  nixpkgs.config.allowUnfree = true;
}

@ninegua Ok, looks like the kernelPackages is unnecessary.  It's been the default since late January.  I'm going to test 4.9.8 now.

@corngood which kernel were you on? How do you fix a particular kernel version when rebuilding nixos?

@ninegua I was on 4.9.6.  You can't really fix a specific version, I was just out of date by a couple of weeks.  You can pick between the packages in nixpkgs, which right now include 4.4, 4.9, etc.
I just updated to latest master, which should be close to what you're using, and tested it with 4.9.8.  Everything seems to be working fine for me, but I'm using a 290...
Can you see if you can get a full text log from one of your boots where it crashed?  You can use journalctl -b -1 to get the previous boot, etc.  When does it crash exactly?  It should go:

Stage 1
Stage 2
KMS transition (tty goes high res)
Xorg startup

I'm guessing it's either at 3 or 4, but if you see the tty go high res before the crash, then it would be 4.
The only real difference in my config is that I just have the one videoDriver (no modesetting), but that shouldn't make a difference.

tty looks high res in your photo, but I'm still curious if you actually see it change modes and if it crashes immediately on the mode change.

@corngood It is actually crashing while loading display-manager. Here is part of the log:
Feb 07 19:38:42 agent001 display-manager[1370]: (II) LoadModule: "modesetting"
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Loading /nix/store/dwijal6cqxp3d1nhfkvy3rrl5wqpkrb7-amdgpu-pro-16.60-4.9.8/lib/xorg/mod
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Module modesetting: vendor="X.Org Foundation"
Feb 07 19:38:42 agent001 display-manager[1370]:         compiled for 1.18.4, module version = 1.18.4
Feb 07 19:38:42 agent001 display-manager[1370]:         Module class: X.Org Video Driver
Feb 07 19:38:42 agent001 display-manager[1370]:         ABI class: X.Org Video Driver, version 20.0
Feb 07 19:38:42 agent001 display-manager[1370]: (II) LoadModule: "amdgpu"
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Loading /nix/store/dwijal6cqxp3d1nhfkvy3rrl5wqpkrb7-amdgpu-pro-16.60-4.9.8/lib/xorg/mod
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Module amdgpu: vendor="X.Org Foundation"
Feb 07 19:38:42 agent001 display-manager[1370]:         compiled for 1.18.4, module version = 1.2.99
Feb 07 19:38:42 agent001 display-manager[1370]:         Module class: X.Org Video Driver
Feb 07 19:38:42 agent001 display-manager[1370]:         ABI class: X.Org Video Driver, version 20.0
Feb 07 19:38:42 agent001 display-manager[1370]: (II) modesetting: Driver for Modesetting Kernel Drivers: kms
Feb 07 19:38:42 agent001 display-manager[1370]: (II) AMDGPU: Driver for AMD Radeon:
Feb 07 19:38:42 agent001 display-manager[1370]:         All GPUs supported by the amdgpu kernel driver
Feb 07 19:38:42 agent001 dhcpcd[1378]: enp7s0: waiting for carrier
Feb 07 19:38:42 agent001 kernel: IPv6: ADDRCONF(NETDEV_UP): enp6s0: link is not ready
Feb 07 19:38:42 agent001 kernel: IPv6: ADDRCONF(NETDEV_UP): enp7s0: link is not ready
Feb 07 19:38:42 agent001 display-manager[1370]: (II) modeset(0): using drv /dev/dri/card0
Feb 07 19:38:42 agent001 display-manager[1370]: (II) [KMS] Kernel modesetting enabled.
Feb 07 19:38:42 agent001 display-manager[1370]: (II) AMDGPU(G0): ShareFD: disabled
Feb 07 19:38:42 agent001 display-manager[1370]: (DB) AMDGPU(G0): open fd=11
Feb 07 19:38:42 agent001 display-manager[1370]: (II) modeset(0): display fd=14 render fd=14
Feb 07 19:38:42 agent001 kernel: vgaarb: device changed decodes: PCI:0000:03:00.0,olddecodes=io+mem,decodes=none:owns=none
Feb 07 19:38:42 agent001 display-manager[1370]: (II) modeset(0): Creating default Display subsection in Screen section
Feb 07 19:38:42 agent001 display-manager[1370]:         "Screen-modesetting[0]" for depth/fbbpp 24/32
Feb 07 19:38:42 agent001 display-manager[1370]: (==) modeset(0): Depth 24, (==) framebuffer bpp 32
Feb 07 19:38:42 agent001 display-manager[1370]: (==) modeset(0): RGB weight 888
Feb 07 19:38:42 agent001 display-manager[1370]: (==) modeset(0): Default visual is TrueColor
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Loading sub module "glamoregl"
Feb 07 19:38:42 agent001 display-manager[1370]: (II) LoadModule: "glamoregl"
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Loading /nix/store/dwijal6cqxp3d1nhfkvy3rrl5wqpkrb7-amdgpu-pro-16.60-4.9.8/lib/xorg/mod
Feb 07 19:38:42 agent001 display-manager[1370]: (II) Module glamoregl: vendor="X.Org Foundation"
Feb 07 19:38:42 agent001 display-manager[1370]:         compiled for 1.18.4, module version = 1.0.0
Feb 07 19:38:42 agent001 kernel: BUG: unable to handle kernel NULL pointer dereference at<PHONE_NUMBER>0000a8
Feb 07 19:38:42 agent001 kernel: IP: [<ffffffffc09a3d60>] amdttm_pool_populate+0x110/0x5e0 [amdttm]

Could you try with only "amdgpu-pro" in your videoDriver list (i.e. remove modesetting) and paste the entire log on pastebin or something?  There's something weird going on with the drivers there.

@corngood Indeed! It waws modesetting that is causing the crash. Without it, the machines boots fine, but still, fails to start the graphics system. Here is a link to the error log http://pastebin.com/kLCenHy3
lspci|grep -i amd shows the device:
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480] (rev cf)
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device aaf0

BTW, a side question, @corngood do you think it makes sense to retain necessary headers (e.g., OpenCL) from the amdgpu-pro build? Or do I have to go through my own installation of the AMD SDK to get it?

@ninegua You shouldn't need anything from amdgpu-pro to target OpenCL.  I would look at some of the apps in nixpkgs that use opencl to see how they get the headers/libs.
As for your xorg log, I've never seen (EE) No devices detected. before.  Do you have more than one gpu?
Also to double check, you have exactly services.xserver.videoDrivers = [ "amdgpu-pro" ];?
I have to call it a night, but you can always play with the open source drivers by using "amdgpu" instead of "amdgpu-pro".  They are pretty decent these days.

@corngood mystery solved! I had to use a jump to disable the onboard VGA in order to get the AMD graphics card working. @corngood thanks a lot for the help, and for being patient with me here!
On the other hand, OpenCL doesn't work. Somehow there is a default /run/opengl-driver/lib/libOpenCL.so.1, which (I presume is from Mesa?) doesn't work. I also tried the libOpenCL.so.1 from amdgpu-pro, as well as the one from AMDAPP-SDK 3.0 downloaded from AMD site. Neither works. Oh well, guess there is more homework for me to do.

Ok, an update on the OpenCL stuff if anyone is interested:

It turns out that I need to properly set OPENCL_VENDOR_PATH environment variable in order for OpenCL programs to work. Under this directory there must be a amdocl64.icd file containing a single line of text that reads llibamdocl64.so.

Also, I had to use both the libOpenCL.so and libamdocl64.so from amdgpu-pro installation, the binaries from AMD APP SDK do not seem to work for me.

Likely it also requires having X running, which would have loaded amdgpu-pro drivers.

Anyway, I'm happy to report success, that is, until my other RX 470 cards arrive at the door tomorrow :-) I'm going to try multiple GPU setup, and see how far I can push the system.

For reference, master now switched to xorg-server-1.19.1 by default, since 3348905cdecf.

@vcunat thanks for the heads up.  I just checked, and all is well on master.  Next up, making this survive linux-4.10.

Well, 4.9 will remain the default kernel for several months at least, so I suppose there won't be so much hurry.

Looks like the build process is broken in both the latest nixos and nixpkgs unstable channel. Here is what I got:
building path(s) ‘/nix/store/kvd6j2vbnx36dvk7hxq1mxv8n0qxci1f-amdgpu-pro-16.60-379184.tar.xz’
 85 47.9M   85 40.8M    0     0  2879k      0  0:00:17  0:00:14  0:00:03 4727k
trying https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-16.60-379184.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 47.9M  100 47.9M    0     0  3004k      0  0:00:16  0:00:16 --:--:-- 4903k

fetching path ‘/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev’...
  6  115M    6 7206k    0     0  4018k      0  0:00:29  0:00:01  0:00:28 4073k
*** Downloading ‘https://cache.nixos.org/nar/1crw3610bf0jcrqxn15aqqfp3pxp0y7hng8xirwn6cjjcak9ys77.nar.xz’ (signed by ‘cache.nixos.org-1’) to ‘/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev’...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12.3M  100 12.3M    0     0  2190k      0  0:00:05  0:00:05 --:--:-- 2535k

100  115M  100  115M    0     0  6279k      0  0:00:18  0:00:18 --:--:-- 7269k
building path(s) ‘/nix/store/pca8ak053rzpb6rfzyncwrvim77msj53-amdgpu-pro-16.60-4.10.1’
unpacking sources
unpacking source archive /nix/store/kvd6j2vbnx36dvk7hxq1mxv8n0qxci1f-amdgpu-pro-16.60-379184.tar.xz
source root is amdgpu-pro-16.60-379184
../amdgpu-pro-dkms_16.60-379184_all.deb
...
/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root
configuring
no configure script, doing nothing
building
/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184 /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root
patching script interpreter paths in pre-build.sh
pre-build.sh: interpreter directive changed from "/bin/bash" to "/nix/store/010yd8jls8w4vcnql4zhjbnyp2yay5pl-bash-4.4-p5/bin/bash"
/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root
make flags: SHELL=/nix/store/010yd8jls8w4vcnql4zhjbnyp2yay5pl-bash-4.4-p5/bin/bash -C /nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/build modules M=/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184
make: Entering directory '/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/build'
  CC [M]  /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu/amdgpu_drv.o
In file included from /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu/../backport/include/kcl/kcl_amdgpu.h:5:0,
                 from /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu/../backport/backport.h:5,
                 from <command-line>:0:
/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu/amdgpu.h:37:25: fatal error: linux/fence.h: No such file or directory
compilation terminated.
make[4]: *** [/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/source/scripts/Makefile.build:295: /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu/amdgpu_drv.o] Error 1
make[3]: *** [/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/source/scripts/Makefile.build:553: /tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184/amd/amdgpu] Error 2
make[2]: *** [/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/source/Makefile:1490: _module_/tmp/nix-build-amdgpu-pro-16.60-4.10.1.drv-0/amdgpu-pro-16.60-379184/root/usr/src/amdgpu-pro-16.60-379184] Error 2
make[1]: *** [Makefile:150: sub-make] Error 2
make: *** [Makefile:24: __sub-make] Error 2
make: Leaving directory '/nix/store/h2kvglvlj17ih6spjw7ay9l3m9l8nkgp-linux-4.10.1-dev/lib/modules/4.10.1/build'
builder for ‘/nix/store/c0kjivx1m7zq1kshis90kwkc3nvd7xks-amdgpu-pro-16.60-4.10.1.drv’ failed with exit code 2
error: build of ‘/nix/store/c0kjivx1m7zq1kshis90kwkc3nvd7xks-amdgpu-pro-16.60-4.10.1.drv’ failed

Any idea on how to fix this?

Looks like it's going to need updating to compile against Linux 4.10.  For now you should use 4.9.  Is it still the default?
I did manage to get it to compile with 4.10-rc7 at one point, but I had stability problems and didn't have time to investigate them.

@corngood What is the best practice to pin my nixos (or nixpkgs) channel to a particular version, such as kernel 4.9?

@ninegua It looks like 4.9 is still the default in master.  Do you have anything in your config that would override that, such as boot.kernelPackages = pkgs.linuxPackages_latest?
If so, just remove it.  If not, maybe post your config?
We could add something to the amdgpu-pro module to set 4.9 as the default kernel, but that wouldn't help if it's overridden.  We could also add an assert for > 4.9 until we get it fixed.  Then you'd at least get a more helpful error.

Ah yes, I had that line in my configuration.nix. After commenting it out, it is building with kernel 4.9 with success. Thank you @corngood

Our policy is to use the latest longterm kernel as the default; I think 4.9 branch will stay so for months.


Release @google-cloud/asset v0.2.1

This pull request was generated using releasetool.

Release is at https://github.com/googleapis/nodejs-asset/releases/tag/v0.2.1

The release build has started, the log can be viewed here. :sunflower:

:egg: You hatched a release! The release build finished successfully! :purple_heart:


numberOfLines={1}  and  alignSelf: 'flex-start' when we set this text is break middle of in Android

Description
when we use this
<Pressable onPress={() => {
                    console.log("SDfsdfsdf +" + Math.random())
                }} style={{  alignSelf: 'flex-start' }}>
                    <View style={{   }}>
                        <Text
                        numberOfLines={1}
                        style={{  }}  onTextLayout={onTextLayout}>{'From<EMAIL_ADDRESS>From<EMAIL_ADDRESS>} </Text>

                    </View>
                </Pressable>

this not taking a full row. but when we set flex 1 it will take. but if the text is small when i click empty space pressable is triggering.
React Native Version
0.70.13
Output of npx react-native info
System:
OS: macOS 14.0
CPU: (8) arm64 Apple M1
Memory: 1.19 GB / 16.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.18.1 - ~/.nvm/versions/node/v16.18.1/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v16.18.1/bin/yarn
npm: 8.19.2 - ~/.nvm/versions/node/v16.18.1/bin/npm
Watchman: 2<IP_ADDRESS> - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.13.0 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 23.0, iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0
Android SDK: Not Found
IDEs:
Android Studio: 2021.3 AI-213.7172.25.2113.9123335
Xcode: 15.0/15A240d - /usr/bin/xcodebuild
Languages:
Java: 11.0.17 - /Users/pradeepkumar/.jenv/shims/javac
npmPackages:
@react-native-community/cli: Not Found
react: 18.1.0 => 18.1.0
react-native: 0.70.6 => 0.70.6
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
<Pressable onPress={() => {
                    console.log("SDfsdfsdf +" + Math.random())
                }} style={{  alignSelf: 'flex-start' }}>
                    <View style={{   }}>
                        <Text
                        numberOfLines={1}
                        style={{  }}  onTextLayout={onTextLayout}>{'From<EMAIL_ADDRESS>From<EMAIL_ADDRESS>} </Text>

                    </View>
                </Pressable>

if you want you can increase the letterspacing also we will able to reproduce even small text.
Snack, screenshot, or link to a repository
https://snack.expo.dev/@pradeepero/text-wrap-issue-on-android?platform=android

I created the TextImproved component which extends and patches react-native Text.
you can install it with yarn add react-native-improved
More info in the readme of https://github.com/fabriziobertoglio1987/react-native-improved

Hello,
Thanks for the issue. I have been contributing to facebook/react-native for 4 years and specialize in the Text/TextInput components. I currently have 58 facebook/react-native PRs:
https://github.com/facebook/react-native/pulls?q=is%3Apr+author%3Afabriziobertoglio1987+
It is the suggested approach from the react-native core team (see this discussion).
I'm publishing several fixes for Text and TextInput component in a separate library react-native-improved.

The Component is based on ReactTextView, it is the same implementation from react-native.
It will include several bug fixes.
You can use the library until the PR is merged and released with react-native.
You can use side by side both components from react-native and react-native-improved, depending on where you need the fix.
I will also publish the PR to facebook/react-native (daily fixes and releases).

The advantages would be:

Increased engagement with the community, issues are quickly fixed.
No limitations when merging PRs (react-native main branch is used on facebook marketplace).
Only Meta employees can merge and review facebook/react-native PRs.
Allows us to further experiment and develop react-native.

 I'm working on a list of priorities. Thanks

This PR is included in the react-native-improved library:
react-native-improved

Supports ONLY react-native 0.73.
Supports only old architechture (new architechture is WIP)

Set-up
In package.json
 "scripts": {
+  "postinstall": "yarn run react-native-patch"
 }

Then
npm
npm install react-native-improved --save-dev

yarn v1
yarn add react-native-improved --dev

Is there something about a single line of truncated text that behaves differently from multiple lines of truncated text? Wouldn't we want this same logic to be accounted for in both scenarios?
For example, wouldn't we want to handle Case 1 and Case 3 in the example below?
# Case 1: Single Line
| Lorem ipsum dolor sit amet… |

# Case 2: Multiple Lines (Short Truncated Line)
| Lorem ipsum dolor sit amet, |
| consectetur adipiscing...   |

# Case 3: Multiple Lines (Long Truncated Line)
| Lorem ipsum dolor sit    |
| ametfoobar, consectetur… |

@yungsters
A possible solution would be to introduce the option none to the android prop textBreakStrategy. The option already exist for iOS (lineBreakStrategyIOS).

An example for single line text (PR https://github.com/facebook/react-native/pull/41770):

# Case 1: Single Line textBreakStrategy="simple"
| Lorem ipsum dolor sit amet… |

# Case 1: Single Line textBreakStrategy="none" (respects yoga layout width)
| Lorem ipsum dolor sit amet, consectetur adipiscing...  |

An example for multiline text with an implementation similar to PR https://github.com/facebook/react-native/pull/41770.

# Case 1: Single Line textBreakStrategy="simple"
| Lorem ipsum dolor sit amet… |

# Case 1: Single Line textBreakStrategy="none" (respects yoga layout width)
| Lorem ipsum dolor sit amet, consectetur adipiscing...  |

# Case 2: Multiple Lines (Short Truncated Line) textBreakStrategy="simple"
| Lorem ipsum dolor sit amet, |
| consectetur adipiscing...   |

# Case 2: Multiple Lines (Short Truncated Line) textBreakStrategy="none"  (respects yoga layout width)
| Lorem ipsum dolor sit amet, consectetur adipiscing esqu |
| Quisque vitae ex ut velit dapibus pellentesque.  esqu...|

Should I start working on this? Thanks

@yungsters how can I help moving this PR forward? Thanks a lot.

TL;DR Expenxify https://github.com/Expensify/App/issues/43068 mentioned it is no longer reproducible. @fabOnReact will try to reproduce by following instructions on the PR.
@fabOnReact Let's continue the discussion on the PR https://github.com/facebook/react-native/pull/41770

If you are moving the discussion to https://github.com/facebook/react-native/pull/41770, can we close this PR?


improve cruddy syncronization

I cannot test this as I do not have mine yet. I am hoping to create a socketcan driver at some point.

Hey @shawnl thanks for the PR. Ends up @eiannone did something similar in his commit, have a look and let me know what you think.
https://github.com/CANBus-Triple/CANBus-Triple/commit/58e933105117bb940b1502a6165a8505053c5da8
Also for SocketCAN driver this looks really nice. Just need to modify it to work with three controllers, but the hardware is very similar. I'm working on getting it running on the CBT.
https://github.com/fabiobaltieri/open-usb-can


Progress bar?

It would be a nice thing to have a progress bar while uploading ! Or is it something that I've missed ?

Progress bars would definitely be cool, but unfortunately isn't supported in the library right now/yet.

Not necesseraly a bar per se, but a speed and progress indication of any kind would of great relevance…

Hi
I added this to the libary which vimeo.py using to upload the videos.. hope they will approve my pull request :)
After they will approve it to their repo I will Add the option to use it directly from vimeo.py
https://github.com/tus/tus-py-client/pull/41

Hi
I added this to the libary which vimeo.py using to upload the videos.. hope they will approve my pull request :)
After they will approve it to their repo I will Add the option to use it directly from vimeo.py
https://github.com/tus/tus-py-client/pull/41


substrate-client shouldn't depend on substrate-telemetry

Some telemetry reports are performed inside of the client, while some others (the majority) are performed outside of the client by adding some hooks.
The system should be uniformed, and in my opinion it makes more sense to not depend on the telemetry from the lower-level parts of the code.

Closing as irrelevant now that substrate-client has disappeared.


Fabfile collect static during update

Codecov Report

Merging #575 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master    #575   +/-   ##
======================================
  Coverage    92.9%   92.9%
======================================
  Files          78      78
  Lines        2593    2593
  Branches        2       2
======================================
  Hits         2409    2409
  Misses        182     182
  Partials        2       2

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e05cabc...20e3aa3. Read the comment docs.


Update windows_shortcuts.json

Adding pycharm to the IDE list

Please refrain from editing windows_shortcuts.json directly, and instead follow the instructions in the "Contributing" section of the readme and make the changes in the appropriate jsonnet file.


View Origin screen shows "not installed" when performVersionCheck is false

If the server has set performVersionCheck to false, pressing O to view your origins while on the server shows this message:

Fixed in 1.0.1


[WIP] Update to v74.10.0

Closing - I'm just going to rebase and push straight to master with a pair instead.


Add AcroForms output support

This is a new feature.
What kind of change does this PR introduce?
Old scripts should not be affected. Old unit tests continue to run.
What is the new behavior?
Can now create Fields and Widget Annotations. Widget Annotations uses the existing annotations code.
Checklist:

[yes] Tests (preference for unit tests)
[yes ] Documentation
[no] Update CHANGELOG.md
[yes] Ready to be merged <!-- In your opinion, is this ready to be merged as soon as it's reviewed?

Changelog

Add support for named JavaScripts
Added Widget Annotation and Field support for AcroForms

Thanks for your work. This is an important feature
Aside from the review requests, the new method names should be discussed.

there's need to call initAcroForm? Why not just initForm?
widgetAnnot > widgetAnnotation ?
formNoToggleToOffButton seems a bit ugly

For reference below are the reference for other pdf libraries:
https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/model/interactive-forms/formfieldcollection
https://help.accusoft.com/ImageGear-Net/v24.11/Windows/HTML/webframe.html#topic614.html

@devongovett @liborm85

Thanks Luiz for the comments, all good ones. I expected to make changes of
this sort. The method name suggestions seem good too.
I had a bit of trouble with jest, thus the jest config file change. I will
try to sort this out in a clean clone. Also vscode wasn't doing the right
formatting using the config as defined. I can run prettier over the code.
As I've been mostly working on the same project (for work) for the past 2
years, I'm a bit rusty on polishing project config and setup, especially
for deployable modules.
jim
On Thu, Jul 25, 2019 at 3:22 AM Luiz Américo<EMAIL_ADDRESS>wrote:

@devongovett https://github.com/devongovett @liborm85
https://github.com/liborm85
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/foliojs/pdfkit/pull/1002?email_source=notifications&email_token=AABFWQGFKFLUHHEA4RBCQJLQBF5G7A5CNFSM4IGU32Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD2ZBWDY#issuecomment-514988815,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABFWQD67UZSGZSYZV573GDQBF5G7ANCNFSM4IGU32QQ
.

I had a bit of trouble with jest, thus the jest config file change.

This can be added as a new PR. Just to make the PR focused
You can have those changes in your local repository just do not commit them

I will try to sort this out in a clean clone

There's no need to do clean clone, just remove those files from the commit

Also vscode wasn't doing the right
formatting using the config as defined.

If you add the vscode prettier plugin it will grab the project prettier config and format accordingly (there's a option to only enable on projects with prettier config)

Prettier has evolved since I looked at it. It is more usable (less
opinionated) now. Installed, and I disabled my eslint/tslint formatters.
fyi, It could be a week before I resubmit. There's a few other things that
I want to clean up in the implementation as well (eg. form toggle button
use, form font use).
jim
On Thu, Jul 25, 2019 at 1:02 PM Luiz Américo<EMAIL_ADDRESS>wrote:

I had a bit of trouble with jest, thus the jest config file change.
This can be added as a new PR. Just to make the PR focused
You can have those changes in your local repository just do not commit them
I will try to sort this out in a clean clone
There's no need to do clean clone, just remove those files from the commit
Also vscode wasn't doing the right
formatting using the config as defined.
If you add the vscode prettier plugin it will grab the project prettier
config and format accordingly (there's a option to only enable on projects
with prettier config)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/foliojs/pdfkit/pull/1002?email_source=notifications&email_token=AABFWQHW7WH4JXSJMZBFNKDQBIBDTA5CNFSM4IGU32Q2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD22TSXY#issuecomment-515193183,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABFWQGTJYYGPVYBSGOCSZ3QBIBDTANCNFSM4IGU32QQ
.

fyi, It could be a week before I resubmit. There's a few other things that
I want to clean up in the implementation as well (eg. form toggle button
use, form font use).

No hurry

cc. @diegomura @liborm85
Might be nice to add a higher level API to React PDF / pdfmake for this once it lands?

Changes are in and ready for review.

Great, I add support to pdfmake.

This looks good to me.
@jpravetz can you rebase?

@jpravetz Any chance you can wrap this up soon so that @blikblum can put out a new release (need a bug fix in master but waiting for this to merge before a new release is made)?

Yes, let's get it wrapped. I was on vacation a few weeks. Brain is rusty trying to remember how to use GitHub, so working thru the steps slowly.

Ready for merge

@blikblum When this merges could you cut a new release? I really appreciate your hard work @jpravetz @blikblum  @devongovett ! Thanks for working to improve pdfkit!

Many thanks. I will cut a new release this week (i hope tomorrow)


Update build documentation

I forgot to add the section numbers to the coverage-reporter publishing section, could you update the pdf one more time?


Debugging: Top frame should be the frame on which break happened

Porting fix from master to release/1.3
JsRT debugging, shim code can execute after break in user code and it may
not be the top frame when stack walker happens. Top frame should be the
frame on which break happened and set accordingly.

:shipit:

@dotnet-bot test Ubuntu ubuntu_linux_test_static

@dotnet-bot test Ubuntu ubuntu_linux_test_static


COMMUNITY REQUEST: Full conversion of Router function to TS (as part of 3.0 release)

Folks, I'm in the middle of converting the entire library over to TS for the 3.0 release (which bring extras into the core lib for added convenience).  That said, I'm a novice (at best) in TS, which can be difficult enough to type on a good day, much less with the ambiguous nature of:

Proxies (with unknown/infinite traps)
Mutating Requests (that don't really have to be a true Request), as you'd experience while being injected with middleware

With that said, I'm straight up struggling to convert the Router function itself to full TS, so I'm going to ask for help from you fine people.  I'd love someone to help me rewrite a full itty-router.ts that:

Passes all the existing tests without modification (must preserve the original API)
Remains true to the original concept of "itty"... as in, the code should compress to an absurdly tiny size, and the even in its uncompressed form should be as short/light as possible.
Remains flexible/easy to type while being able to handle as many scenarios as possible.  This part doesn't always play nice with the rigidity that TS users seem to expect, but by design, this library was designed to be flexible, specifically avoiding rigid definitions/expectations that may limit its applications.
While this will fall under a major (breaking) revision, it's not critical that types remain identical to pre 3.0.  More importantly, I'd like it to be typed in a way that requires (ideally) no/few imported types from the library... as in you can just use your own generics/Request, etc, and it'll still work as intended.
Please fork off of, and PR into the include-extras branch... if someone nails this, I'd much prefer a direct PR so you get full contribution credit in the codebase, rather than just README credits (that I would obv include)!

Thanks in advance for any help!
<3
Current WIP Branch

Happy to try and help with this- it looks like you're starting with just the vanilla types in your branch and that will be a WIP branch for a bit?

Yep, WIP until we can get this stuff sorted... conversely, I can ditch the lofty TS goals and do a short-term "release as-is" to simply get the non-typed extras into the core (as a start) with a fully typed version to follow...

Got it. I’ll look through the code and get my bearings.

@kwhitley I did some playing around with this and ran into issues with typing proxied "anything method" shorthands. The issue with it boils down to not being able to capture the actual method key as a string type dynamically. It could still be supported but I am curious how valuable you find that feature overall because it seems to add a lot of overhead for what you're getting from it.
An alternative would be to support something like:
router.add("method", Pattern | Regex, ...handlers)

We could still support the proxy of arbitrary methods through to that but the generic identity of the string type for the method literal would have to be not present. Again I think it would be wise to drop this feature.

Hey Matthew!
A few things:

This is in widespread use now, and thus breaking changes to the API are basically a thing of last resort, or very intentionally done/communicated.
I will always opt for a more simple/readable approach, which I think the original API does a good job of - it piggybacks off some patterns we've learned from Express as well, which is always a good thing for reducing cognitive load on new users.  Abstraction layers (like this) exist to take some of the explicit headache and boilerplate out of doing tasks downstream, so in my opinion, the onus is on me/us to solve the puzzle here, rather than cop out with an easy-to-type solution resulting in (arguably) dirtier code in user-land.
We (really @danawoodman) got this working well (and fully typed) recently over in itty-fetcher, so there's light at the end of the tunnel for us!  I'll be attempting to backport the bits over here shortly! :)


Add tree search functionality

For large and/or complicated files, it would be helpful if users could search for particular nodes of interest in the tree. In particular, the following are likely to be useful:

searching for all nodes with attributes that match a particular (string) pattern
searching for all nodes that contain instances of a particular class

In both cases, the search functionality should return the nodes/objects themselves, but also a string representation of the paths to those nodes.
It's not clear to me whether this should be implemented as a method of AsdfFile or as a separate function.

Both are possible. Just add as a method, and the function calls the method on the argument. Some people like functional interfaces better since that is what they are used to.

It could also be a method on nodes (I know it's somewhere in this one and don't want clutter from all the other branches in this file).

We have some very similar functionality in jwst.datamodels that searches the ASDF tree schema to return schema.
https://github.com/spacetelescope/jwst/blob/421216732fe9b93bb9c152be53f3e8e4d7be8b41/jwst/datamodels/schema.py#L117
It is a separate function, but we also have a method for a DataModel that essentially wraps it.  So both a function and a method.  The method:
https://github.com/spacetelescope/jwst/blob/421216732fe9b93bb9c152be53f3e8e4d7be8b41/jwst/datamodels/model_base.py#L713
It only searches the schema tree though, not the values.

@jdavies-st that's very useful to know. I wonder how much of that can be moved into asdf since it might be useful more generally.

It looks like there a bit of confusion here. What we were talking about was something to search the ASDF tree instance itself, not the schema. Or am I misreading this? I was thinking of trying to tackle this this afternoon.

During the last hack day, I wrote this but never had a chance to commit it anywhere:
def search(x, keyword):
    """Search for the key though all the heirarchy of an asdf file and return the value for that keyword

    Parameters
    ----------
    x: asdf

   keyword: string
       term to serach

   Returns
   -------
    value: object
       returns the value associated with that keyword
   """
   if isinstance(x, asdf.asdf.AsdfFile):
       x = x.tree

   # if it is at the top level, return the value
   if keyword in x.keys():
      return x[keyword]

   # if it is not at the top level, recursively search through the items
   for item in x.keys():
       if isinstance(x[item], dict):
           value = search(x[item], keyword)
           if value is not None:
               return value

   return None

That looks like a good start. There are a number of enhancements I would like to add.

Posted it in case it would help -- so definitely go for it!


Handle errors when retrieving all detectors

Currently, if there are any errors when calling getDetectors() on the dashboard and detector list pages, the page displays as normal, but just shows 0 detectors:

Change this to render a different page, informing the user of the error and steps to remediate.

Waiting on UX to design a page informing user of the error retrieving all detectors.

Rather than entire new page, will change to just a toast notification letting user know error retrieving all detectors. This will keep it consistent with other error handling within the plugin.


SagMeinenNamen.TypingTest version <IP_ADDRESS>

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.1 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

waiting for the validation pipelines to update to the latest WinGet version

Do you know how long will this approximately take @ItzLevvie ?

Do you know how long will this approximately take @ItzLevvie ?

I think @denelon is waiting for most people to update to winget 1.3

I would guess we are 5-6 weeks out. We're testing the 1.3 release candidate internally, and we will push it out to Windows Insider Release Preview likely this week.

/azp run


Ladybug AOP config issues

1) Config not capturing method
In the AOP config the following:
<aop:around
	pointcut=
		"
		execution(
			*
			nl.nn.adapterframework.stream.IStreamingSender.sendMessage(
				nl.nn.adapterframework.stream.Message,
				nl.nn.adapterframework.core.PipeLineSession,
				nl.nn.adapterframework.core.IForwardTarget
			)
		)
	 	and
	 	args(message, session, next)
	 	"
	method="debugStreamingSenderInputOutputAbort"
	arg-names="message, session, next"
/>

Does not seem to capture the XsltSender created by the XsltPipe. This seems to be because the Sender is autowired but not created through spring. See: https://github.com/ibissource/iaf/blob/master/core/src/main/java/nl/nn/adapterframework/pipes/XsltPipe.java#L66
Creating the sender through Spring will display it in the Ladybug, however it's displayed as a Sender in a Pipe (which is technically correct, but not functionally) See:

2) Multiple EchoPipes are captured as if they are ran in a different thread
<EchoPipe name="echo1"/>
<EchoPipe name="echo2"/>
<EchoPipe name="echo3"/>

The EchoPipes are not run in a different thread, but each provide an OutputStream to their predescessor


cmd/dist: dist vet tests get incorrect platform names

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go version devel +8a2cc22 Wed Apr 12 23:33:11 2017 +0000 linux/amd64
What operating system and processor architecture are you using (go env)?


Update org should not check email validation.

2020/11/23 11:20:35 ...uters/org/setting.go:94:SettingsPost() [E] UpdateUser: e-mail invalid [email: ]

@lunny witch version did you test?, this should already be fixed.

I will update gitea.com and will close this if it's disappeared.

should be closed by #13627

@lunny pleace reopen if it is still not gone


Please compile support for Scala 3.0.0

Possible duplicate of https://github.com/sksamuel/scapegoat/issues/391.

I haven't had a chance to work with Scala 3 / Dotty before. Not sure what it takes and how are we from having scapegoat support that language.

I have Scapegoat working on Scala 3 in another repo.It's early days because we have to migrate every rule to new syntax since the reflection / compiler plugin stuff has changed considerably.
@mccartney greg happy to talk to you about this.

Interesting. So is the plan to have a new project / fork, or will it possible to merge and maintain one code base?

Probably possibly. Is it desirable?
For avro4s I've put Scala 2.12 2.13 in maintenance and on a branch and new
features will go into Scala 3.
On Wed, 16 Jun 2021 at 12:50, Greg Oledzki @.***> wrote:

Interesting. So is the plan to have a new project / fork, or will it
possible to merge and maintain one code base?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/sksamuel/scapegoat/issues/521#issuecomment-862583796,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFVSGXDYYABQD4VUNHSY43TTDP5VANCNFSM45AJ2MBQ
.

So based on the information above. The title doesn't do it justice as to work needed:

Please compile support for Scala 3.0.0

suggests it's about compiling/building/releasing a version. While in fact it's likely to be significant implementation effort.

I have Scapegoat working on Scala 3 in another repo.It's early days because we have to migrate every rule to new syntax since the reflection / compiler plugin stuff has changed considerably.

@sksamuel is this available somewhere? I think it'll awesome to have even a few rules supported for Scala 3, rest of them might be added incrementally by interested people.

@mccartney is there any ongoing effort with Scala 3 support?

No. I don't think so. At least I am not aware

is there any plan to support Scala 3?
I've just checked https://docs.scala-lang.org/scala3/guides/migration/scala3-migrate.html dependency update and scapegoat plugin is blocking migration in my case:
[error]
[error] Incompatible Libraries:
[error] ("com.sksamuel.scapegoat" %% "scalac-scapegoat-plugin" % "2.1.6" % "scapegoat").cross(CrossVersion.full) (Full cross-version)

No plan and no progress on the work @sksamuel  started. It’s more or less a new library to be written. I suggest to use Scala 3 compiler linting instead.

I've been tinkering a bit with support for Scala 3 (as I want to move some of my projects to Scala 3 too), but the earlier comments are certainly right: Each inspection will need to be revisited to make compatible with the dotty compiler trees.
It will still take some more free nights to get it into a minimum viable state to propose it as an PR here.
https://github.com/Johnnei/scapegoat/tree/scala-3

No plan and no progress on the work @sksamuel started. It’s more or less a new library to be written. I suggest to use Scala 3 compiler linting instead.

I don't use Scala anymore, so I did not finish the migration.

Up on that, see issue #868


File path should be sent in search responses to be able to download files in nested folders

Fixed in https://github.com/gravetii/diztl/commit/5449303c4eb87642854ceddac08a844ce5600413


pin: remove Pin.Function(), merge PinFunc into Pin

Remove all Function() implementations.

Moved to https://github.com/periph/conn/issues/26


Loading always with backdrop

As in topic
Here's example: http://codepen.io/piernik/pen/BDClo/

The artefact is still happening up to 1.0.0-RC1 but you can make it go away using sass. You just have to target the right class.
.loading-container .loading {
  padding: 20px;
  border-radius: 5px;
  background-color: rgba(0, 0, 0, 0);

In particular the bg-color attribute.


[Failing Test]: :sdks:java:container:pullLicenses faling since Apr 5th affecting lots of PostCommits

What happened?
':sdks:java:container:pullLicenses' is currently failing on master and affecting lots of PostCommit. This may also affect current release process.
Issue Failure
Failure: Test is continually failing
Issue Priority
Priority: 1 (unhealthy code / failing or flaky postcommit so we cannot be sure the product is healthy)
Issue Components

[ ] Component: Python SDK
[ ] Component: Java SDK
[ ] Component: Go SDK
[ ] Component: Typescript SDK
[ ] Component: IO connector
[ ] Component: Beam examples
[ ] Component: Beam playground
[ ] Component: Beam katas
[ ] Component: Website
[ ] Component: Spark Runner
[ ] Component: Flink Runner
[ ] Component: Samza Runner
[ ] Component: Twister2 Runner
[ ] Component: Hazelcast Jet Runner
[ ] Component: Google Cloud Dataflow Runner

The exact error message:
07:47:45 Executing python /home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/license_scripts/pull_licenses_java.py --license_index=/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/build/reports/dependency-license/index.json        --output_dir=/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/build/target/java_third_party_licenses        --dep_url_yaml=/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/license_scripts/dep_urls_java.yaml        --manual_license_path=/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/license_scripts/manual_licenses
07:47:45 Traceback (most recent call last):
07:47:45   File "/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/license_scripts/pull_licenses_java.py", line 36, in <module>
07:47:45     from tenacity import retry
07:47:45   File "/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/build/virtualenv/lib/python3.11/site-packages/tenacity/__init__.py", line 451, in <module>
07:47:45     from tenacity._asyncio import AsyncRetrying
07:47:45   File "/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/build/virtualenv/lib/python3.11/site-packages/tenacity/_asyncio.py", line 33, in <module>
07:47:45     class AsyncRetrying(BaseRetrying):
07:47:45   File "/home/jenkins/jenkins-slave/workspace/beam_PostCommit_XVR_Direct/src/sdks/java/container/build/virtualenv/lib/python3.11/site-packages/tenacity/_asyncio.py", line 41, in AsyncRetrying
07:47:45     @asyncio.coroutine
07:47:45      ^^^^^^^^^^^^^^^^^
07:47:45 AttributeError: module 'asyncio' has no attribute 'coroutine'. Did you mean: 'coroutines'?
07:47:45
07:47:45 > Task :sdks:java:container:pullLicenses FAILED

Python 3.11 removed asyncio.coroutine: https://github.com/python/cpython/pull/26369
This is because we bumped to use python3.11 as the Python environment to run pullLicenses, however it appears that not all (transient) dependency yet support python3.11.

reopen to cherry-pick

With the mitigation cherrypicked into 2.47 are we good to remove this bug from the release milestone?


A bug?

From https://discourse.julialang.org/t/maximizing-an-objective-function-with-many-logs/59227/4
function dadada(y, mid)
    N = 33
    acc = 0.0
    @avx for i in axes(y,2)
            for j in axes(y,1)
                acc += (y[j, i] * log(mid[j])) / N
            end
        end
    acc
end
dadada(rand(3,3), rand(3))

# ERROR: UndefVarError: ##vptr##_y##MAX##-6## not defined
# Stacktrace:
#  [1] macro expansion
#    @ ~/.julia/packages/LoopVectorization/O8WW6/src/reconstruct_loopset.jl:630 [inlined]
#  [2] _avx_!(#unused#::Val{(false, 0, 0, false, 2, 16, 15, 64, 65536, 4194304, 0, 0x0000000000000001)}, #unused#::Val{(:LoopVectorization, :getindex, LoopVectorization.OperationStruct(0x0000000000000021, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, LoopVectorization.memload, 0x01, 0x01), :LoopVectorization, :getindex, LoopVectorization.OperationStruct(0x0000000000000002, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, LoopVectorization.memload, 0x02, 0x02), :LoopVectorization, :log_fast, LoopVectorization.OperationStruct(0x0000000000000002, 0x0000000000000000, 0x0000000000000000, 0x0000000000000002, LoopVectorization.compute, 0x00, 0x03), :LoopVectorization, :mul_fast, LoopVectorization.OperationStruct(0x0000000000000021, 0x0000000000000000, 0x0000000000000000, 0x0000000000000103, LoopVectorization.compute, 0x00, 0x04), :LoopVectorization, :LOOPCONSTANTINSTRUCTION, LoopVectorization.OperationStruct(0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000, LoopVectorization.constant, 0x00, 0x05), :LoopVectorization, :div_fast, LoopVectorization.OperationStruct(0x0000000000000021, 0x0000000000000000, 0x0000000000000000, 0x0000000000000405, LoopVectorization.compute, 0x00, 0x06), :LoopVectorization, :LOOPCONSTANTINSTRUCTION, LoopVectorization.OperationStruct(0x0000000000000000, 0x0000000000000000, 0x0000000000000021, 0x0000000000000000, LoopVectorization.constant, 0x00, 0x07), :LoopVectorization, :add_fast, LoopVectorization.OperationStruct(0x0000000000000021, 0x0000000000000021, 0x0000000000000000, 0x0000000000000607, LoopVectorization.compute, 0x00, 0x07))}, #unused#::Val{(LoopVectorization.ArrayRefStruct{:y, Symbol("##vptr##_y")}(0x0000000000000101, 0x0000000000000201, 0x0000000000000000, 0x0000000000000101), LoopVectorization.ArrayRefStruct{:mid, Symbol("##vptr##_mid")}(0x0000000000000001, 0x0000000000000002, 0x0000000000000000, 0x0000000000000001))}, #unused#::Val{(0, (8,), (5, 7), (), (), (), ())}, #unused#::Val{(:i, :j)}, tuple#args#::Tuple{Tuple{ArrayInterface.OptionallyStaticUnitRange{Static.StaticInt{1}, Int64}, ArrayInterface.OptionallyStaticUnitRange{Static.StaticInt{1}, Int64}}, Tuple{VectorizationBase.GroupedStridedPointers{Tuple{Ptr{Float64}, Ptr{Float64}}, (1, 1), (0, 0), ((1, 2), (1,)), ((1, 2), (3,)), Tuple{Static.StaticInt{8}, Int64, Static.StaticInt{8}}, Tuple{Static.StaticInt{1}, Static.StaticInt{1}, Static.StaticInt{1}}}, Int64, Float64}})
#    @ LoopVectorization ~/.julia/packages/LoopVectorization/O8WW6/src/reconstruct_loopset.jl:630
#  [3] dadada(y::Matrix{Float64}, mid::Vector{Float64})

(@v1.6) pkg> st LoopVectorization
  [bdcacae8] LoopVectorization v0.12.12

This was Julia 1.6.0 under rosetta, M1 mac. With 1.7 running natively, it seems to work fine.

I probably won't have much chance to look at this until Friday, but definitely a bug.
Something going wrong in codegen.
When iterating, it either uses loop induction variables that count the iterations, or it increments pointers and compares those pointers to a final value. The latter is useful for outer loops when you have multiple nested loops, to keep addressing calculations in the inner loops efficient.
The bounds it uses for comparisons have names like ##vptr##_y##MAX##-6##.

No rush at all!
Here's a more disturbing bug, from the same thread. Possibly this is out of scope, but if so, could it warn you?
function obj8(y::AbstractMatrix, s::AbstractArray, θ::AbstractVector)
    out = 0.0
    for i in axes(y,2)
        for j in axes(y,1)
            acc = 0.0
            for r in axes(θ,1)
                acc += abs(θ[r]) * s[r,j,i]
            end
            out += y[j,i] * log(acc)
        end
    end
    out
end

function obj9(y::AbstractMatrix, s::AbstractArray, θ::AbstractVector)
    out = 0.0
    @avxt for i in axes(y,2)
        for j in axes(y,1)
            acc = 0.0
            for r in axes(θ,1)
                acc += abs(θ[r]) * s[r,j,i]
            end
            out += y[j,i] * log(acc)
        end
    end
    out
end

y = rand(10,10); s = rand(10,10,10); θ = rand(10);

obj8(y, s, θ)
obj9(y, s, θ)  # very different answer

It's not "out of scope", i.e. not getting the correct answer is a bug.

Works locally:
julia> @btime obj8($y, $s, $θ)
  1.550 μs (0 allocations: 0 bytes)
23.057520354822675

julia> @btime obj10($y, $s, $θ) # `@avx`;
  477.795 ns (0 allocations: 0 bytes)
23.057520354822675

julia> @btime obj9($y, $s, $θ) # `@avxt`; need a bigger problem to start threading
  490.722 ns (0 allocations: 0 bytes)
23.057520354822675

Now to see how many other tests I broke in the process. :laughing:  Definitely looking forward to imrpoving/redesigning the codegen code to make it much simpler and more robust than it is now. The cumulative time I've spent managing that tech debt is probably already a lot longer than it'd have taken to rewrite it.
More modularity will also have to be a priority, so that'd it be easier to rewrite one piece at a time.
Anyway, if you're curious, the problem in obj9 was that it wasn't reducing the vector to a scalar before loging it.

M1 under Rosetta:
julia> using LoopVectorization

julia> function dadada(y, mid)
           N = 33
           acc = 0.0
           @avx for i in axes(y,2)
                   for j in axes(y,1)
                       acc += (y[j, i] * log(mid[j])) / N
                   end
               end
           acc
       end
dadada (generic function with 1 method)

julia> function dadada_noavx(y, mid)
           N = 33
           acc = 0.0
           for i in axes(y,2)
                   for j in axes(y,1)
                       acc += (y[j, i] * log(mid[j])) / N
                   end
               end
           acc
       end
dadada_noavx (generic function with 1 method)

julia> y = rand(3,3); mid = rand(3);

julia> @btime dadada_noavx($y,$mid) # no perf improvement with `@inbounds`
  52.949 ns (0 allocations: 0 bytes)
-0.18440488334839736

julia> @btime dadada($y,$mid)
  31.061 ns (0 allocations: 0 bytes)
-0.18440488334839733

julia> versioninfo()
Julia Version 1.6.1
Commit 6aaedecc44 (2021-04-23 05:59 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.7.0)
  CPU: Apple M1
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, westmere)


Remove Name Mangling in LLVM

Name mangling will instead become a part of the AST->MIR conversion process. This makes it consistent
in implementations such as the WASM codegen interface, and makes it easier to avoid accidental usage of the unmangled name.

as I know, name mangling is already gone from LLVM codegen.


Any way to keep all the data (not just past 24 hr)

Is there a way to have it keep all the data instead of just the past 24 hours?
Thanks!

yeah, same, im about to go back to the previous release.

Mine is working fine... Are you using the options to change criteria?

How exactly do I do that?
On Thu, Sep 1, 2016 at 9:33 AM, youtubesteak<EMAIL_ADDRESS>wrote:

[image: image]
https://cloud.githubusercontent.com/assets/20827977/18175677/1dde0f0c-7040-11e6-8aeb-d492f38e318b.png
Mine is working fine... Are you using the options to change criteria?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mchristopher/PokemonGo-DesktopMap/issues/1123#issuecomment-244136139,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AUrxnpWv2loFIWOZOVPsExT9RPAjgRPiks5qlv5ZgaJpZM4Jy0Q1
.

In the map, click Stats in the top right, then when in stats, click the options cog in the top left and it should give you these options to choose from.

Works perfect. I did not know you had to be in full stats mode to show this menu. This was the option I had been requesting a while back. :D

@Sedare Haha, well good. It's actually been in there for a while. My only issue is with my older db files, the 500 hour pokemon show, so I only have ~2 weeks of data without including those. I just haven't taken the time to go through and clean those up, but with a decent SQLite manager, you can do anything you want with the db file that you can do with SQL, like create e-mail alerts using triggers, view in-depth data, custom views, etc.


Can't (indirectly) import numpy and use() it - fail without exception?

to reproduce
pkg = use("matplotlib")
np = use("numpy", version="2022")
np.version

NameError                                 Traceback (most recent call last)
 in
----> 1 np.version
NameError: name 'np' is not defined

https://github.com/amogorkon/justuse/blob/9571a93633c4537f3a53d005874a30a1b95fcade/docs/Showcase.ipynb


(python3): add user packages scripts path to PATH env on install/update

Chocolatey Version
1.2.0
Chocolatey License
None
Package Version
3.11.0
Current Behaviour
Right now python3 is not adding user packages bin path C:\Users\<path>\AppData\Roaming\Python\Python<version>\Scripts to PATH env leading to inability to launch installed scripts from packages installed with --user flag:
PS C:\Users\user> pip install --user internetarchive
Installing collected packages: jsonpatch, idna, contextlib2, colorama, charset-normalizer, certifi, tqdm, schema, requests, internetarchive
  WARNING: The script normalizer.exe is installed in 'C:\Users\user\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script tqdm.exe is installed in 'C:\Users\user\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  DEPRECATION: internetarchive is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for internetarchive ... done
Successfully installed certifi-2022.9.24 charset-normalizer-2.1.1 colorama-0.4.6 contextlib2-21.6.0 idna-3.4 internetarchive-3.0.2 jsonpatch-1.32 requests-2.28.1 schema-0.7.5 tqdm-4.64.1

PS C:\Users\user> ia
ia : The term 'ia' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ ia
+ ~~
    + CategoryInfo          : ObjectNotFound: (ia:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Expected Behaviour
python3 package should add this path to PATH env on install/update to make script launch-able after installing them with --user option.
Steps To Reproduce

Install python3 package.
do pip install --user internetarchive
Re-launch terminal and try to launch ia
You can't.

Environment
- Operating System: Windows 11 Pro
- PowerShell Version: 5.1.22000.832
- Shell: Windows Terminal

Chocolatey Log
https://gist.github.com/soredake/7b3ee956833041e723ac03f402aaa9a1

Anything else?
winget package for example installs in user-mode and this path is added to PATH.

This isn't a bug in the package. I've removed that label and added 'Enhancement'.

The python3 package is installed for all users on the system using InstallAllUsers=1. Using PrependPath=1 (which is what is used unless you pass an InstallDir32 package parameter) it 'Prepend install and Scripts directories to PATH and add .PY to PATHEXT'.
You are installing internetarchive as a user install. That path is not added by the installer because python3 is installed for all users. If you run pip install internetarchive and then run ia it works, because it is installing that for all users and that path has been added.
So the issue is that you will need to add your user path manually.

If you're looking to add the functionality, you should look to submit a PR to add it.

I'm just a regular, i don't have skill to create choco packages, so i opened https://github.com/chocolatey-community/chocolatey-package-requests/issues/1389

I'm a regular user too. This might be a good opportunity to look at creating that package yourself.

Yes, still relevant.

@soredake If you're unable to pick this up, then I would argue that this is no longer relevant, and, we should look to close this issue. Unfortunately, nobody else has shown interest in picking it up.


Fails to parse replay when encountering a direction value of 0

I have a replay that has a direction of 0 (supposed to be -1 or 1) for pre/post frame update. I think it's a quirk when a warp star item is used (action state 305). This causes a parse error.
Given 0 is a valid/possible value for direction. The real question is how should we change the direction type in the Pre and Post structs? Do we make it an Option<Direction> like it is for the Item struct? Maybe it makes more sense to change the Direction enum to include a variant for 'neither' or 'none'.
pub enum Direction { // how this enum exists in peppi currently
	Left,
	Right,
}

let direction: Option<Direction> = None;

versus
pub enum Direction {
	Left,
	Right,
	Neither,
}

let direction: Direction = Direction::Neither;

Maybe this is splitting hairs, but we generally use a top-level Option to indicate a value that may or may not exist (eg. only exists in later replay versions). Either way this is a simple change, so I can make the PR once we reach a good decision (I lean toward the latter). ~Let me know if I should post the replay.~

zero_direction.slp.gz

No longer relevant (direction is now stored "as-is", i.e. as f32).


Permission denied: '/var/lib/pgadmin/sessions'

Describe the bug
Having permission denied error on startup for the pod pgadmin4-xxxx.
Version of Helm and Kubernetes:
Kubernetes: 1.18.3 - Running on Premise
Helm: 3.2.3
Which chart:
runix/pgadmin4
What happened:
Installed the chart with the following command.
helm upgrade --install --namespace xxxx
--set env.email= \
--set env.password=
--set persistentVolume.enabled=true
--set persistentVolume.storageClass=
--set persistentVolume.size=2Gi
--set service.type=ClusterIP
--set ingress.enabled=false
pgadmin runix/pgadmin4
The chart has been installed successfully but the app crashed with the following errors:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
super(ThreadWorker, self).init_process()
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python3.8/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/usr/local/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 350, in import_app
import(module)
File "/pgadmin4/run_pgadmin.py", line 4, in
from pgAdmin4 import app
File "/pgadmin4/pgAdmin4.py", line 92, in
app = create_app()
File "/pgadmin4/pgadmin/init.py", line 241, in create_app
create_app_data_directory(config)
File "/pgadmin4/pgadmin/setup/data_directory.py", line 40, in create_app_data_directory
_create_directory_if_not_exists(config.SESSION_DB_PATH)
File "/pgadmin4/pgadmin/setup/data_directory.py", line 16, in _create_directory_if_not_exists
os.mkdir(_path)
PermissionError: [Errno 13] Permission denied: '/var/lib/pgadmin/sessions'
[2020-06-18 13:07:36 +0000] [91] [INFO] Worker exiting (pid: 91)
WARNING: Failed to set ACL on the directory containing the configuration database: [Errno 1] Operation not permitted: '/var/lib/pgadmin'
/usr/local/lib/python3.8/os.py:1023: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
return io.open(fd, *args, **kwargs)
[2020-06-18 13:07:36 +0000] [1] [INFO] Shutting down: Master
[2020-06-18 13:07:36 +0000] [1] [INFO] Reason: Worker failed to boot.

Could you enable the following, and see if it works?
VolumePermissions:
  ## If true, enables an InitContainer to set permissions on /var/lib/pgadmin.
  ##
  enabled: false

It works now. Thanks a lot for your help.


FileNotFound exception when running integration tests

The ".cake" file in two of the addins that are used for integration testing was recently renamed recipe.cake which causes the tests to fail.
The exceptions are:
Cake.Gulp: System.IO.FileNotFoundException: Cake script file not found.
File name: 'c:/CakeRecipeTests/repos/Cake.Gulp/setup.cake'

and
Cake.Http: System.IO.FileNotFoundException: Cake script file not found.
File name: 'c:/CakeRecipeTests/repos/Cake.Http/setup.cake'

@Jericho this is a great catch!  Thanks for fixing this!


Blog: Some social media icons are grey, some are colored. Can we have all colored please?

3dc22d918f836a530391311d655b474e926a1e22


js: Implement a standalone encoder library

This module can be used to compress meshes, most commonly to conform to EXT_meshopt_compression (https://github.com/KhronosGroup/glTF/blob/master/extensions/2.0/Vendor/EXT_meshopt_compression/README.md).
This change currently lacks documentation, this will be added in the future.
The recommended vanilla integration for geometry compression looks like this:

Reorder mesh index/vertex buffers, using reorderMesh(indices, true, true) (assuming triangle meshes) which returns a remap table that can be used to create new vertex buffers - remap table maps old indices to new so the remap loop for vertex data looks smth like newvertices[remap[i]] = oldvertices[i];. This improves compression in the following step.
Encode all vertex streams using encodeVertexBuffer; encode all index buffers using encodeIndexBuffer (note that vertex encoding works with Uint8Array but index encoding works with Uint16/Uint32Array, I can change that if necessary) if they contain triangles, and encodeIndexSequence otherwise
Serialize glTF extension metadata, using "ATTRIBUTES" mode for vertex data, "TRIANGLES" for IndexBuffer encoding and "INDICES" for IndexSequence

This works equally well with interleaved and non-interleaved vertex data; quantization should be applied before encoding.
When encoding other glTF streams for animation etc., encodeVertexBuffer can be used in the same way on the input stream (without any reordering).
This provides basic encoding for everything that should be roughly equivalent to gltfpack -c. When more compression is required, encode filters come into play - using these should make it possible to match gltfpack -cc in terms of transmission size. The encode filters can be used to preprocess floating point data and generate special quantized streams for three types of data: unit vectors (normals/tangents), quaternions (animation or instance rotations) and general floating point data (translation and scale vectors, and unquantized positions/texture coordinates if necessary).
To apply the filters, encodeFilter* should be used to produce a Uint8Array from input Float32Array. The resulting filtered buffer can be encoded using encodeVertexBuffer - if the glTF extension metadata then specifies this filter, the decoder will reverse the filtering operation and produce optimal quantized data for unit vectors or rotations, or floating-point data for other types. The type of filter should be saved to "filter" attribute in the glTF extension blob so that the decoder knows which filter to reverse.
Note that filters are lossy - which is why the number of bits to use per component is a required argument; I recommend 8 bits for normal/tangent data (10 bit for high quality normals which requires 8-byte output), 12 bits for quaternions for rotations, and ~15 bits for general floating point storage. Examples for using filters are in the .test.js file in this PR and they will be added to the documentation. When filters are not used, the encoding is lossless - mesh reordering only changes the order of rendered triangles, the compression is lossless by itself. Filters are used to reduce entropy and prepare data in the optimal fashion for the subsequent compression to take place, which is also why they aren't really necessary for data that can already be optimally quantized using integers.
There are some restrictions on the input stride/bits that are currently checked in C++ implementation but aren't checked in the JS wrappers which may make some errors more difficult to debug. I'm going to add validation and try to convert the text above + information on how to use the decoder into a README file, any feedback is welcome otherwise.
cc @donmccurdy

Looking forward to trying this out! Pretty shocked this is only 6.5kb minzipped. I expect I'll be able to work on it next week, but do have a couple questions in the meantime:

vertex encoding works with Uint8Array but index encoding works with Uint16/Uint32Array, I can change that if necessary

In gltfpack -vp defaults to 14 bits, I am a bit nervous about allowing only 8 bits when filters are not used... or is the idea that a position attribute using Uint16Array can just be re-wrapped in a Uint8Array with size=6?
My quantization implementation currently uses Int8Array and Int16Array (rather than the unsigned alternatives) for several attribute types, but there's no particular reason for that and I could switch to Uint.

This works equally well with interleaved and non-interleaved vertex data

I'm not sure what arguments to encodeVertexBuffer would be used for interleaved vertex data, not seeing a stride, have I missed something there?

Just curious – does gltfpack ever write sparse accessors, e.g. for morph attributes? I'm assuming we'd want to keep the attribute sparse if doing so was already advantageous without compression, remap the indices to the new order, and call encodeVertexBuffer with appropriate count?

I am a bit nervous about allowing only 8 bits when filters are not used... or is the idea that a position attribute using Uint16Array can just be re-wrapped in a Uint8Array with size=6?

Yeah that's exactly it. Would it be more idiomatic to use ArrayBuffer instead of Uint8Array here? I use Uint8Array right now as "byte array" essentially.

I'm not sure what arguments to encodeVertexBuffer would be used for interleaved vertex data, not seeing a stride, have I missed something there?

You'd just pass a larger size, so size and stride here have the same meaning.

Would it be more idiomatic to use ArrayBuffer instead of Uint8Array here? I use Uint8Array right now as "byte array" essentially.

Got it – yes, I think Uint8Array is the right choice as long as (1) it's clear in documentation that it's being used as a byte array, and (2) there's no requirement that the underlying ArrayBuffer be the same size as the array.

You'd just pass a larger size, so size and stride here have the same meaning...

Oops, I had misunderstood this. So encodeVertexBuffer is not being called for each vertex attribute necessarily. For an interleaved primitive with three vec3 uint16 attributes, we'd pass a Uint8Array containing the already-interleaved data, and a size of 3 * 3 * 2 (plus padding, where required)?

So encodeVertexBuffer is not being called for each vertex attribute necessarily.

Yeah - correct - you call it for the bufferView contents, and pass the size of a single "element", which for interleaved data would be "all attributes of a given vertex". I'm going to add encodeGltfBuffer helper as well to be more symmetrical with decoder and to make it a bit cleaner.

I've adjusted the interface for all functions to hopefully be final (changed index encoding to also take in a byte view and added assertions for preconditions to simplify usage). Will try to add documentation tomorrow and commit this.

I've done my best to document both decoders and encoders from the API perspective. I'm going to merge this, but feel free to raise issues in the documentation or the actual implementation since glTF-Transform is going to be the first non-C++ implementation that uses these.


ask for amalgamation build on windows

Describe the pull request

What does your PR fix?

On Windows, I get the following error building botan:
Can't start command: C:\WINDOWS\system32\cmd.exe /C link /DLL    build\obj\lib\buildtrees_botan_src_89b3286ac4-fdb28db12d.clean_src_lib_asn1_alg_id.obj (...) build\obj\lib\buildtrees_botan_src_89b3286ac4-fdb28db12d.clean_src_lib_x509_x509self.obj crypt32.lib user32.lib ws2_32.lib /OUT:.\botan.dll
The entire LIBOBJS variable in the generated Makefile is over 36000 characters long.
I looked into patching botan at first, but I didn't immediately get their custom configure script, and I found this to be the easiest solution. I scoped it under Windows to avoid longer build times on other systems.
I'm of course open for other suggestions for fixing the build error.

Which triplets are supported/not supported? Have you updated the CI baseline?

NA

Does your PR follow the maintainer guide?

Yes

Thanks, Port-Version has been bumped

Can we add this flag as a feature in the CONTROL file?

Sure, amalgamation build is now a feature flag

Thanks!


Seems caching is not working

Description:
I used the cache option in one of my public repos, but dependencies are getting installed again.
I do not see any difference in the pipeline duration when I run it with or without cache.

https://github.com/sztadii/crypto-dashboard/actions
Action version:
Specify the action version
Platform:

[x ] Ubuntu
[ ] macOS
[ ] Windows

Runner type:

[x ] Hosted
[ ] Self-hosted

Tools version:
node 14.19.0

Hello @sztadii. Thank you for your report. Actually the setup-node action does not cache node_modules. It caches global cache directory.

@dmitry-shibanov then "Caching packages dependencies" is misleading, I think it should be changed.

I too, thought it would cache my node_modules, and assumed it would bust the cache when the defined lock file changed? The whole feature is quite misleading.

I too hit into this when trying to optimise a CI pipeline, and was misled.

It could also be related to this PR: https://github.com/actions/setup-node/pull/323

I had the same question, and this article pointed out that you actually want to use actions/cache@v2, rather than actions/setup-node@v2. (You can still use the latter as well — it's just not going to cache your node_modules.)

Hello everyone. We updated documentation in scope of this pull request. For now I'm going to close the issue. If you have any concerns feel free to ping us.

@dmitry-shibanov : Actually the setup-node action does not cache node_modules. It caches global cache directory.

I see that you have updated the docs since this issue were opened, but could you also add a comment about what that means? What is the purpose of caching the global cache directory? When do I need this feature? Would caching node_modules not be a good idea (for me and/or for setup-node)?

I think the misunderstanding comes from outside of this actual repo, in a way how that caching concept is described in a workflows 101 article in GitHub Docs:

https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows
GitHub Actions / Using workflows / Cache dependencies

Caching dependencies to speed up workflows
To make your workflows faster and more efficient, you can create and use caches for dependencies and other commonly reused files.
Workflow runs often reuse the same outputs or downloaded dependencies from one run to another. For example, package and dependency management tools such as Maven, Gradle, npm, and Yarn keep a local cache of downloaded dependencies.
Jobs on GitHub-hosted runners start in a clean runner image and must download dependencies each time, causing increased network utilization, longer runtime, and increased cost. To help speed up the time it takes to recreate files like dependencies, GitHub can cache files you frequently use in workflows.
To cache dependencies for a job, you can use GitHub's cache action. The action creates and restores a cache identified by a unique key. Alternatively, if you are caching the package managers listed below, using their respective setup-* actions requires minimal configuration and will create and restore dependency caches for you.

That basically reads what everyone in this thread also thinks: Using cache should save time downloading and building node_modules over and over again. If using e. g. npm/yarn that means for one to use setup-node and have that caching taken care of.
Is there a way how this difference in mental model and expectations mismatch can be fixed documentation-wise?
(I myself still don't know how to describe the difference in caching the .npm/* deps vs. the actual built node_modules, so that any readers or action users would be able to understand what is possible to cache, and what is not real. Could anyone provide an entry-level material to understand this difference so that it might get updated in the GH Docs to be more specific?)

For future readers, I've setup caching/restore of node_modules and then just run npm install after to ensure it's all good, this mostly works although you may have weird issues with things that rely on native extensions other folders (e.g Puppeteer uses ~/.cache folder so we added that)
Here's relevant yaml from our action :
    steps:
      # attempt to cache/restore node_modules and npm using the GitHub Actions cache feature for faster builds.
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install NodeJS
        uses: actions/setup-node@v4
        with:
          node-version-file: .node-version
          cache: "npm"

      - name: Cache + Restore node_modules
        uses: actions/cache@v4
        with:
          # Cache node_modules and Puppeteer chrome
          path: |
            ~/.cache
            node_modules
            nmg-analytics/node_modules
            slate-app/node_modules
            slate-extension/node_modules
            master-analytics-scripts/node_modules
          key: ${{ runner.os }}-node_modules-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node_modules-

      - name: List the state of node modules
        continue-on-error: true
        run: npm list

      - name: Update Dependencies
        run: npm install

      - name: List the state of node modules again
        continue-on-error: true
        run: npm list
      # cache/restore complete

      - name: Integration Tests
        run: npm run test-integration


docs: more release instructions

@dpgaspar @villebro  ^^^

Oh I just saw https://github.com/apache/incubator-superset/pull/8381 ! Let's merge that one first and see if there's anything of value left in here after...

@mistercrunch these partly overlap stuff in #8381, can we finalize that and then rebase this?

Codecov Report

Merging #8432 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #8432   +/-   ##
=======================================
  Coverage   67.61%   67.61%
=======================================
  Files         448      448
  Lines       22486    22486
  Branches     2364     2364
=======================================
  Hits        15204    15204
  Misses       7144     7144
  Partials      138      138

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cde17a8...2149c11. Read the comment docs.

Agreed, yours first and then I'll merge the section about emails on top


Create navbar.html for my blog

This is not following any of the rules for either challenge. I honestly can't tell what you're doing, it looks like spam to me


Allow auto-create member option

When a registered user accesses an app for a church (streaming live and B1 for now) and doesn't already have a member record for that church, auto-create one.
We'll need a setting flag in membership API to enable/disable this feature for each church.

This was completed in https://github.com/LiveChurchSolutions/MembershipApi/commit/ed53721923f2e22d0932f25119e56f6cf1e7361d#diff-3ad2a5c4d8fcefa2f8263fe0044f5b40a0e25150a3784b4c55f9cdc356fd7b4e
To be clear creates a Person record, but they are not marked with a status of Member unless church staff explicitly does so.


JsonTypeInfo feature not well supported

I have added a failing test in a branch of mine:
https://github.com/emmanueltouzery/javaslang-jackson/tree/jsontypeinfo_issue
commit https://github.com/emmanueltouzery/javaslang-jackson/commit/0b79bd6d9b086f0aeb0c96887cd17f5887e154af
I have stumbled in a codebase I'm working on on a use of that @JsonTypeInfo feature; with this example, we get a different serialization with javaslang.collection.List as opposed to java.util.List. It's hampering our migration to javaslang.
Sadly I have no idea how to fix this in javaslang-jackson...
The test failure prints:
Failed tests:   testJsonTypeInfo(javaslang.jackson.datatype.seq.ListTest):
expected:<{"f":[{"[card":{"type":"hello"}]}]}>
but was: <{"f":[{"[type":"hello"]}]}>

I'll take a look, thank you

@emmanueltouzery please review #77
Maybe you can suggest other tests to verify this PR more precisely?

wow, this looks great thank you!
I've looked a bit in our codebase for other use cases of that API (which I had never seen before), but it seems it's only being used in that scenario that I extracted for the test. I've tried to port it over to Set from List and with your patch it works as well...
So I guess it's good for master, of course if I spot other issues I'll report but so far I'm not aware of any.
PS: will this go in the 2.1 release, or will it wait for the 3.0 one?

Should go into the 2.1. Nothing will break, right @ruslansennov

So I guess it's good for master, of course if I spot other issues I'll report but so far I'm not aware of any.

No, I found some problems with Option and Either. I will prepare fixes soon

Should go into the 2.1

Hope I will be able to release all fixes with 2.0.4
Hope nothing will break in API :)


Uninstall fails on first click

When uninstalling from the Alchemy CME, the uninstall seems to consistently fail on the first try but then succeed on the second (this was installed via drag and drop)

Keeping this one open but not attaching to milestone... I believe it may be due to one of the other issues fixed for 0.4.2 but we'll keep an eye to see if this continues to happen.

Closing issue as I believe this was resolved with 0.4.2 and haven't heard any updates.  Will open new issue if anything else is found during plugin uninstalls


Update to 1.1.4 (in sync with latest pack-osrs-dark)

I see the latest version of the pack is 1.2.0 if i'm correct. Since this pack is purely based on the one by iawhd, I'll wait for him to update osrs-dark. I don't have time to update these a lot but I'll try to check the repo once in a while so it will stay usable.

pack-osrs-dark was updated in e25150e7e567f3be1fb8c271cdfcefa9543c68de, if you would like to update yours also

Updated to 1.2.0. Off topic question: could you update the image used here to the one in the readme.md (this one)? I think it gives a better overview of the pack.


RESEARCH: Run ION on RaspiBlitz

Microsoft is building an open identity system as 2nd layer on Bitcoin. Even they recommend 6GB memory ist would be interesting if you can get it running on a RaspiBitz RP4-4GBRAM-1TBSSD.
"ION is a public, permissionless, Decentralized Identifier (DID) network that implements the blockchain-agnostic Sidetree protocol on top of Bitcoin (as a 'Layer 2' overlay) to support DIDs/DPKI (Decentralized Public Key Infrastructure) at scale."
https://github.com/decentralized-identity/ion/blob/master/install-guide.md

This is a duplicate too (triplicate)
Close this, the other has more information.


Add more cryptographic algorithms

Add support for Blowfish or/and SHA-3

Why Blowfish?  I don't think it's any faster or more secure than other methods.  In fact there are two successors to that algorithm by the same authors.

@vatterspun One of the users wrote me and asking for the adding support for Blowfish or/and SHA-3

Well I guess I'd decline that request if I were in your shoes, but certainly it's your call.

@vatterspun But this is not a replacement for the current algorithms, it's adding one more, I do not think it's very critical. In any case, unfortunately I now do not have time to add anything to the app. So far, everything will be as it is.

unfortunately I now do not have time to add anything to the app. So far, everything will be as it is.

Understood, thanks for responding.

Finally, a clear project ideology was formed. And, unfortunately, the proposed improvements are not included in this ideology. So, this issue  is closed.


Provide Global Setting OpenMaximized

Description of the new feature/enhancement
Add a Global Setting OpenMaximized to start the application with a maximized window.

/dup #2654 #2817 #1043


travis build script

The travis will build project automatically and run cpp, lua binding and  python binding tests now.(Some tests that will take too much time are ignored)

Cool!

Cool! Thanks, Xiao!


Grouping rows

Hello
How can I configure TableFilter for grouping rows and subTotal by group?

Hi @jamesRUS52,
Grouping sub-total is not spported, but you might be able to achieve that by leveraging TableFilter's API.
Cheers

Hi, @koalyptus
Could you give me an example? What function of API should I use?

Inline group totals is a bad idea.  You'd be better creating a separate table with the group totals in.  That way adding group totals won't be adding data the table from where you are getting your group totals source data from.
Here are some to start with:
(source http://koalyptus.github.io/TableFilter/docs/class/src/tablefilter.js~TableFilter.html)
getFilteredColumnData(colIndex: any, includeHeaders: boolean, exclude: any): ArrayReturn the filtered data for a given column index
getFilteredColumnValues(colIndex: any, includeHeaders: boolean, exclude: any): ArrayReturn the filtered values for a given column index
getFilteredData(includeHeaders: Boolean, excludeHiddenCols: Boolean): ArrayReturn the filtered table data based on its columns data type definitions with following structure: [ [rowIndex, [data0, data1...]], [rowIndex, [data0, data1...]] ]
getFilteredValues(includeHeaders: Boolean, excludeHiddenCols: Boolean): ArrayReturn the filtered table values with following structure: [ [rowIndex, [value0, value1...]], [rowIndex, [value0, value1...]] ]
These allow you to pull the data from the table (filtered data in this case so only whats visible).  You can then manipulate this with JS and push the results into a group totals data table.

FYI, up-to-date auto-generated docs are now available here: http://www.tablefilter.com/docs/class/src/tablefilter.js~TableFilter.html


About the "breaking changes" the save system may have

Does this mean that pull requests for changing the save system won't have to worry about the backwards-compatibility rule? If not, then how much more freedom than normal (if any) are contributors allowed? The page on fungusdocs.snozbot.com did say the system's still in beta.

I'd lean towards don't break, unless you must. I'd also tend to be most concerned with people that are in development of an unreleased project, so internal and public API changes wouldn't be a huge issue but removal of existing functionality would.
What kind of changes are you considering?

The kinds of changes I was considering have been implemented here:
https://github.com/CG-Tespy/Fungus-Slot-based-Save-System (mostly this one)
https://github.com/CG-Tespy/Fungus-Slot-based-Narrative-System
Among other things, they are:

Decoupling the Save and Narrative Log Systems
Making the Save system slot-based
Using the JSONUtility class (first introduced in Unity 2017)

I minimized changing the built-in Fungus API with the first two (I put my custom code into separate namespaces), but that last one poses a problem. This repo's documentation says any changes have to work with Unity 5.0, but my implementation uses the JSONUtility class, which was first introduced in Unity 2017.
Plus, if my implementation were to be accepted in an official release, then much of the old save system's code would need to be thrown away; it's redundant. And that would break systems that were replying on it before.

I think the contribution guidelines need an update, 2017/2018+ makes sense.
I don't think there's anything wrong with replacing or updating the existing save system. If your new system is a whole replacement of the previous and can fit within the existing EventHandlers & Commands that interact with the save system then the impact to users would be near zero.

I agree, it could use an update. And by "existing EventHandlers and Commands", do you mean Save Variable, Load Variable, Set Save Profile, and Delete Save Key? If I remember right, the current official system rendered those obsolete. And my system simply doesn't use those, since it already handles what those commands do.