BASIC 1.77 ARMv8 AArch32 opcodes
Pages: 1 2
David Pitt (3386) 1248 posts |
For information, BASIC 1.77 with an update to Assemble the later ARMv8 AArch32 opcodes has arrived unannounced in “Recent changes in GitLab” on the Welcome page in today’s, 30 June 2019, beta ROMs. |
Sprow (202) 1158 posts |
It’s there in the longer list if you happened to know I wrote it at the start of June. For the very observant the Recent Changes list previously had FSLock next to the Kernel, but now it goes Kernel-SDIODriver-BCMSupport-FSLock, so 2 extras have been inserted mid-list. From this we can infer that the date is the date the work was submitted rather than the date it got merged, where what might be more useful is to sort it by the merge date but display the author date? In fact, the author date isn’t that useful if the date that pops out in the module (ie. controlled by VersionNum’s contents) is the merge date anyway. |
Steve Pampling (1551) 8170 posts |
That would certainly explain the changes on that page in the past few days when this: Merge date and Version number being what the user would report in the event of a problem, so the list should be sorted in an order that reflects that and thereby gives the maintainers a better pointer to any specific merge which may need to be reverted (or fixed). |
John Williams (567) 768 posts |
I really miss the revisions page: What’s the point without it? You seem to be “on top of things”! Could you host a page of changes that we mortals could understand until things get back to normal? |
Steve Fryatt (216) 2105 posts |
The thing is, Git doesn’t really do revisions in the sense that older VCS did. That’s one of the reasons that it works better for more complex usages than things like CVS and Subversion.
That the system works better for what it’s actually there to do: to manage the RISC OS source code?
That sounds like a lot of work! |
Rick Murray (539) 13840 posts |
Given that an operating system is a huge project with many components that gets lumped together to create one final output (ROM image), would you not consider that a critical part of that is having easy access to everything that has changed from one revision to the next?
Okay, so something has changed around <date> which is causing <this> to happen. Possible culprits are… The filer, FileSwitch, or random bits of the entire Desktop system. It ought to be fairly simple to track down given a date of what did and didn’t work. Sane access to version logs, diffing, all those sorts of things are as important as the ability to merge this with that. And, of course, roll back. ;-) Remember, also, that there are people who are not particularly nerdy who are running recent versions. Maybe they’d like to know what’s changed and to judge if it’s worth updating? |
Stuart Painting (5389) 714 posts |
Finding out the merge date “from afar” is doable, but a bit clunky if you’re working from the web interface. The sequence is:
On the whole it would be a lot easier if ROOL adjusted the “Events” page to use the merge date instead of the commit date. (Edited to correct faulty terminology in item 2) |
Rick Murray (539) 13840 posts |
All that being said…
…is there anything particularly wrong with https://www.riscosopen.org/viewer/events ? The only thing that stands out for me, and this applies to GitLab as a whole, is the widespread use of monospace type on the actual text of what’s changed in a given revision. This is a nightmare on a mobile device with the need to flick left and right endlessly to read anything. |
Martin Avison (27) 1494 posts |
I am totally unfamiliar with Git … as are a lot of others here, I suspect. It would be really useful if there was a documentation page somewhere which started to explain how Git works (particularly in the RISC OS context), what the terminology means, and how to navigate the GitLab pages. It no doubt would be incomplete until things settled down, but it would be a start. It would be much easier to read and understand (and update) than trying to trawl through old forum posts. Any offers to start one? |
Steve Fryatt (216) 2105 posts |
Yes. However it’s never particularly clear in any complex project, and Git’s clever workflow can make it hard to see for those more familiar with older systems like Svn. I’m starting to find some clarity dawning now that I’m using Git in my day job (in the previous job, and for RISC OS stuff, it was/is Svn), but it can still take a lot of thinking about. I suspect that this is going to be a work in progress for ROOL. I’m sure that constructive input will be appreciated, but complaints that it’s not like CVS probably don’t help much. :-) Okay, so something has changed around My issue was more that John seemed to be expecting someone else to do this manually for him, pending an automated solution. |
Frederick Bambrough (1372) 837 posts |
Related to that, is beta testing by those users considered worthwhile? If they don’t know what they’re looking at… |
Jeffrey Lee (213) 6048 posts |
In git terms, I think it’s more correct to refer to these as the commit date and the author date. The author date is the date the code was first committed to git (or if the code was submitted as a patch file, e.g. via email, git can use the timestamp information contained within the patch). Note that typically this first commit will be to the developer’s local copy of the repository – so it can still be several days or weeks until the code is exposed to the wider world. The commit date is “when the code was last applied to a branch” – e.g. for a patch file this will be the date/time at which the code was committed, and for merge or rebase operations it’ll be the time of that operation. Although git doesn’t have builtin support for tracking it, some systems also track the date of “push events” – i.e. whenever a developer pushes their local changes to a remote, shared server (like ROOL’s gitlab). So a typical sequence of events could be the following:
If the build machine spits out a new ROM just before midnight on Tuesday, and again just before midnight on Wednesday, then someone who tries to work out what’s changed between the two ROMs just by looking at the commit dates will be confused: the changes for Wednesday won’t show anything, because although the code was pushed on Wednesday, the commit date was Tuesday. But Tuesday’s ROM didn’t contain the changes, because they hadn’t been pushed yet. E.g. if you look at the history of Ben’s fork of the Pi HAL you’ll see that the most recent push event was just before midnight on the 24th, but if you click on the compare link you’ll see that it contains commits with several different author dates (and if he’d done any local merges during that time, you could see commit dates covering multiple days). It looks like accepting a gitlab merge request results in a fake push event being generated (“fake” because the merge operation is applied server-side, so there’s no need to push anything), so we many end up with some confusing situations like the above. Also there’s an extra layer of complexity with ROOL’s setup because everything is based around submodules (and the submodule references aren’t updated when merges are applied / when the build machine runs). Since committing every submodule update could result in merge conflicts for developers, perhaps the cleanest solution for handling this would be to make it so that every zip file contains a list of the commit hashes that were used to build the code. That way we’ll at least be able to precisely identify the code that was used, even if it’s still a bit of a headache to track down exactly what changed (or which commit caused a breakage – git has a handy ‘bisect’ command which allows you to binary search through the history to find which commit caused things to break, but when your repository is a flock of loosely-tracked submodules it can’t really help you much) |
Rick Murray (539) 13840 posts |
Ah. Okay. Fair point.
Always. |
John Williams (567) 768 posts |
Without knowing what has changed, there seems little point in downloading and trying each new ROM image. If I knew, for example, that something in the USB handling had changed, I could keep an eye on that aspect to try to notice any problems arising.
That was addressed to Dave, who has twice recently very kindly alerted us to changes/new bits in the ROM. If he is going to continue to point out changes of interest, and I hope he does, it might be more generally useful if he did so on a single thread, thus providing a partial replacement for the Revisions page for us less-clever people. I was not expecting anyone else to take this on, certainly not Steve! |
Sprow (202) 1158 posts |
I think my point was, from a user perspective, only that last operation on Wednesday (which bumps the VersionNum file and stuffs Wednesday’s date in, triggers a new ROM to be built) has significance. Hence sort by that date might make more sense. Under CVS I would similarly make changes, forget about them, weeks or months later I’d find them and submit. It was only the latter date that mattered not the date I originally did it.
Did you miss the link to the replacement? It’s just here and also linked from the front page, and also from the downloads page. |
Jeffrey Lee (213) 6048 posts |
Agreed. Although if the activity on Wednesday was just a git push operation, there’d be no VersionNum bump – if we want VersionNum to reflect the merge/push date then that’s ROOL’s responsibility to build the relevant steps into their workflow. E.g. Ben’s kernel change – the VersionNum change in the merge request is dated the 20th, but the merge request was created (& accepted) on the 24th. The kernel activity page suggests that commit 9a1da777 is the merge request being accepted (with a VersionNum date of the 20th), but if you look at the history of the VersionNum file itself you’ll see that it’s commit fc49beaf which contains the merge (with VersionNum date of 24th). So it looks like their workflow does already have a step for updating VersionNum when accepting merges, but the act of doing so makes it harder to keep track of changes in git because the merge request thinks 9a1da777 is the merge, but that merge has been orphaned and replaced with fc49beaf. |
David Pitt (3386) 1248 posts |
I have found another little bit of confusion!! On the ROOL Welcome page under recent changes is Pushed to branch master in SDIODriver (Ben Avison) – Implement generic SDHCI version of GetTMCLK which refers to SDIODriver 0.13 (24 Jun 2019) Pi4.1. What I actually have in the RPi ROM of 30Jun19 is SDIODriver 0.14 (29 Jun 2019). Both version look to be identical in that from the source 0.14 does have the change in c.probe. The missing bit of information is anything to say that SDIODriver 0.14 has been merged, unless I have missed it!! Perhaps another cup of tea might help. |
Jeffrey Lee (213) 6048 posts |
Yep, that’s another instance of the problem I just mentioned. I think ROOL are being naughty and rewriting history when they accept merge requests, possibly because gitlab doesn’t directly support the kind of workflow that ROOL want to use. |
Steffen Huber (91) 1953 posts |
For those new to git, but well-versed in the old centralised version control stuff, there are three things you absolutely need to know to understand git (and another thousand things that you should also know to clear up much of the confusion):
Hope that clears up the confusion. Git submodules complicate things further, and they seem to be not widely understood nor used. I only remember that there were various good reasons why we (at work) didn’t use them, but not what those reasons were/are… |
Stuart Painting (5389) 714 posts |
Excuse me for asking, but wouldn’t that file be rather large? People routinely reference a hash by quoting its first 32 bits, but it’s actually 160 bits long (and being essentially random data it wouldn’t compress all that well). Since you can’t use “all commits since date X”1 you would have to include every commit, every time. What’s the total number of commits on the GitLab server? I’d guess it’s well into the thousands (just from the CVS import) so it’s possible that a collection of hashes could be measured in megabytes… 1 Or maybe you can. Perhaps Git does have a “flag day” function of some sort. |
John Williams (567) 768 posts |
I did indeed. This obviously negates my concerns. Thank you! Pity it’s called events and not revisions, otherwise I might have discovered it myself! Thank you! |
Jeffrey Lee (213) 6048 posts |
You’ve misunderstood. The way commit hashes work in git is that they uniquely identify a node in the commit graph – they’re a hash of what the commit changed, and a hash of the parent node(s) that the change was applied to. So if you know the hash of a commit, and you have access to the repository, you can query the repository to get the full commit history relative to that known commit. By “list of the commit hashes” I meant that we’d list the commit hash of each submodule – i.e. the commit hash of the kernel, the commit hash of the HAL, the commit hash of the build scripts, etc. So around 100 or so commit hashes. The alternative would be for ROOL to have the build machine commit (and tag?) a change to the relevant “product” repository each time it does a build – that way we’d only need a single commit hash (or the tag) to find the relevant code. |
Steve Pampling (1551) 8170 posts |
Sort of. |
Rick Murray (539) 13840 posts |
I’m led to understand that git is appropriately named… And, of course: |
Rick Murray (539) 13840 posts |
There’s also https://ohshitgit.com/ (NSFW, unless your W means having git inflicted upon you) |
Pages: 1 2