build: convert linux-x86-sid builder to be a VM

I tried to convert the linux-x86-sid Dockerfile to produce a VM, like the -std and -clang Dockerfiles, but as of -sid (at least recently), Debian is significantly different (systemd based, etc).
After it didn't come up on GCE, I tried to use it interactively with docker2boot --justraw, which spits out the qemu command line to run to interact with it.  The root username is "root" and the password is "r".
Networking was busted, the root filesystem was read-only, etc.
Could anybody spend a bit of time working on this? We only have two left before Docker is gone and we can simplify the coordinator. (he other Dockerfile remaining is nacl, which is a unique butterfly, but should be pretty straightforward I think and I'll try it next.)
/cc @saljam (who seems to like these things :)), @adg, @minux

Here's my attempt thus far: https://go-review.googlesource.com/4874
Maybe can start from that and fix it up?

x/build/cmd/docker2boot uses a hard-coded kernel, do we need to update that
for latest debian sid? Perhaps that kernel lacks some of feature that
systemd
requires.

Perhaps, but I would be surprised.

I used debootstrap to create a root img for latest debian/sid.
I can boot into the system with the hardcoded kernel, and the
network is working correctly.
Roughly, I did this:
fallocate -l 2G root.img
fdisk root.img # create one partition
losetup -P /dev/loop0 root.img
mkfs.ext4 /dev/loop0p1
mount /dev/loop0p1 /mnt
debootstrap
--include=ca-certificates,strace,gdb,gcc,libc6-dev,libc6-dev-i386,gcc-multilib,git-core,curl,net-tools,ifupdown,isc-dhcp-client,procps,lsof,psmisc
--foreign --arch amd64 sid /mnt/ http://http.debian.net/debian/
umount /mnt
qemu-system-x86_64 -machine accel=kvm -nographic -curses -nodefconfig -smp
2 -drive if=virtio,file=root.img -net nic,model=virtio -net user -kernel
vmlinuz-3.16-0.bpo.3-amd64 -initrd initrd.img-3.16-0.bpo.3-amd64 -append
"root=/dev/vda1 init=/bin/bash"
in the guest, execute 2nd state debootstrap and configure network and
/etc/fstab
mount -o remount,rw /
/debootstrap/debootstrap --second-stage
echo "/dev/vda1 / ext4 defaults 0 0" > /etc/fstab
(echo "auto lo"; echo "iface lo inet loopback"; echo "auto eth0"; echo
"iface eth0 inet dhcp") >  /etc/network/interfaces
passwd # set root passwd
mount -o remount,ro /
install grub

My guess is a bunch of packages are missing from the debian:sid docker image. I'll try to figure out what are they in the morning, and if that fails we can just use debootstrap like @minux suggests.

@saljam (who seems to like these things :))

I do like to hurt myself sometimes... :)

Actually, it appears that systemd respects the "ro" flag in the kernel boot params. Changing that in grub.cfg to 'rw' makes it boot fine on my qemu.
Sticking an entry for / in fstab works too. I can send a CL for docker2boot to make it add that if you prefer.

For the record, this was fixed by @saljam's https://go-review.googlesource.com/#/c/4951/

Well, it works in qemu. But it still fails on GCE and the buildlet never comes up after 90 seconds:
ante:build $ gomote create linux-amd64-sid
2015/02/17 17:38:23 Sent create request. Waiting for operation.
2015/02/17 17:38:53 Instance created.
Error running create: failed to create VM: buildlet didn't come up at https://<IP_ADDRESS> in 1m30s

@saljam, any ideas? I suppose I could rebuild with sshd in the VM and see if I could at least ssh to it and see what's up.

Alternatively, how can we get Linux+systemd to log everything to the serial console, such that we can see better logs from GCE's side, which does let us access the serial port output at least?
(It's still never coming up on GCE, at least not running the buildlet)

Hmm, I just tried on GCE. stage0 definitely runs, fetches buildlet-binary-url and executes it—I can see that from the web server logs. Yet pointing at a buildlet indeed doesn't run it. Or it runs and fails. I'm currently uploading an image with ssh to try and figure out what's going on.

Serial port output from GCE:
[    1.585734] Freeing unused kernel memory: 708K (ffff88000154f000 - ffff880001600000)
[    1.587594] Freeing unused kernel memory: 224K (ffff8800017c8000 - ffff880001800000)
Loading, please wait...
[    1.598899] udevd[58]: starting version 175
[    1.621749] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
[    1.688857] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 10
[    1.712603] SCSI subsystem initialized
[    1.739888] scsi0 : Virtio SCSI HBA
[    1.745040] scsi 0:0:1:0: Direct-Access     Google   PersistentDisk   1    PQ: 0 ANSI: 6
[    1.764208] sd 0:0:1:0: [sda] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
[    1.765659] sd 0:0:1:0: [sda] 4096-byte physical blocks
[    1.766900] sd 0:0:1:0: [sda] Write Protect is off
[    1.767867] sd 0:0:1:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.772306]  sda: sda1
[    1.773596] sd 0:0:1:0: [sda] Attached SCSI disk
[    1.776027] sd 0:0:1:0: Attached scsi generic sg0 type 0
[    4.732176] floppy0: no floppy controllers found
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... done.
[    4.786454] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
Begin: Running /scripts/local-bottom ... done.
done.
Begin: Running /scripts/init-bottom ... done.
[    5.008235] random: systemd urandom read with 38 bits of entropy available
[    5.012077] systemd[1]: systemd 215 running in system mode. (+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR)
[    5.013894] systemd[1]: Detected virtualization 'kvm'.
[    5.014612] systemd[1]: Detected architecture 'x86-64'.

Welcome to ESC[1mDebian GNU/Linux 8 (jessie)ESC[0m!

[    5.034799] systemd[1]: Failed to insert module 'autofs4'
[    5.035806] systemd[1]: No hostname configured.
[    5.036437] systemd[1]: Set hostname to <localhost>.
[    5.196335] systemd[1]: Cannot add dependency job for unit dbus.socket, ignoring: Unit dbus.socket failed to load: No such file or directory.
[    5.198034] systemd[1]: Cannot add dependency job for unit display-manager.service, ignoring: Unit display-manager.service failed to load: No such file or directory.
[    5.200168] systemd[1]: Expecting device dev-ttyS0.device...
         Expecting device dev-ttyS0.device...
[    5.208153] systemd[1]: Starting Forward Password Requests to Wall Directory Watch.
[    5.209198] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    5.210203] systemd[1]: Starting Remote File Systems (Pre).
[ESC[32m  OK  ESC[0m] Reached target Remote File Systems (Pre).
[    5.212512] systemd[1]: Reached target Remote File Systems (Pre).
[    5.213312] systemd[1]: Starting Dispatch Password Requests to Console Directory Watch.
[    5.214357] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    5.215505] systemd[1]: Starting Paths.
[ESC[32m  OK  ESC[0m] Reached target Paths.
[    5.217208] systemd[1]: Reached target Paths.
[    5.217802] systemd[1]: Starting Arbitrary Executable File Formats File System Automount Point.
[    5.218930] systemd[1]: Failed to open /dev/autofs: No such file or directory
[    5.219859] systemd[1]: Failed to initialize automounter: No such file or directory
[ESC[1;31mFAILEDESC[0m] Failed to set up automount Arbitrary Executable File...utomount Point.
See 'systemctl status proc-sys-fs-binfmt_misc.automount' for details.
[    5.224167] systemd[1]: Failed to set up automount Arbitrary Executable File Formats File System Automount Point.
[    5.225486] systemd[1]: Unit proc-sys-fs-binfmt_misc.automount entered failed state.
[    5.226487] systemd[1]: Starting Encrypted Volumes.
[ESC[32m  OK  ESC[0m] Reached target Encrypted Volumes.
[    5.228433] systemd[1]: Reached target Encrypted Volumes.
[    5.229139] systemd[1]: Starting Swap.
[ESC[32m  OK  ESC[0m] Reached target Swap.
[    5.230803] systemd[1]: Reached target Swap.
[    5.231364] systemd[1]: Starting Root Slice.
[ESC[32m  OK  ESC[0m] Created slice Root Slice.
[    5.236382] systemd[1]: Created slice Root Slice.
[    5.237007] systemd[1]: Starting User and Session Slice.
[ESC[32m  OK  ESC[0m] Created slice User and Session Slice.
[    5.239205] systemd[1]: Created slice User and Session Slice.
[    5.239957] systemd[1]: Starting /dev/initctl Compatibility Named Pipe.
[ESC[32m  OK  ESC[0m] Listening on /dev/initctl Compatibility Named Pipe.
[    5.242407] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[    5.243424] systemd[1]: Starting Delayed Shutdown Socket.
[ESC[32m  OK  ESC[0m] Listening on Delayed Shutdown Socket.
[    5.245653] systemd[1]: Listening on Delayed Shutdown Socket.
[    5.246414] systemd[1]: Starting Journal Socket (/dev/log).
[ESC[32m  OK  ESC[0m] Listening on Journal Socket (/dev/log).
[    5.248629] systemd[1]: Listening on Journal Socket (/dev/log).
[    5.249417] systemd[1]: Starting udev Kernel Socket.
[ESC[32m  OK  ESC[0m] Listening on udev Kernel Socket.
[    5.251455] systemd[1]: Listening on udev Kernel Socket.
[    5.252257] systemd[1]: Starting udev Control Socket.
[ESC[32m  OK  ESC[0m] Listening on udev Control Socket.
[    5.254264] systemd[1]: Listening on udev Control Socket.
[    5.254987] systemd[1]: Starting Journal Socket.
[ESC[32m  OK  ESC[0m] Listening on Journal Socket.
[    5.256917] systemd[1]: Listening on Journal Socket.
[    5.257572] systemd[1]: Starting Sockets.
[ESC[32m  OK  ESC[0m] Reached target Sockets.
[    5.259350] systemd[1]: Reached target Sockets.
[    5.259969] systemd[1]: Starting System Slice.
[ESC[32m  OK  ESC[0m] Created slice System Slice.
[    5.262058] systemd[1]: Created slice System Slice.
[    5.262702] systemd[1]: Starting File System Check on Root Device...
         Starting File System Check on Root Device...
[    5.265205] systemd[1]: Starting system-getty.slice.
[ESC[32m  OK  ESC[0m] Created slice system-getty.slice.
[    5.267858] systemd[1]: Created slice system-getty.slice.
[    5.268655] systemd[1]: Starting system-serial\x2dgetty.slice.
[ESC[32m  OK  ESC[0m] Created slice system-serial\x2dgetty.slice.
[    5.271673] systemd[1]: Created slice system-serial\x2dgetty.slice.
[    5.272802] systemd[1]: Mounting Huge Pages File System...
         Mounting Huge Pages File System...
[    5.280634] systemd[1]: Started Create list of required static device nodes for the current kernel.
[    5.282265] systemd[1]: Starting Create Static Device Nodes in /dev...
         Starting Create Static Device Nodes in /dev...
[    5.292817] systemd[1]: Mounting Debug File System...
         [    5.295667] systemd[1]: Mounting POSIX Message Queue File System...
Mounting Debug File System...
         Mounting POSIX Message Queue File System...
[    5.304179] systemd[1]: Starting Load Kernel Modules...
         Starting Load Kernel Modules...^M[    5.306232] systemd[1]: Starting udev Coldplug all Devices...

         Starting udev Coldplug all Devices...
[    5.311406] systemd[1]: Started Set Up Additional Binary Formats.
[    5.313016] systemd[1]: Starting Journal Service...
         Starting Journal Service...
[    5.315054] systemd[1]: Started Journal Service.
[ESC[32m  OK  ESC[0m] Started Journal Service.
[ESC[32m  OK  ESC[0m] Reached target Slices.
[ESC[32m  OK  ESC[0m] Started Create Static Device Nodes in /dev.
         Starting udev Kernel Device Manager...
[ESC[32m  OK  ESC[0m] Mounted POSIX Message Queue File System.
[ESC[32m  OK  ESC[0m] Mounted Debug File System.
[ESC[32m  OK  ESC[0m] Mounted Huge Pages File System.
[ESC[32m  OK  ESC[0m] Started Load Kernel Modules.
         Starting Apply Kernel Variables...
[ESC[32m  OK  ESC[0m] Started udev Coldplug all Devices.
[    5.408147] systemd-udevd[202]: starting version 215
[ESC[32m  OK  ESC[0m] Started udev Kernel Device Manager.
         Starting Copy rules generated while the root was ro...
[ESC[32m  OK  ESC[0m] Started Copy rules generated while the root was ro.
[ESC[32m  OK  ESC[0m] Started Apply Kernel Variables.
[ESC[32m  OK  ESC[0m] Started File System Check on Root Device.
[    5.475446] systemd-fsck[191]: /dev/sda1: clean, 14343/196608 files, 171984/786176 blocks
         Starting Remount Root and Kernel File Systems...
[    5.501006] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[ESC[32m  OK  ESC[0m] Started Remount Root and Kernel File Systems.
         Starting Load/Save Random Seed...
[ESC[32m  OK  ESC[0m] Reached target Local File Systems (Pre).
[ESC[32m  OK  ESC[0m] Reached target Local File Systems.
         Starting Create Volatile Files and Directories...
[ESC[32m  OK  ESC[0m] Reached target Remote File Systems.
         Starting Trigger Flushing of Journal to Persistent Storage...
[ESC[32m  OK  ESC[0m] Started Load/Save Random Seed.
         Starting LSB: Raise network interfaces....
[ESC[32m  OK  ESC[0m] Started Create Volatile Files and Directories.
[    5.578839] systemd-journald[199]: Received request to flush runtime journal from PID 1
         Starting Update UTMP about System Boot/Shutdown...
[ESC[32m  OK  ESC[0m] Started Trigger Flushing of Journal to Persistent Storage.
[ESC[32m  OK  ESC[0m] Found device /dev/ttyS0.
[ESC[32m  OK  ESC[0m] Started Update UTMP about System Boot/Shutdown.
[ESC[32m  OK  ESC[0m] Started LSB: Raise network interfaces..
[ESC[32m  OK  ESC[0m] Reached target Network.
[ESC[32m  OK  ESC[0m] Reached target System Initialization.
[ESC[32m  OK  ESC[0m] Reached target Timers.
[ESC[32m  OK  ESC[0m] Reached target Basic System.
         Starting /etc/rc.local Compatibility...
         Starting Login Service...
         Starting Permit User Sessions...
[ESC[32m  OK  ESC[0m] Started /etc/rc.local Compatibility.
[ESC[32m  OK  ESC[0m] Started Permit User Sessions.
         Starting Getty on tty1...
[ESC[32m  OK  ESC[0m] Started Getty on tty1.
         Starting Serial Getty on ttyS0...
[ESC[32m  OK  ESC[0m] Started Serial Getty on ttyS0.
[ESC[32m  OK  ESC[0m] Reached target Login Prompts.
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
         Stopping Login Service...
[ESC[32m  OK  ESC[0m] Stopped Login Service.
         Starting Login Service...
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
         Stopping Login Service...
[ESC[32m  OK  ESC[0m] Stopped Login Service.
         Starting Login Service...
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
         Stopping Login Service...
[ESC[32m  OK  ESC[0m] Stopped Login Service.
         Starting Login Service...
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
         Stopping Login Service...
[ESC[32m  OK  ESC[0m] Stopped Login Service.
         Starting Login Service...
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
         Stopping Login Service...
[ESC[32m  OK  ESC[0m] Stopped Login Service.
         Starting Login Service...
[ESC[1;31mFAILEDESC[0m] Failed to start Login Service.
See 'systemctl status systemd-logind.service' for details.
[ESC[32m  OK  ESC[0m] Reached target Multi-User System.
[ESC[32m  OK  ESC[0m] Reached target Graphical Interface.
         Starting Update UTMP about System Runlevel Changes...
[ESC[32m  OK  ESC[0m] Started Update UTMP about System Runlevel Changes.
^M
Debian GNU/Linux 8 mote-bradfitz-linux-amd64-sid.c.symbolic-datum-552.internal ttyS0

mote-bradfitz-linux-amd64-sid login: [   11.805232] random: nonblocking pool is initialized

We should probably disable systemd-logind.service since it just seems to be forever trying to restart it, and we don't need it: http://www.freedesktop.org/software/systemd/man/systemd-logind.service.html (as far as I ca tell)
But that doesn't seem to be the root problem.
I see rc.local starting:
         Starting /etc/rc.local Compatibility...
         Starting Login Service...
         Starting Permit User Sessions...
[ESC[32m  OK  ESC[0m] Started /etc/rc.local Compatibility.

If we turn the buildlet's stage0 into a proper systemd unit, wouldn't we see the output of it via the GCE serial port?

OK, turns out I had a typo in my buildlet url, and it's now working for me.
$ curl <ip>
buildlet running on linux-amd64

Are you sure your image is using /etc/rc.local and not /etc/init.d/rc.local? Systemd ignores the latter.

Yeah I agree about logind, it's probably not even installed.
Re: serial output. I think by default systemd units' stdout goes to the journal service. I'll dig around to see if there's a standard systemd way to make it go to the system's console.
I guess we can always just redirect stage0's output to /dev/console if we really need to...

Well, good news and bad news: I just deleted everything and tried again, and now it works. I was certain I'd done that yesterday. Not sure what I did differently. Hopefully there wasn't any caching at play here.
Perhaps we should stamp the Docker container hash into the VM image and make it print itself during rc.local (if that goes to the serial console?) so at least when we debug from the GCE serial console logs, we then see which Docker image it came from.  It should probably also include the docker2boot version as well.  Interested in making those additions to docker2boot?
I'll work on whittling down my *-sid additions to the minimum set of packages which work, and disabling the logind service.

Ha! That's kinda scary. I'll work on those additions to docker2boot.
I might as well stop being lazy and convert stage0 to be a systemd service while I'm at it. If we set ForwardToConsole in journald.conf then we'll get everything's output to console. This might be quite noisy but it's better then nothing.

I submitted this without remembering to do the logind deletion too. Want to also clean that up?

Sure, no problems.

Whoops, I submitted https://go-review.googlesource.com/#/c/4874/ without using the correct golang/go#9873 syntax in the commit message.

https://go-review.googlesource.com/#/c/5527/ & https://go-review.googlesource.com/#/c/5528/


Downgraded spammy experiment config error from warning to info.

👓 @spladug

Code looks good and explanation makes sense. Can you make sure your commit message matches the git standard style guide please? https://github.snooguts.net/reddit/styleguide/tree/master/general-style-guidelines#commit-messages (https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
:nail_care:

💇 @spladug
Do I need to squash those merge commits or will that happen when you merge the PR?


Auto-generating isCrossRef

Hi,
I generated a schema.xml file from my mysql database with the propel reverse command.
The schema is well-formed but for the many-to-many relations, I had to put manually the attribute isCrossref=true.
Can this attribute be added automatically ?

I'm afraid there's no solid way to determine which is a many-to-many relation. Sometimes it's only two one-to-many relations to the same pivot table.

The main case for a many to many relation is the link table has two primary key (the two foreign keys).
A pivot table has just one primary key and two (or more) foreign keys.
I wish we could find an alogrithm  that can work for a maximum of cases.

The reverse functionality is actually only a little helper so you don't have to write a complete schema if you already have a database. It's not meant to be used regularly. So if you find a solution, feel free to send a Pull Request, but I'd not want it as an official feature or bug report.


https://www.hackerrank.com/challenges/apple-and-orange/problem

why?

 Maintainers of the repository can add the "hacktoberfest" topic to their repository if they wish to participate. Alternatively, an individual PR can be opted-in with a maintainer adding the "hacktoberfest-accepted" label to the PR.


Added: Ensembl, Myvariant.info, EuropePMC

These are very popular REST APIs in the bioinformatics / medical informatics communities.

Thank you! Please fix the reported Travis CI issues and add example links.


v1alpha2 validation fix/update

What type of PR is this?
/kind bug
/kind cleanup
What this PR does / why we need it:
Fix/Update v1alpha2 validation modules
Which issue(s) this PR fixes:
Fixes #
PR #780 is super slow
Fixes ##826

Thanks @ccfishk!
/lgtm
/approve


Consider removing text::Encode in favour of serde::Serialize

Serde's Serialize trait is implemented for dozens of types in the Rust ecosystem, its derive code is fairly well optimised, and it is the most popular serialization framework we have for Rust.
What do you think of removing the Encode trait in favour of Serialize, to get all the nice things there are in Serde for free?

I would be in favor of that. I should have thought of it before.
@nox would you like to write a first proposal? Before you go all the way, I would suggest writing a small proof-of-concept first to make sure using serde is a viable path forward.

Sure, I'll write a struct Bridge<T>(T) that implements Encode using T's implementation of Serialize, in a separate crate.

I pushed https://github.com/nox/serde_prometheus_labels earlier today.

I published serde_prometheus_labels which provides its own Family<Labels, Metric> type using serde as the encoder.

I mean, () also implements Serialize/Deserialize but you probably shouldn't be able to use () as a label, for instance.

Why not? () should mean "no labels at all".

So I'm not sure Encode can be entirely replaced by serde's traits, as serde's traits are basically implemented for too many types that aren't suitable.

I agree to this, but I would rather rely on serde and not be blocked on some missing implementation. It made the job for us, that's why I published that stuff as a separate crate.

With https://github.com/prometheus/client_rust/pull/105 I don't think we should proceed here, i.e. I don't see the value of replacing the new traits.
@nox I am closing here for now. Please comment here in case I am missing something.
Though I do believe implementing EncodeLabelSet, EncodeLabel, EncodeLabelKey and EncodeLabelValue for more types in std would be helpful.


sap.m.DateTimePicker: Calendar control doesn't show in narrow Chrome window

OpenUI5 version: latest
Browser/version (+device/version): Chrome (latest)
Any other tested browsers/devices(OK/FAIL): IE 11, Firefox OK
URL (minimal example if possible): https://openui5.hana.ondemand.com/explored.html#/sample/sap.m.sample.DateTimePicker/preview
User/password (if required and possible - do not post any confidential information here):
Steps to reproduce the problem:

Bring up sample page
Resize browser and reduce width as much as allowed
Click on one of the calendar icons to bring up the calendar picker control

What is the expected result? Expected that the picker control would consistently appear
What happens instead? On Chrome there is a flash of the control but it doesn't show on screen. Clicking on the calendar icon repeatedly will sometimes show the calendar picker control.
Any other information? (attach screenshot if possible) This appears to only happen when there's not enough width to show the entire picker control.

Hello @cmastrandrea ,
Thank you for sharing this finding. I've created a internal incident<PHONE_NUMBER>.
Regards,
Marin

Hi @cmastrandrea ,
It's fixed and will be downported in 1.48 and 1.46.
Expect it to be available within 2-3 weeks.
Thanks and Kind Regards,
Diana, OPENUI5 control developer


Add codegen job to check that generated code is up-to-date

Fixes #95

Hi @nikola-jokic . Thx for the PR. Can you maybe list pros and cons of using go-version-file vs go-version?

Of course! The go.mod file specifies the go version used when building, testing, etc. The CI only does that automatically, so ideally, we need to set up the specified environment. We should rely on go.mod wherever we can, since it is the source of truth, and specifies the toolchain required (especially from go 1.21 when this change was made).
Just as an example, we used setup go with version 1.21, while our go.mod specified 1.22.4. And we should avoid manual updates to our CI when we can reference it.

Sounds reasonable. The only reason why version was specified explicitly in the workflow, was because of possible drift between Github adopting the new version and official release of Golang. If GIthub is keeping up nicely with releases, i don't mind having this change


Flexibility with raylib-d:install.

In the source code of ‘popka:setup’, it runs ‘raylib-d:install’ directly, without prompting the user to do so.
For those who want to place the raylib linkers manually or literally do not use systems like Windows, Mac or Linux (a very obvious example is FreeBSD), you can choose not to run raylib-d:install in ‘setup’.
It's more of an idea than a bug.

The script could accept a nolibs argument maybe.

@Cyrodwd I change it now and you can pass N or n to disable raylib-d:install.
If you don't pass anything, it will ask you to choose.

Let me know if something does not work.


Windows Authentication with Port mapping (NAT) not working

I tried to use port mapping for the first time with nav/bc and i'am having issues with windows authentication.
When i create a container with the following command (sensible data removed):
& docker run `
  --name natcont1 `
  --hostname natcont1 `
  --network nat `
  --dns=xx.xx.xx.xx `
  --security-opt "credentialspec=file://XXX.json" `
  -e auth=Windows `
  -e username=XX `
  -e usessl=n `
  -e accept_eula=y `
  --publish 10000:80 `
  --publish 10001:8080 `
  --publish 10006-10009:7046-7049 `
  -e publicWebClientPort=10000 `
  -e publicFileSharePort=10001 `
  -e publicWinClientPort=10006 `
  -e publicSoapPort=10007 `
  -e publicODataPort=10008 `
  microsoft/dynamics-nav:2018-ch-ltsc2019

I can connect to the container when using container ip/name on the host, but as soon as i try to connect by using localhost:10000/nav or from an other machine i get an authorization error (401).
If i try to use the same configuration but with UserPassword authentication it works just fine.
Am i missing something? Does Windows Auth not work over NAT or something?
In the past i used transparent network but we currently do not have enough ip numbers left for the amount of containers i intend to create.

This is a general problem and also doesn't work for me with normal ASP.NET core apps running in a container with port mappings. Hadn't time to investigate if that's a problem of Docker and the port mapping or a problem of the authentication handshake. I actually don't know if Kerberos/NTLM also checks hostnames or something similar which could cause this issue.

Instead of using port mapping, you can also use WebClientPort, SoapServicesPort, oDataServicesPort, DeveloperServicesPort, ClientServicesPort and FileSharePort. This will make the container listen to these ports directly without port mapping. I don't know if that makes a difference.

@marknitek I now saw that you're running on Server 2019 and I had above mentioned problems only on 2016.
Running the following did work for me without a problem:
docker run --rm -p 8080:80 --network=nat --name=cde --hostname=cde --security-opt "credentialspec=file://cont4.json" -e auth=Windows -e usessl=n -e accept_eula=y microsoft/dynamics-nav:2018-ch-ltsc2019

I can connect via the hostname of the docker host on port 8080 after making sure the port is opened in the hosts firewall.
From your docker run command I can see that you confused the order of the ports specified in --publish. It should be --publish portOnDockerHost:portInContainer, so for the webclient (as you set it to listen on 10000) it would be --publish 80:10000.

@lippertmarkus I can not confirm that it is working. I tried it with only port mapping and not changing publicWebClientPort.
Yes you are right the config i tried could not work, i mixed port mapping with actually changing the ports like @freddydk suggested.
But it does not work with only mapping the standard ports eighter:
& docker run `
  --name natcont1 `
  --hostname natcont1 `
  --network nat `
  --dns=xx.xx.xx.xx `
  --security-opt "credentialspec=file://XXX.json" `
  -e auth=Windows `
  -e username=XX `
  -e usessl=n `
  -e accept_eula=y `
  --publish 10000:80 `
  --publish 10001:8080 `
  --publish 10006-10009:7046-7049 `
  microsoft/dynamics-nav:2018-ch-ltsc2019

I can see the download site on port 10001 (with the vsix) so it is not a general connection issue, its just a authentication issue over port mapping from another machine then the docker host.

If you use port mapping, you need to set the publicxxxport variables - else the container won't know which URL is the right one.
The "new" way is to use -e WebClientPort=10000 (which reconfigures instead of mapping).

@freddydk thanks for clarification. I tried it this way:
& docker run `
  --name natcont2 `
  --hostname natcont2 `
  --network nat `
  --dns=x.x.x.x `
  --security-opt "credentialspec=file://XX.json" `
  -e auth=Windows `
  -e username=XX `
  -e usessl=n `
  -e accept_eula=y `
  -e WebClientPort=10000 `
  -e FileSharePort=10001 `
  -e ClientServicesPort=10006 `
  -e SoapServicesPort=10007 `
  -e oDataServicesPort=10008 `
  -e DeveloperServicesPort=10009 `
  -p 10000-10009:10000-10009 `
  microsoft/dynamics-nav:2018-ch-ltsc2019

Still getting a 403 when trying to connect from another machine. Http download site works.


Add Map module

A module to map values from one range to anoter is a good utillity to have in the library
I could add additional tests if needed
Implementation based on the following:
http://stackoverflow.com/questions/5731863/mapping-a-numeric-range-onto-another

Coverage increased (+4.3%) to 4.747% when pulling 129e881e8208928ce199818115abdc60ab355bfb on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Isn't this just ScaleBias? I'm all for an easier to use library, but this is redundant.

Well this module is more easy to use as you don't need to pre-calculate the values that will get you to your wanted range. But I agree you can probebly get same results using scaleBias.

I would like to argue that the Invert module can too, be replaced with scaleBias but it got its place in the library.

Map is a poor name. Range would be better. Also you might want to try reusing the ScaleBias internals.

On Apr 16, 2017, at 8:45 AM, dlobi<EMAIL_ADDRESS>wrote:
I would like to argue that the Invert module can too, be replaced with scaleBias but it got its place in the library.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Coverage increased (+4.3%) to 4.747% when pulling 96858684c9c13b903436709bd60fe8638e2fd06b on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+6.5%) to 6.907% when pulling c8d4293b6296b9e42b75920bab727f04723d7731 on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+6.7%) to 7.099% when pulling a2c3b01668cc29fedad8e2e7f7099a6b58933429 on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+7.4%) to 7.795% when pulling 6fbcfd71d780c91fb92dd8b78189afcedef0ca1f on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+6.7%) to 7.121% when pulling cd82c7e529b16bd267af6a551a837ea4681572e0 on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+6.9%) to 7.312% when pulling 2b141eb5c0159a2a977695fa87a01d11dccf45ea on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.

Coverage increased (+7.0%) to 7.415% when pulling d369d8de2a9c5c5e52dd7fcc672557f94b8b9326 on dlobi:feature/map-module into 0a3d95e3ae73e5381603ca7c9c86804e82d71ef3 on flow:develop.


Remove binaries from test resources on main

Based on recent comment from @justinmclean [1][2] - we need properly remove binaries (compiled code) from our test resources.
[1] https://lists.apache.org/thread/3176kvtgo0o9cljyzsc3dqj6svrxpd21
[2] https://lists.apache.org/thread/q6zp3v3lwxslh0mmydyzlb22r5ght2p8
Related issue: https://github.com/apache/incubator-kie-issues/issues/1601

@thiagoelg https://github.com/apache/incubator-kie-tools/pull/2722
@gitgabrio https://github.com/apache/incubator-kie-kogito-runtimes/pull/3759
@mariofusco https://github.com/apache/incubator-kie-drools/pull/6141

https://github.com/apache/incubator-kie-tools/blob/main/packages/dev-deployment-upload-service/tests/test.zip doesn't contain any compiled code, so I guess we can keep it on main. Nothing against removing it on 10.0.x though, if it helps the release.

@tiagobento we then need to add a NOTICE-BINARY file to justify it, for 10.0.0 better remove all the friction...

@jomarko here
https://github.com/apache/incubator-kie-kogito-runtimes/pull/3760#pullrequestreview-2412311451

Thank you for tracking integration-tests-quarkus-gradle/pom.xml comment @porcelli . Feel free to add me as reviewer for #1602 if needed once opened.

Hi @porcelli , we will rewrite the tests in main branch so that we don't need to have binaries in the codebase. But 10.0.x branch will go with disabling the tests, correct?

thank you @tkobayas - for 10.0.x I already addressed removing and disabling everything. We just need address this on main.

Done by
https://github.com/apache/incubator-kie-tools/pull/2722
https://github.com/apache/incubator-kie-kogito-runtimes/pull/3759
https://github.com/apache/incubator-kie-drools/pull/6141


After placing the green marker and hitting the "Clear Markers" button, the first marker placed is the red marker, no other markers will be placed, and the "Clear Markers" and "Time and Date" buttons will not respond.

bug fix. see the pull request #39


[hotfix][connector-clickhouse][docs] Updated bulk size desc

Purpose of this pull request
Updated bulk_size description from number of data written to number of rows written.
Check list

[x] Code changed are covered with tests, or it does not need tests for reason:
[ ] If any new Jar binary package adding in you PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs

LGTM.


minHeight behaves erroneously with non integral values

On providing minHeight with non integral values the children view with flex: 1, gets height = 0.
<View style={{minHeight: 1.23}}>
  <View style={{flex: 1, backgroundColor: 'red'}} />
</View>

React Native version: 0.33
Platform(s) (iOS, Android, or both?): both
Operating System (macOS, Linux, or Windows?): Mac

It works fine on the master branch.

Okay then it might be solved.


Add notifications on configuration and state changes from OpenThread.

This is an enhancement for #143.
Example state changes that will cause a notification:

IPv6 address added/removed
Device state (offline, detached, attached)
Device role (disabled, detached, child, router, leader)
Partition ID
Key Sequence
Child added/removed

👍

want


Add Travis CI integration

I'd like to add Travis CI to this project, so that we can increase it's adoption among open source contributors.

I can see how this might make sense adding Travis CI to
"ESAPI/esapi-java-legacy", but I'm not quite seeing the
value of adding it to "ESAPI/esapi-java", because in reality,
at this point, there is no THERE THERE. Presently, it is only
a set of interfaces and incomplete ones at that so there
is not really much there too 'build' if you will. But whatever.
Chris Schmidt had already set up a CloudBees (Jenkins) CI
instance at https://esapi.ci.cloudbees.com/, so I'm not really
sure why we should have BOTH a Jenkins and Travis-CI instance.
I mean, it that's what people expect / want and it doesn't
cost ESAPI anything, then go for it. But I just wasn't sure
if you were aware of the CloudBees nightly builds.
-kevin
On Mon, Mar 14, 2016 at 6:59 PM, Brian Long<EMAIL_ADDRESS>wrote:

I'd like to add Travis CI to this project, so that we can increase it's
adoption among open source contributors.
—
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4.

--
Blog: http://off-the-wall-security.blogspot.com/    | Twitter: @KevinWWall
NSA: All your crypto bit are belong to us.

@b-long Could you please explain to a relative CI newb like me why we need / should have BOTH a Jenkins AND a Travis-CI nightly build? What's the advantage? And what, if anything, is the downside?

I believe we just need one CI. I don't see any advantage of having both.

CI build != nightly build.  The difference is in frequency of builds and merges.  CI attempts to merge frequently and build the code more frequently than once a day, including running all unit tests, to ferret out any integration issues with the code changes.  If there are not very many contributors, and therefore not many merges to master during the day, then the frequency probably would not have a practical effect.
You could set a build to run at least hourly, for example, so long as there were commits in that hour.
Was the plan to add more frequent builds to the Jenkins setup?
Which option would be easier to manage (especially access management) and monitor for build failures?  I haven't used Travis but have seen that github can display the current CI build status; not sure if it has the same option for Jenkins.

Sorry for the spam all, I didn't see all the traffic on this thread when I last commented on #3 .
Right, so, CI attempts to build continuously .  The important characteristic in today's open source world is to build all merge requests before you merge.  The other important characteristic is to be simple.  Jenkins is not simple IMHO (I've been a fan of it since 2010, but this winter was the last straw).
Modern CI systems are highly flexible and can be setup in minutes.  All of them provide the build badges you've mentioned.  There are many offerings that are provided as a service for free: wercker, appveyor, and travis are just a few.  What's more, you can build on Linux, Mac and Windows using these and have confidence that your build works on all target platforms.  Since each of these are free, there's no down-side to using multiple offerings.  Typically, by building on Linux, Mac and Windows your tests will become even more robust.

I understand the concept of CI & how the 'c' is continuous. Just sayin'
the CloudBee's Jenkins instance is apparently set up to do nightly builds.
Given how we only get commits less than 1x/month for ESAPI 2.x and never
for ESAPI 3, I think that schedule is fine.
What is holding up progress IMO is not CI related, but is rather simply not
enough people contributing bug fixes.
-kevin
Sent from my Droid; please excuse typos.
On Mar 15, 2016 9:30 AM, "Brian Long"<EMAIL_ADDRESS>wrote:

Sorry for the spam all, I didn't see all the traffic on this thread when I
last commented on #3 https://github.com/ESAPI/esapi-java/issues/3 .
Right, so, CI attempts to build continuously . The important
characteristic in today's open source world is to build all merge requests
before you merge. The other important characteristic is to be simple.
Jenkins is not simple IMHO (I've been a fan of it since 2010, but this
winter was the last straw).
Modern CI systems are highly flexible and can be setup in minutes. All of
them provide the build badges you've mentioned. There are many offerings
that are provided as a service for free: wercker http://wercker.com/,
appveyor https://www.appveyor.com/, and travis https://travis-ci.org/
are just a few. What's more, you can build on Linux, Mac and Windows using
these and have confidence that your build works on all target platforms.
Since each of these are free, there's no down-side to using multiple
offerings. Typically, by building on Linux, Mac and Windows your tests will
become even more robust.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub:
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-196818057

I favor Travis-CI for OSS projects a lot over Jenkins, as they basically offer a full-grown CI service for free w/o need for maintenance etc. You get free build matrix (e.g. for multiple JDKs) and tons of useful free cloud services (e.g. Coverity, Coveralls etc.) that integrate with Travis-CI.

@kwwall IMHO, there are a few issues with Jenkins :

Visibility (Where is it?)
Control (What if there's a problem?)
Cost (Maintenance)

This PR of mine needs some work.  Separately, I'm trying to convey the value in the esapi-legacy project.  Here's the diff and here's the build badges showing the value in the README .  Notice, this project is having issues building on Windows.

I think most of people are in favor TravisCI, and with all concerned that
have been raised about Jenkins, I'm convinced that TravisCI is our best
shot. Should we move on and get it configured ?
2016-03-29 13:05 GMT-04:00 Brian Long<EMAIL_ADDRESS>
@kwwall https://github.com/kwwall IMHO, there are a few issues with
Jenkins :

Visibility (Where is it?)
Control (What if there's a problem?)
Cost (Maintenance)

This PR of mine needs some work
https://github.com/ESAPI/esapi-java/pull/5. Separately, I'm trying to
convey the value in the esapi-legacy project. Here's the diff
https://github.com/b-long/esapi-java-legacy/pull/1/files and here's the
build badges showing the value in the README
https://github.com/b-long/esapi-java-legacy/tree/ci-integration#readme
. Notice, this project is having issues building on Windows
https://ci.appveyor.com/project/b-long/esapi-java-legacy/build/9.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-203001072

--
Cheers,
Ramzi

I have no objection to using TravisCI instead of Jenkins via CloudBees.
BUT, if we are going to do that, let's also do it for ESAPI-java-legacy as
well since that at least has some real implementation code behind it an is
not just interfaces.
@chrisisbeef - you okay with that?
-kevin
Sent from my Droid; please excuse typos.
On Mar 30, 2016 3:31 PM, "Ramzi Maalej"<EMAIL_ADDRESS>wrote:

I think most of people are in favor TravisCI, and with all concerned that
have been raised about Jenkins, I'm convinced that TravisCI is our best
shot. Should we move on and get it configured ?
2016-03-29 13:05 GMT-04:00 Brian Long<EMAIL_ADDRESS>
@kwwall https://github.com/kwwall IMHO, there are a few issues with
Jenkins :

Visibility (Where is it?)
Control (What if there's a problem?)
Cost (Maintenance)

This PR of mine needs some work
https://github.com/ESAPI/esapi-java/pull/5. Separately, I'm trying to
convey the value in the esapi-legacy project. Here's the diff
https://github.com/b-long/esapi-java-legacy/pull/1/files and here's
the
build badges showing the value in the README
https://github.com/b-long/esapi-java-legacy/tree/ci-integration#readme
. Notice, this project is having issues building on Windows
https://ci.appveyor.com/project/b-long/esapi-java-legacy/build/9.
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-203001072

--
Cheers,
Ramzi
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-203597035

As previously mentioned - I am completely impartial to which CI server software / hosting we go with. What is more important to me is that it allows us to do releases (without making drastic and/or incompatible changes to our build/release strategy) and that someone owns this.

Could you post a list of requirements that todays Jenkins fulfills so we can check if Travis gives us the same or similar features? Then I'm happy to help setting up the corresponding YAML configuration for Travis here and in the legacy project.

@bkimminich - The CI vision was never fully realized with Jenkins, so really what my list of requirements are (for both esapi-legacy and esapi-3)

Continuous/Nightly Builds (nightly pushed to Maven Central)
Published test reports
PR Building
Pushbutton Release

And, I would add someone to take ownership of the CI process and be will to
attend to it in a timely fashion, when / if something goes awry. (I don't
mean fixing broken builds or tests, but rather coordinating with people to
get those things done, attending to CI infrastructure problems, etc.)
-kevin

Continuous builds = no problem, Travis builds on every GitHub push / Nightly builds = Intentionally not supported by Travis (https://github.com/travis-ci/travis-ci/issues/582) but would be possible with some 3rd party service (e.g. https://nightli.es)
Travis doesn't persist build artifacts or reports, but it can certainly deliver them somewhere during the build process. Or we can integrate some convenient service like http://coveralls.io (e.g. via https://github.com/trautonen/coveralls-maven-plugin) or https://scan.coverity.com which directly supports Java projects.
Travis supports building all PRs separately.
This does not fit into the Travis approach. But it's possible to get something similar, like doing the release building and publishing to GitHub when a tag is built: https://docs.travis-ci.com/user/deployment/releases/

I've implemented a Travis CI build for my fork of https://github.com/ESAPI/esapi-java-legacy including integration with Coveralls (measures test coverage) and Coverity (measures code quality). I could send a PR for that, but you'd have to change the coverity token (secure: "..." in the .travis.yml) because the current one is valid only in my fork.

We already have a Coverity instance for ESAPI Java legacy.
I can add you to that one, but I prefer not to have multiple ones.
-kevin
Sent from my Droid; please excuse typos.
On Apr 11, 2016 4:26 AM, "Björn Kimminich"<EMAIL_ADDRESS>wrote:

I've implemented a Travis CI build for my fork of
https://github.com/ESAPI/esapi-java-legacy including integration with
Coveralls (measures test coverage) and Coverity (measures code quality). I
could send a PR for that, but you'd have to change the coverity token (secure:
"..." in the .travis.yml) because the current one is valid only in my
fork.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-208225330

@kwwall Kevin, it just doesn't make sense that ESAPI isn't doing some of the things that engineers have come to expect from modern/robust projects.  Consider the node mysql README or the node express README.  Just glancing at the top of these documents we get a great sense for the stability and richness of the projects.  Just as the code is open to the world, so should the CI system (and it should invoke all of your development platforms).  I tried to do this for the group, but I was disheartened by the response.  If you would please, just take a look at this : https://github.com/b-long/esapi-java-legacy/tree/ci-integration#readme .  It's addressing the legacy project, but right away we see that we might have work to address.

You already are on Coverity, then the only thing you need is to change the secure token from mine to yours and you get a free analysis whenever you merge+push to the coverity_scan branch. Coveralls is not even requiring a token, so it just needs to be setup via their website.
I'll submit my changes as a PR. If you like I can do the same setup for ESAPI 3.X even if there is not much to build, test and scan today.
Am 11. April 2016 16:30:44 MESZ, schrieb "Kevin W. Wall"<EMAIL_ADDRESS>
We already have a Coverity instance for ESAPI Java legacy.
I can add you to that one, but I prefer not to have multiple ones.
-kevin
Sent from my Droid; please excuse typos.
On Apr 11, 2016 4:26 AM, "Björn Kimminich"<EMAIL_ADDRESS>wrote:

I've implemented a Travis CI build for my fork of
https://github.com/ESAPI/esapi-java-legacy including integration with
Coveralls (measures test coverage) and Coverity (measures code
quality). I
could send a PR for that, but you'd have to change the coverity token
(secure:
"..." in the .travis.yml) because the current one is valid only in my
fork.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-208225330

You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/ESAPI/esapi-java/issues/4#issuecomment-208375310

@b-long as I said, I have no inherent objections regarding using Travis-CI or even incorporating build badges, etc. into our README.md. However, OTOH, I'm not sure it's a good idea to do that until we address the JUnit test failure that happens periodically in the esapi-java-legacy builds. (See issue 352, https://github.com/ESAPI/esapi-java-legacy/issues/352, there). @xeno6696 opened that bug and we've assigned it to @JeremiahJStacey. I'm not sure what the status is, but until we consistently get clean JUnit runs, I'm not sure I see any advantage of putting up build badges that shout to the world "Hey world, look at our mess!". If you think it will motivate people to pitch in and help with trying to fix it, then go for it. I'm just thinking it might have the opposite effect. (The code coverage can wait until a bit later; it's rather abysmal by my standards, but part of that is the fact that unit testing using mock objects is a royal PITA in ESAPI because of all the f'ing singletons. IMO, we need a redesign there. I'm doing that for the JavaEncryptor but I don't plan on touching the other components.)
In the meantime, I had a few additional questions regarding @bkimminich's pull request over on esapi-java-legacy, but otherwise, I think we can pull this off soon.


Adding new links after implementing pagination causes issues with the subscription

I just finished the tutorial on the page and noticed that pagination is causing some issues. Once implemented, new links that get submitted are not automatically appearing in the list unless the page is fully refreshed. Surprisingly enough in another window those get automatically added via the subscriptions regardless.
My assumption is that the local cache is not invalidated after adding a new link in the first place. Can anyone confirm this odd behaviour?

Thanks @ChristianIvicevic for opening this issue 😄. That's the current behaviour to not over complicate the tutorial. Closing this!


BZ1274349: Asset Management: Branch selector partially hidden. Setup drools-wb-webapp to support Asset Management

See https://github.com/droolsjbpm/drools-wb/pull/85
(cherry picked from commit 7609274d80951c0716d57532d93da865df21cae4)

Thanks.
master: 9bbc4bcddad85b6a70a9f39242f8b9200e637266
Build error is unrelated, looks like it ran OOM. /cc @psiroky

Yeah, the build error was caused by bad configuration done by me. Sorry about that, it is fixed now.


SignalError fixes, ContextHandler

This PR patches SignalError to be detectable via errors.As, and provides a better alternative ErrSignal that can be used with errors.Is. It also adds a ContextHandler as suggested in #24 , and bumps the version of Go to 1.20.
These changes should be backwards compatible, so I'll tag the merged version as v1.2.0.

@peterbourgon it looks like the tag hasn't been pushed to the repo. Do you still have plans for a new tag?  Thanks!


Server not starting when eager_load is set true

Describe the bug
The rails application is not being loaded
To Reproduce
Configure the rails application by setting config.eager_load = true
Expected behavior
Server need to be loading even when eager_load is enabled
Screenshots

Ruby version : 3.1.2
Rails version : 7.0.8
Langchain.rb version 0.13.4

@Sri-Kailash-V Thanks for flagging; Looks like some of the changes here will need to be reverted.

@andreibondarev when can we expect this to be fixed? can we raise a PR for the same, would you be able to merge it and add it in next release?

I spent some time looking how to disable the Style/ArgumentsForwarding rule project-wide and haven't been able to figure it out yet. Happy to take a PR if one of you wants to take a look!

I spent some time looking how to disable the Style/ArgumentsForwarding rule project-wide and haven't been able to figure it out yet. Happy to take a PR if one of you wants to take a look!

If it’s still relevant I could take a look.

I spent some time looking how to disable the Style/ArgumentsForwarding rule project-wide and haven't been able to figure it out yet. Happy to take a PR if one of you wants to take a look!

If it’s still relevant I could take a look.

That would be huge help!

Hi @Sri-Kailash-V. Could you please try to upgrade to the latest version of langchainrb (0.14.0) and check if the problem is still there.

@Sri-Kailash-V @lssachin Should be fixed on main now. Apologies for such a long delay!


refactor: make logout route redirect declarative

Description:
Refactor Logout route to use declarative redirect approach as was done for the Initializer route in #1561

How Has This Been Tested?
Manually

Types of changes:
Refactor

Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[x] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage increased (+0.002%) to 20.72% when pulling f96c37b00868214c0e9da8bdad2cf89a835e8644 on korhaliv:refactor/logout into 18b42a3dae60c4fab4c54845a29dacfa156c3faa on LN-Zap:next.


Specification unclear on the key to use in JSON:API relationships

As we've found in trying to resolve #386, the specification is presently unclear on what key one should use for the various JSON:API relationships one include in the relationship dictionary as part of a JSON:API-formatted response.
Given that we do not say anything about it, one may be led to believe that any key is permissible. However, the output-format-agnostic description of relationships in 3.6 Relationships makes no reference to a free-form "key" or "name" tied to an OPTIMADE relationship, so this is then some data that would only appear in a JSON:API response.
From the discussion in #386 it seems we have (at least) two options:

Mandate that the key must be the entry type (e.g., "structures"), and thus that there is no contextual "grouping" of related entries, but rather, all related entries of the same type are grouped, and cannot be grouped with entries of a different type. This can be done by: Edit 5.3.2 Entry Listing JSON Response Schema and for the definition of the "relationships" field say that: "Relationships MUST be grouped into a single JSON API relationships object for each entry type and placed in the relationships dictionary with that entry type name as key (e.g., "structures").

Preserve the possibility of a free-form JSON:API relationship key that can "group" related entries (possibly of different types) under a name. This can be done by describing the feature of a 'relationship name' to 3.6 Relationships. Preferably with some hint in the implementers note about how one can encode these names in more straightforward key-value based output formats (e.g. "type name + '_' + relationship name"?). It is probably also a good idea with a clarification in 5.3.2 that the key in this dictionary field represents this "relationship name".

We probably need to sort this out before merging #386.

Although we don't currently mandate 1. in the specification, it's somewhat implicit in 6.2.7 Filtering on releationships where the only examples given are for filtering on relationships of <entry_type>, since they are the only protected non-attribute/filter language keywords in the spec. If we were to standardize on 2., there would either need to be a corresponding change to the filtering process, or restrictions on the allowed values of the relationship name. Examples:

Current mechanism for filtering on the structure->reference relationship:
/structures?filter=references.id HAS "ref1"
Probably undesirable cases we would need to worry about:
/structures?filter=chemical_formula_anonymous.id HAS "ref1", /structures?filter=_cod_spacegroup.id HAS "ref1"

I think I would prefer any sufficiently complicated relationship (i.e., of multiple types) with a description that covers the whole set (as opposed to the relationship descriptions which a per-link) to be implemented as a collection, i.e., we standardize on 1.

I agree - option 2 is a major revision that affects multiple parts of the proposal, and option 1 is essentially 'what we meant all along', which only needs a rather minor clarification. Nice observation that the loss of functionality in not allowing arbitrary grouping in relationships is offset by collections.
So, I guess I'll draft up the option 1 clarification as a PR unless someone else objects.


Update latest version on website to 2.0.3

Keepass prompts to update KeeAnywhere to version 2.0.3 but the latest version linked on https://keeanywhere.de is 2.0.2.
I did eventually find the download by changing the version numbers in the download link, but it should be updated on the website.
Thanks in advance.

Thanks for pointing to this, I forgot to update the Homepage-Link.
It should now be correctly.


Retry with upper case X in bnum checksum if ALTO fetch fails

What is this PR trying to achieve?
Fix a case mismatch between what is in the METS file for a given ALTO path and what's actually on disk
Who is this change for?
Storage migration

Closing in favour of https://github.com/wellcometrust/storage-service/pull/24


Support Chinese name

Please add an option to change the font used to render the name.
Otherwise the default Arial font does not support the Chinese name. The name is rendered as squares.
The relevant codes are as follows,
    def __draw_header(self, d):
        text_color = self.colors["text"]
        #  title_style = "font-size:12px; font-family:Arial; font-weight:bold;"
        title_style = "font-size:12px; font-family:'Inziu Iosevka SC'; font-weight:bold;"
        d.add(d.text(self.title, insert=(10, 20), fill=text_color, style=title_style))

will do it maybe Monday or do you have interest to open a PR to support that thanks

Done use --font to support


Some Icons not displaying

Some of the icons don't appear to be displaying properly....
config.json:
{
        "title" : "Imfeld Family Dashboard",
        "items" : [
                {
                        "alt" : "BabyBuddy",
                        "icon" : "fas fa-baby",
                        "link" : "https://baby.SITE.com"
                },
                {
                        "alt" : "Recipes",
                        "icon" : "fas fa-hamburger",
                        "link" : "https://recipe.SITE.com"
                },
                {
                        "alt" : "File Storage",
                        "icon" : "fas fa-folder-open",
                        "link" : "https://files.SITE.com"
                },
                {
                        "alt" : "Website",
                        "icon" : "fas fa-globe",
                        "link" : "https://www.SITE.com"
                }

        ]
}

I'm thinking it is from outdated font-awesome, but I cannot seem to get the latest work with your code. any help is appreciated

the problem is that fontawesome 4 is used and these don't contain the icons you want to use. But I just updated the font and made a pull request.


Allow different shapes for y_true and y_pred in graph mode

System information

TensorFlow version (you are using): 2.2.0
Are you willing to contribute it (Yes/No): No

Describe the feature and the current behavior/state.
Currently, running Keras in graph mode means that y_true and y_pred in the loss function passed to Model.fit() must have the same shape. Although this works in eager mode, I would like to be able to train models where y_true and y_pred are different shapes while benefiting from graph mode. My use case is that y_true has an extra final dimension of size 2, where index 0 gives the labels and index 1 gives a sample weight which I use for weighting my loss function (e.g. multiplying some pixels by zero).
This relates to the following issue in the Keras GitHub but there wasn't a satisfying solution provided: https://github.com/keras-team/keras/issues/4781
For the time being I'm simply adding an extra dimension of size 1 to the y_pred from my model using tf.expand_dims. However, this is inconvenient for the rest of my codebase where I now have to slice out the final dimension of my model's predictions.
Apologies if this has already been addressed in a later version of TF or if I've missed something...

Keras supports sample weighting in a separate argument, why does that not cover your use case?

@deeb02 Thank you for your reply. Does the passing sample_weight as a third element from a data loader in Model.fit work with custom metrics?

@tom-andersson Yes, it should work with custom metrics or loss but your custom metrics or loss class must support sample weights


Check for not-exactly-representable ints in more places in YAML.

Specifically constraints and config variables.
Problem
Trying to use 0xFFFFFFFFFFFFFFFF in constraints or config vars doesn't fail out and just silently gives you the wrong values.
Change overview
Make the bad situation fail codegen, with a helpful error message.
Testing
Tried such values in constraints and configs.

Fast tracking testing improvements.


Stop new tabs from opening on click

Every link currently opens in new tab. Change this to open in same page.

fixed. Commit #17  will need to be done for other views

Reopening until the PR gets merged

This got merged, we forgot to close the issue


Debugging Razor Class library VS 2017

I am trying to debug a razor class library hosted by external process.
I have set the configuration to a Launch: Executable this indeed start the executable but it don't seem that Visual Studio attaches to the process as i don't see no modules to be loaded and cant break.
In contradiction with a normal .NET class library when using the same approach Visual Studio attaches correctly to the launched process and debugging/breaking is possible.
Here is example of launchSettings.json
"profiles": {
"SampleModule": {
"commandName": "Executable",
"executablePath": "C:\Programs\executable.exe",
"workingDirectory": "C:\Programs\"
},

This issue was moved to aspnet/Razor#2628


fix(vue): destroy componentInstance and not the parent component

context points to the parent component, so in some cases this would destroy a parent component instance, causing reactivity and interaction to stop working.
Changing it to componentInstance should now correctly destroy the component instance for the cell rather than any parent.
https://github.com/vuejs/vue/blob/8d3fce029f20a73d5d0b1ff10cbf6fa73c989e62/src/core/vdom/vnode.js#L13

Nice one @rigor789 sorry about that :p


[BEAM-3570] Adding a static getter for RuntimeValueProvider.

r: @aaltay
This may be more elegant. What do you think Ahmet?

LGTM


Implement Tinkerbell reconcile CP

Issue #, if available:
Description of changes:
This PR implements the Tinkerbell Cluster Reconciler phase: ReconcileControlPlane.
Additionally, a TinkerbellUseDiskExtractorDefaultDisk flag has been added that forces the diskExtractor to use /dev/sda disk by default as discussed. This is temporary until the diskExtractor logic can be removed from the reconciler.
Testing (if applicable):
Unit tests
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/test all

/lgtm

/test eks-anywhere-presubmit

/test eks-anywhere-e2e-presubmit

/approve

/test eks-anywhere-e2e-presubmit


Fix last character in ASCII selection.

Without this the last character is not selected
-space for hex
-but more importantly the last ascii too
https://github.com/Dax89/QHexView/issues/63
Signed-off-by: Andrea Odetti<EMAIL_ADDRESS>

Merged, thanks!
Be aware that I'm doing (in my free time) a partial rewrite of this widget which make code easier to extend and maintain.

Can we see it?

Currently it's in early stage, not much too see.
I'm just able to render data as bytes/word/dwords and so on dynamically, keyboard and inputs are not working (yet).
I will commit it in a separate branch so I doesn't break the master one and it can be tested.


[RadioGroup] Add disabled prop to Root

Description
Allows setting disabled on the root RadioGroup, setting all Radio items as disabled. ~Individual Radio items can still set disabled={false} to override the group's setting.~
The first commit simply fixes a typo that I noticed, hope that's okay to include.

My reasoning was 2-fold:

At least one other library I was testing (Chakra) does this, not that this means much.
The current behaviour is simply a "shorthand" to manually setting disabled on each item, so it made sense to be able to override on individual items if needed.

I agree with your reasoning, though. I'll change the implementation to do that. I'll further set data-disabled on the root, then, and I was thinking of adding a tabIndex={-1} to the root as well, what are your thought on this?

From Discord:

@benoit Testing the disabled on the radio-group's root, I noticed something on the current radio-groups that I'm not sure is wanted: why does the group itself have tabIndex="0"? This means that the group will catch focus even if all radios within are disabled.

In a "vanilla" radio group this doesn't seem to happen. Is this behaviour correct?
just tested a bit more and this might make sense, it seems like in a "vanilla" group if the currently selected radio is disabled, it doesn't let me tab into the whole group because it tries to tab into the selected one only

Yeah, that's how we handle focusing the correct item when tabbing through the page, focus lands on the group, and the groups throws it back to where it knows it should be.
That does mean that in this case, when the whole group is disabled here, we need to override that tabIndex.
I think something like this to only override when we need and otherwise leave it to what is set by RovingFocusGroup:
<RovingFocusGroup.Root
  asChild
  {...rovingFocusGroupScope}
  orientation={orientation}
  dir={direction}
  loop={loop}
+  {...(disabled ? { tabIndex: -1 } : {})}
>

This still doesn't cover the case where all items are manually set to disabled, in which case the group is still focusable. Would you like me to do something about this?
We could use the context to track the number of items vs number of disabled items and set tabIndex to -1 when all items are disabled.

This still doesn't cover the case where all items are manually set to disabled, in which case the group is still focusable. Would you like me to do something about this?

That's a great point!
It looks like perhaps a better place to deal with this would be in RovingFocusGroup itself, if all items are "non-focusable" then we'd remove the tabIndex requirement from the top.
Then it would just work automatically for radio group here, because all the items would be made disabled/thus non-focusable from RovingFocusGroup POV.

It looks like perhaps a better place to deal with this would be in RovingFocusGroup itself, if all items are "non-focusable" then we'd remove the tabIndex requirement from the top.

I've pushed the other changes for now, I'll try to have a go at implementing that.

@benoitgrelard, I had a go at it and I don't think it's an easy change.
I think we'd have to actively track the disabled state across items, which would likely involve changes in all components using roving focus.
I tried to use getItems, check if none are focusable, and set tabIndex={-1} in such case; however, this needs to run whenever there are changes to the disabled state of individual items, when new items are added to the group, etc. Either that or we'd want to run this just before the user tabs into the group, which I don't think is possible.
Anyway, unless I'm missing something, I suggest we land this as-is, as it's still a strict improvement over the current behaviour (at least with this implementation setting disabled on the group does prevent focusing it).

It looks like perhaps a better place to deal with this would be in RovingFocusGroup itself, if all items are "non-focusable" then we'd remove the tabIndex requirement from the top.

Then it would just work automatically for radio group here, because all the items would be made disabled/thus non-focusable from RovingFocusGroup POV.

The above is implemented.
This PR should be ready for review. The only limitation of the current implementation is that if all focusable items are also hidden (display: none), then the group will still be focusable. I think that handling this edge case reliably would be quite difficult and probably not worth it.

Rebased against main. This should be ready for review again.

I think the release should be marked as minor instead of patch as it introduces a new API and new behaviour. I'll change the yarn versions file to reflect that.

I marked all changes as minor, let me know if I should mark some dependencies as patch instead.


Adding Fast Quadric Mesh Simplification support

Working on implementing this really cool piece of tech:
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification
This takes in a mesh, optimizes the vertices and faces to a reduction factor and gives you a resulting mesh.
Note that due to the way meshes are loaded into Godot multi material meshes will always have seam issues. But in combination with game optimization turning a mesh into a single material mesh with all textures baked into one this will be a powerful automatic LOD tool.
Lots of work left to be done. Need to remove duplicate vertices to solve seam issues. Have to add texture coordinates, etc.

UVs and seams work fine now, last thing to do is normals :)

OK I have normals and tangents working though tangents seem inverted somehow (or maybe they are wrong on the source object). I think it's time to merge this


Whitelisted through blocks + Break block destroys projectiles

Current Behavior
If you combine the Projectile Through feature with WMC's break block feature, the block will break but the projectile will be destroyed, failing to go through it.
Expected Behavior
The projectile should destroy the whitelisted block, but still go through without the projectile being destroyed.
Steps To Reproduce

Use this config.
Shoot through glass panes, glass pane breaks and projectile disappears.
Shoot through normal glass, glass does not break, but projectile goes through fine.

Version and Log
There are no console errors.

Anything else?
This is only the case if you use whitelisted blocks.
If you use Allow_Any, then projectiles pass through blocks also being broken fine.

I think this issue is caused because the block is broken before the projectile calculates through, which means that suddenly projectile is going through AIR (which is not on the list for Through, since of course it isn't!)
More testing required.

Fixed in 77bd2ab

The fix has been improved as block ray tracing now returns the block state instead of x-y-z coordinates.


Use onPremisesSecurityIdentifier for the gid/uid

Currently gid isn't provided in the lookup and relies on manual mapping. The uid is derived from ImmutableId but didn't work for me (since it's the bytes of the on-prem ObjectID) and doesn't allow for an easy lookup (eg getpwuid). Instead, why not use the relative ID portion of the SID?
Possible drawbacks:

only works in cases where users are sync'ed from on-prem AD
potential collision for environments with multiple AD domains

That said, even with those two caveats, it probably covers a majority of people, and provides a nicer out of the box experience.

Daaaang this is good stuff. I'm only just now getting into reviewing, but I really like the idea of using the SID.


Crystal cell crystal invisible with shaders enabled.

Simple as that the crystal is invisible only with shaders enabled
using a Minecraft 1.20.1 install with just:
NeoForge 47.1.106
Embers Rekindled 1.20.1-1.3.9
Oculus 1.7.0
Embeddium 0.3.31+MC1.20.1
Embeddium++ 1.2.13
JEI <IP_ADDRESS>
and complementary reimagined 5.2.2
Screenshots included as well.

you can change the renderer to the fallback renderer in the embers-client config file - doing so should improve shader compatibility

That did the trick, thanks for the quick response

What is oculus doing to my quads 💀


Commitments and Obligations Weirdness

A Commitment is defined textually as: "An obligation (possibly unilateral)." which suggests that an obligation might not be two way.
An Obligation is defined in axioms to be any Commitment with both a giver and a getter. This rules out unilateral obligations. It's also circular.
A ContingentObligation is any commitment with a giver that is triggered by an event, but it need not have a getter either.
In English, a contingent obligation sounds like a type of obligation so why is it not a subclass? Its seems similar to a  PlannedEvent being a kind of Event.

I just noticed this, have not thought of a proposed solution yet.

I've got some more. I find this bit unusable because of all these issues. Here are my observations:

In the definitions of Commitment and Obligation (skos:definition), a Commitment is defined as "an obligation" while an Obligation is defined as "a commitment". That's circular.
It's strange for me that an Agreement is a Commitment. Intuitively, it involves two parties and is therefore fundamentally a relationship of sorts. A Commitment is a kind Intention.

Digging a bit more into the everyday sense of commitment vs obligation, seems like the former has to do with an emotional and/or intellectual binding for a course of action, while the latter has to do with a binding of a legal, social, moral nature. In other words, commitment is more "from within" while obligation is more imposed. Both have a sense of accountability in that failure to honor them results in some consequences (from loss of trust to prison), but those consequences are of different nature. I'd say Commitment and Obligation are orthogonal, but not disjoint - you may or may not have a commitment to fulfill your obligation! So probably not in a parent-child relationship.

@bolerio raises good points - consistent with my observations. A solution proposal still awaits...

@uscholdm As a starting point, I'd dissociate Commitment from Obligation. Either remove Commitment altogether or make it a subclass of Intention at best.
Then Obligation and Agreement should NOT be in a parent-child sub-classing relationship either. If we want a common class, I'd suggest something like "Binding" - an obligation "binds" a single party/agent into some course of action while an agreement "binds" several parties and is thus made up of several simultaneous obligations.
Having the class Contingent Obligation be defined as Obligation that blabla, yet not having it a subclass of Obligation is rather confusing IMHO. So I'd have it as a subclass.
I've also found a basic class Relationship useful in core ontologies (things like Marriage, Agreement, Partnership, Friendship etc.)
Is that concrete enough as a proposal?

I agree with @bolerio's idea of a generic 'binding'. That is what was intended by Commitment.
I also agree that in common parlance, 'commitment' often is emotional rather than legal. I suspect that gist:Commitment is intended mostly for legal matters.
The circularity was in the text definition only not the axioms - that is easily fixed.
ContingentObligation does sound like a kind of obligation, but only superficially.  A simulated explosion (e.g. of a bomb) is not a kind of actual explosion.  The text definition needs to be updated to reflect this.

PROPOSAL:

Commitment: change from

An obligation (possibly unilateral).
to
An intention whereby at least one party is required to do something, often on behalf of one or more other parties. This removes the circularity.

ContingentObligation change from

An obligation that is not yet firm.  There is some contingent event, the occurrence of which will cause the obligation to become firm.
to
An commitment that may result in an obligation.  There is some contingent event, the occurrence of which will cause the obligation to become firm.

QUESTION: in our applications, are there two IRIs, one for the contingent obligation and one for the actual obligation that are linked in some way?


move ontrack test to separate test

mostly so we can use t.plan -- we do not know the number of ice candidates in the other tests.
cc @jan-ivar

Great!

LGTM


boost::asio::awaitable does not satisfy Awaiter

static_assert(cppcoro::is_awaitable_v<boost::asio::awaitable<void>>);

is being triggered, I presume due to boost::asio::awaitable<T>::await_suspend having the following signature:
template <class U>
void await_suspend(detail::coroutine_handle<detail::awaitable_frame<U, Executor>> h);

Is the Awaiter<T> concept over-constrained, or is this incompatibility the fault of ASIO? It would be great if it were compatible with cppcoro::when_all, for example.

The design of asio's awaitable type is what I'd call "conditionally awaitable", which means that it's only awaitable in particular contexts.
The asio awaitable type is currently only awaitable within other asio awaitable coroutines.
The reason for this, I believe, is to support the ability to destroy an entire stack of coroutines from the root in the event that some an executor/async op decides to drop/destroy the completion handler without invoking it. To support this, the asio awaitable coroutine type needs to keep track of the top level coroutine so that when the leaf-level operation destroys the continuation handler that it can call .destroy() on the top level coroutine.
This requires cooperation between caller and callee to coordinate this kind of shutdown/ownership.
This approach is incompatible with the model that cppcoro adopts for coroutines, however, where cancellation is propagated by resuming from the leaf with a cancellation result and letting this propagate up towards the root rather than by destroying the stack from the root and letting the destruction propagate down towards the leaf.
The asio awaitable model integrates well with asio but is more limited. eg the asio model doesn't handle multiple concurrent child tasks, like those created with when_all(), since ownership of the coroutine stack/graph would be shared by all leaf operations and so we cannot just destroy the root coroutine when one of the leaf operations is dropped.
So, despite the name, asio awaitable doesn't actually satisfy the awaitable concept as far as cppcoro is concerned.
I hope that helps.

Thanks for such a comprehensive answer. That helps a lot.


Improve reporting of shader compiler errors

This PR refactors the GLSLShader class by splitting large methods into smaller ones. It also

removes the highly fragile parsing of error logs and reports them as-is instead.
removes the JOptionPane dialog and throws an exception instead.

Everything else remains the same: As usual, AssetManagerImpl logs the thrown exception and returns null instead. Callers can then decide to use a fall-back shader or throw an exception. Uncaugt exceptions will crash the application and trigger the CrashReporter.
I'm not overly happy with throwing RuntimeException. Anyone knows a better match?
Fixes #1649

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/87/
Hooray Jenkins reported success with all tests good!

Uh oh, this did something weird. Ran the game and got the following mostly black screen:

Nothing out of the ordinary in the logs.
Anybody else able to test?

Interesting. Retested just in case my computer is going crazy.
If I run without this branch and set all graphic settings to minimal/off then exit the game, checkout this branch, and run, the main menu loads fine.
Change graphic present back to "Insane!", exit game, start game, main menu messed up again.
@msteiger / anybody else: Try it on default settings and see if you can replicate?

Sorry I'm not finding the time to check on this. The black screen before the menu problem sounded familiar, but I seem to remember it occurred when shaders where initialized very early on startup, before the menu. If I remember correctly one of my PRs moved all shaders initialization to the initialization of the WorldRenderer, well away from the Menu state. So, it must be something else?

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/101/
Hooray Jenkins reported success with all tests good!

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/102/
Hooray Jenkins reported success with all tests good!

I updated the PR:

fixed a bug that caused the black screen
fixed all merge conflicts
added a unit test (disabled on headless environments)

Interesting observation: new forum user reported in with a screenshot exactly like the one I got (but I only got the black screen actually captured from above). Weird part being said user gets it now while I only got it with an earlier version of this PR.
http://forum.terasology.org/threads/black-screen-major-bug-logs-and-screenshot.1316
There is also a weird delta time logged (in the menu log) that matches an older similar black (or dark?) screen issue.
As for me testing this I don't get the same situation with the newer commit. I do crash if I try to switch to the "Uber" graphics setting template. In this case I had started a normal game, changed to Minimal in-game, returned to main menu, started a new game, back to main menu, switch to uber, crash.
01:26:51.562 [Saving-0] INFO  o.t.p.internal.SaveTransaction - Save game finished
01:26:51.562 [main] WARN  org.reflections.Reflections - given scan urls are empty. set urls in the configuration
01:26:52.466 [main] WARN  o.t.engine.internal.TimeBase - Delta too great (2096), capping to 1000
01:26:57.735 [main] INFO  o.t.r.n.l.m.v.VideoSettingsScreen - Video Settings: {"pixelFormat":24,"windowPosX":365,"windowPosY":103,"windowWidth":1152,"windowHeight":720,"fullscreen":false,"viewDistance":"moderate","flickeringLight":true,"animateGrass":true,"animateWater":false,"fieldOfView":90.0,"cameraBobbing":false,"renderPlacingBox":true,"blurIntensity":2,"reflectiveWater":false,"vignette":true,"motionBlur":true,"ssao":true,"filmGrain":true,"outline":false,"lightShafts":true,"eyeAdaptation":true,"bloom":true,"dynamicShadows":false,"oculusVrSupport":false,"maxTextureAtlasResolution":4096,"maxChunksUsedForShadowMapping":1024,"shadowMapResolution":1024,"normalMapping":false,"parallaxMapping":false,"dynamicShadowsPcfFiltering":false,"cloudShadows":true,"renderNearest":true,"particleEffectLimit":10,"frameLimit":60,"meshLimit":400,"inscattering":true,"localReflections":false,"vSync":false,"clampLighting":false,"fboScale":100,"dumpShaders":false,"screenshotSize":"normal size","screenshotFormat":"jpg","cameraSettings":{"cameraSetting":"normal"},"debug":{"enabled":false,"stage":"opaque_color","firstPersonElementsHidden":false,"hudHidden":false,"wireframe":false,"renderChunkBoundingBoxes":false,"renderSkeletons":false}}
01:26:58.325 [main] ERROR o.terasology.engine.TerasologyEngine - Uncaught exception, attempting clean game shutdown
java.lang.NullPointerException: null
	at org.terasology.rendering.shader.ShaderParametersSSAO.applyParameters(ShaderParametersSSAO.java:95) ~[classes/:na]
	at org.terasology.rendering.opengl.GLSLMaterial.enable(GLSLMaterial.java:105) ~[classes/:na]
	at org.terasology.rendering.opengl.GLSLMaterial.restoreStateAfterUniformsSet(GLSLMaterial.java:601) ~[classes/:na]
	at org.terasology.rendering.opengl.GLSLMaterial.setFloat3(GLSLMaterial.java:392) ~[classes/:na]
	at org.terasology.rendering.assets.material.BaseMaterial.setFloat3(BaseMaterial.java:131) ~[classes/:na]
	at org.terasology.rendering.shader.ShaderParametersSSAO.initialParameters(ShaderParametersSSAO.java:88) ~[classes/:na]
	at org.terasology.rendering.opengl.GLSLMaterial.recompile(GLSLMaterial.java:138) ~[classes/:na]
	at org.terasology.rendering.ShaderManagerLwjgl.recompileAllShaders(ShaderManagerLwjgl.java:164) ~[classes/:na]
	at org.terasology.rendering.nui.layers.mainMenu.videoSettings.VideoSettingsScreen.onClosed(VideoSettingsScreen.java:237) ~[classes/:na]
	at org.terasology.rendering.nui.internal.NUIManagerInternal.popScreen(NUIManagerInternal.java:298) ~[classes/:na]
	at org.terasology.rendering.nui.layers.mainMenu.videoSettings.VideoSettingsScreen$7.onActivated(VideoSettingsScreen.java:229) ~[classes/:na]
	at org.terasology.rendering.nui.widgets.UIButton.activate(UIButton.java:138) ~[classes/:na]
	at org.terasology.rendering.nui.widgets.UIButton.access$100(UIButton.java:40) ~[classes/:na]
	at org.terasology.rendering.nui.widgets.UIButton$1.onMouseRelease(UIButton.java:81) ~[classes/:na]
	at org.terasology.rendering.nui.internal.CanvasImpl.processMouseRelease(CanvasImpl.java:232) ~[classes/:na]
	at org.terasology.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(NUIManagerInternal.java:559) ~[classes/:na]
	at org.terasology.rendering.nui.internal.NUIManagerInternalMethodAccess.invoke(Unknown Source) ~[reflectasm-1.11.0.jar:na]
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:506) ~[classes/:na]
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendConsumableEvent(EventSystemImpl.java:280) ~[classes/:na]
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:259) ~[classes/:na]
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:157) ~[classes/:na]
	at org.terasology.input.InputSystem.sendMouseEvent(InputSystem.java:393) ~[classes/:na]
	at org.terasology.input.InputSystem.processMouseInput(InputSystem.java:248) ~[classes/:na]
	at org.terasology.input.InputSystem.update(InputSystem.java:204) ~[classes/:na]
	at org.terasology.engine.modes.StateMainMenu.handleInput(StateMainMenu.java:140) ~[classes/:na]
	at org.terasology.engine.subsystem.lwjgl.LwjglInput.postUpdate(LwjglInput.java:66) ~[classes/:na]
	at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:486) ~[classes/:na]
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:397) ~[classes/:na]
	at org.terasology.engine.Terasology.main(Terasology.java:151) [classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_45]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_45]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45]
	at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45]
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) [idea_rt.jar:na]
01:26:58.325 [main] INFO  o.terasology.engine.TerasologyEngine - Shutting down Terasology...
java.lang.NullPointerException
	at org.terasology.rendering.shader.ShaderParametersSSAO.applyParameters(ShaderParametersSSAO.java:95)
	at org.terasology.rendering.opengl.GLSLMaterial.enable(GLSLMaterial.java:105)
	at org.terasology.rendering.opengl.GLSLMaterial.restoreStateAfterUniformsSet(GLSLMaterial.java:601)
	at org.terasology.rendering.opengl.GLSLMaterial.setFloat3(GLSLMaterial.java:392)
	at org.terasology.rendering.assets.material.BaseMaterial.setFloat3(BaseMaterial.java:131)
	at org.terasology.rendering.shader.ShaderParametersSSAO.initialParameters(ShaderParametersSSAO.java:88)
	at org.terasology.rendering.opengl.GLSLMaterial.recompile(GLSLMaterial.java:138)
	at org.terasology.rendering.ShaderManagerLwjgl.recompileAllShaders(ShaderManagerLwjgl.java:164)
	at org.terasology.rendering.nui.layers.mainMenu.videoSettings.VideoSettingsScreen.onClosed(VideoSettingsScreen.java:237)
	at org.terasology.rendering.nui.internal.NUIManagerInternal.popScreen(NUIManagerInternal.java:298)
	at org.terasology.rendering.nui.layers.mainMenu.videoSettings.VideoSettingsScreen$7.onActivated(VideoSettingsScreen.java:229)
	at org.terasology.rendering.nui.widgets.UIButton.activate(UIButton.java:138)
	at org.terasology.rendering.nui.widgets.UIButton.access$100(UIButton.java:40)
	at org.terasology.rendering.nui.widgets.UIButton$1.onMouseRelease(UIButton.java:81)
	at org.terasology.rendering.nui.internal.CanvasImpl.processMouseRelease(CanvasImpl.java:232)
	at org.terasology.rendering.nui.internal.NUIManagerInternal.mouseButtonEvent(NUIManagerInternal.java:559)
	at org.terasology.rendering.nui.internal.NUIManagerInternalMethodAccess.invoke(Unknown Source)
	at org.terasology.entitySystem.event.internal.EventSystemImpl$ByteCodeEventHandlerInfo.invoke(EventSystemImpl.java:506)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.sendConsumableEvent(EventSystemImpl.java:280)
	at org.terasology.entitySystem.event.internal.EventSystemImpl.send(EventSystemImpl.java:259)
	at org.terasology.entitySystem.entity.internal.BaseEntityRef.send(BaseEntityRef.java:157)
	at org.terasology.input.InputSystem.sendMouseEvent(InputSystem.java:393)
	at org.terasology.input.InputSystem.processMouseInput(InputSystem.java:248)
	at org.terasology.input.InputSystem.update(InputSystem.java:204)
	at org.terasology.engine.modes.StateMainMenu.handleInput(StateMainMenu.java:140)
	at org.terasology.engine.subsystem.lwjgl.LwjglInput.postUpdate(LwjglInput.java:66)
	at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:486)
	at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:397)
	at org.terasology.engine.Terasology.main(Terasology.java:151)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

I think I addressed all of your concerns, @emanuele3d - thanks for reviewing.
And well spotted, @Cervator. The bug seems to be unrelated to this PR as it can be reproduced without the changes here. I opened a new issue for it.

Cool :-)
Should we merge this ahead of #1740 or wait? This PR has a slight bit of Asset interaction.

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/122/
Build Log
last 5 lines
[...truncated 2389 lines...]
   at hudson.model.Executor.run(Executor.java:240)
[ANALYSIS-COLLECTOR] Skipping publisher since build result is ABORTED
Notifying upstream projects of job completion
Setting status of 73abb8b0a731978a7975b455cd1e7cd9f119c0fa to FAILURE with url http://jenkins.terasology.org/job/TerasologyPRs/122/ and message: Merged build finished.

Uh oh, something went wrong with the build. Need to check on that

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/123/
Build Log
last 5 lines
[...truncated 232 lines...]
   at hudson.model.Executor.run(Executor.java:240)
[ANALYSIS-COLLECTOR] Skipping publisher since build result is ABORTED
Notifying upstream projects of job completion
Setting status of 54762d03f608863c543f06777bc85cc3c66695bc to FAILURE with url http://jenkins.terasology.org/job/TerasologyPRs/123/ and message: Merged build finished.

Uh oh, something went wrong with the build. Need to check on that

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/126/
Hooray Jenkins reported success with all tests good!

Thank you for the review. I fixed the documentation.
I think that it can be merged before #1740 since GLSLShader is not touched. DisplayEnvironment is on the deletion list there (probably because it was not used before), but I'd like to keep for testing graphics-related stuff.

Is there anything still unclear or unresolved here? If not, then it can be merged, I think.

Will be happy to try to merge this tomorrow after the big one, just in case from the slight bit of asset interaction it has :-)

I confirm this is good to go also for me. Good job Martin!

Annnnd more need to resolve conflicts / rebase :-)
Since this has been waiting a while I went to see what was being problematic and the main thing seems to be DisplayEnvironment having gone missing. Not sure where it got moved / what it was renamed to, or if something made it obsolete.
@immortius do you recall off-hand what the fate was for that in the big merge, if it was involved? It seems to go poof in that period yet #1740 doesn't have it in the file list. Quirk from merges/rebase maybe.

DisplayEnvironment wasn't used anywhere, so I saw no reason to keep it.

Ah, so the new test introduced in this PR was based on it but then it was deleted.
@msteiger does it make sense to use one of the other environments or do we have a use case for the DisplayEnvironment now? Since it tests shaders it might make sense that it needs a display ..

Refer to this link for build results (access rights to CI server needed):
http://jenkins.terasology.org/job/TerasologyPRs/138/
Hooray Jenkins reported success with all tests good!

Noticed rebase had been done, tested quickly, merged since we've gone over this plenty before :-)
Feel free to comment so it'll ping the PR :D