On Friday we deployed a new version of the VNU validator, and the fallout was significant, since it now appears to be checking all CSS thoroughly. This is great, but it found hundreds of errors, and I've spent the day fixing them and attempting to implement Schematron to prevent as many of them as possible.
In the past I have generated local Debian packages on my workstation and uploaded them to the apt server.
Recently I moved them to the apt server itself so packages can be updated remotely if need be.
The build script is basically a fancy wrapper around a pretty standard debian build method. It downloads upstream code (like for oxygen) and re-packages it, as well as building meta packages and a config package that is site-specific.
I am currently building the following packages:
- hcmc-desktop - a meta package that installs packages we use like java, fonts, ssh, subversion, etc.
- hcmc-conf - a configuration package that includes a collection of scripts/files that set up a machine for use in our lab. This includes everything from setting JAVA_HOME and mimelists (for oXygen etc.) to auto-configuring hostname, default skel and firefox profiles.
- hcmc-auth-sssd - this installs and configures SSSD, which we use for LDAP authentication on our machines. It's a separate package from hcmc-conf for practical reasons.
- hcmc-oxygen - this is a repackaging of the oXygen XML editor for deployment in our labs. Doing this way allows easy upgrades.
- hcmc-style - basically just look-and-feel stuff such as wallpaper, theme, icons, and colour-schemes that I like.
The script finishes by invoking reprepro to ingest the package and offer it via apt install.
The tftp boot daemon on the apt server has its configuration file in the file /etc/default/tftpd-hpa.
The config file points to the filesystem location of the deliverables and a few options.
The deliverables we're using in the netboot setup are:
grub (a directory)
initrd.gz (the primordial OS that gets booted)
linux (the kernel)
The grub directory contains:
grub.cfg (the config file that provides the menuentries you see on-screen among other things)
grubnetx64.efi.signed (the boot app that actually boots the machine - AKA bootx64.efi)
theme (a directory containing pngs and the theme.txt file that arranges the pngs on the screen)
unicode.pf2 font (I think this is fall back font that can be removed, but I haven't tested the theory).
If you need to start/stop/restart the tftp daemon:
sudo systemctl start tftpd-hpa
sudo systemctl stop tftpd-hpa
sudo systemctl restart tftpd-hpa
To watch it at work, do:
sudo tail -f /var/log/syslog | grep tftpd
Spent most of the day working on the HTML diagnostics, which I think are now done, at least in the XSLT 2.0 version. I've split the build into multiple targets and it runs quite smoothly. While I originally used regexes to see if a file exists locally, I've decided to just do it by sequence checking (i.e. $fileSequence[.=$thisFile]). After a certain point the regex becomes too slow whereas this is consistently quick.
Ran this on MoEML (15 minutes) and Graves (1.5 minutes) and the results are interesting. MoEML has a ton of broken links, particularly in the Ajax pages, that MH and I will need to discuss; Graves also has some broken links, but only on the gallery pages. From what I can tell, the titles are being processed by templates, but no appendix content is being created; we could decide to either just take the text, apply templates to the title in a different mode, or add an appendix to these pages.
I'm now able to retrieve all fresh data from the dbs and the home1t filesystem, generate the stats and commit them as part of a single ant target. Much more convenient, and will work much better when I'm away.
Leaving early.
I think there's some kind of bug in the way that successive animations (particularly if the last of them is ol.View.fit rather than ol.View.animate) are run in the current version of OL, such that the starting point of the final animation is not the ending point of the preceding one, but the previous zoom level. So the effect of zooming out and zooming back in again is to zoom out, but then jump back in to a close zoom, then pan to fit the target extent. That's jarring. I've tried every solution I can imagine, including precompose and postcompose scenarios, setTimeout to postpone the final animation, and many other permutations, but nothing works nicely. So instead I've included a little overview map that shows you where in the main map you are. That's the best I can do for now. When OL has gone through another couple of releases, we'll see if the animations chain better.
In preparation for the upcoming MoEML build, and for future projects, I started working on an HTML diagnostics to test to check for referential integrity in the generated HTML. Spent the entire day working on this with some good results. There are two major issues, however. The first is that we can't use doc-available in most of the Endings projects since the document collections are too big and the doc-available function stores the file in memory. Got a work around for that and I now have a version that works in XSLT 2.0 and pure ant that can run against MoEML in about 5 minutes (when given nearly 3GB of RAM).
I would also like to experiment with a XSLT 3.0/XPath 3.0/Saxon EE version of this that uses the EXSLT extension and the file functions. I think these would be more efficient and more accurate than what I'm doing now, but has the downside of not being usable on remote build servers. If we decide to package this with the other diagnostics suite, then we should really have both versions.