No more available space?
Rick Murray (539) 13840 posts |
Not BootVars, close. It’s SetChoices (in !Boot.Utils). Usefully written in BASIC so it can be tweaked. ;-) |
Chris (121) 472 posts |
In terms of actual numbers of files, yes. But conceptually, moving things like Configure would help to clarify what !Boot should actually do, and what it shouldn’t.
That’ll work for all the app-generated choices settings, but my thought is that !Choices should capture all the various user settings that are currently sprinkled across the !Boot labyrinth (like the screen size, wimp visual flags, Pinboard, etc). Not necessarily difficult to implement, I’d imagine, but lots of stuff to pull together, and thought needed on how it might work (ie what happens if !Boot is present but !Choices isn’t, and vice versa, etc). |
Alan Adams (2486) 1149 posts |
OK, I tried that and it worked on the top one – the one whose SD card is just about accessible in case I had a problem. The only oddity is that after I ran the inplaceupdate, info on the switcher reported it was 5.24, before I had replaced the rom image. Thanks for the help. I’ll do the others tomorrow. |
Steve Fryatt (216) 2105 posts |
Don’t do this… There’s an official !Choices out there somewhere, which Acorn produced in the days of the RiscPC (so when they introduced !Boot in its current form), to allow local choices when !Boot itself was stored centrally on a fileserver. None of this is new, people. It’s how the system was designed to work from the start, when circumstances required it. |
Rick Murray (539) 13840 posts |
Link? Just rummaged around a mirror of the old Acorn FTP site, nothing stands out.
I thought that was automatic? |
Steve Fryatt (216) 2105 posts |
No idea; I know it was on an old AU cover disc, so I guess Acorn distributed it some time in the mid-1990s. Looking at Chris’s Acorns, I’d suggest that it’s in one of the missing Application Notes.
There were several similar schemes, I think. !ArmBoot stored the files centrally, in folders named by the machines; this was for systems that had local hard discs, and perhaps single users, I suspect. My point was more that people shouldn’t be “tweaking” files in !Boot to make their own home-brew versions; we should be following a standard approach that has been in place for 20+ years. Otherwise we just get into the situation that Gavin’s in: where he’s hacked around in system files to get a set-up that’s unique to him, and which then doesn’t play well with updates. |
Steve Fryatt (216) 2105 posts |
The key point is the use of
You contradict yourself here… If the distribution stuff goes in !Boot, and nothing else, why are you hand-editing PreDesktop to add aliases essential to your boot sequence?
Again, why are you hand-editing PreDesktop in this case? Over the years, I’ve actively minimised what I put into core !Boot files. If things go into PreDesktop and Desktop, it’s done via the Configure GUI and not by hand. And unless it’s essential to go into the PreDesk or Tasks folders, booted modules and apps go into a $.ThirdParty.Desktop folder and get actioned via the Look At and Run sections of Configure. With the regularity of OS updates these days, leave the folders contained in the HardDisc downloads from ROOL as they come. That way, you can upgrade things easily.
Really? All of my apps are compiled with GCC, and none of them put files into SharedLibs. They all link to the SCL at run time using conventional stubs.
I think you mean package management. Isn’t that what Packman does?
Personally, as a developer, I think we need to move on from the “Oh, but it worked OK on Arthur” viewpoint, and accept that modern systems are more complex and need more shared resources. And that these need to be stored in a standard way across systems. Also, disc space isn’t really an issue. Paring things down to the bare minimum needed to boot your machine isn’t necessarily the right option, when what we need is a system that will work reliably when installed by a newcomer on their own Pi or whatever. |
Andrew Conroy (370) 740 posts |
There’s a copy of !Choices included with !Printers 1.64a here |
GavinWraith (26) 1563 posts |
If it lets you uninstall packages, yes. It means that resources will need to be reference-counted.
How come my !SharedLibs.lib.abi-2/0 directory has nearly two hundred files in it? I would love to clear it out but dare not. Steve will be relieved to hear that in my current RISC OS (5.24) I am leaving PreDesktop alone. I am belatedly learning the lesson not to tweak, and I take onboard all that Steve says. I do have stuff in PreDesk and Tasks. Moving Choices outside !Boot strikes me as a good idea, as it would be a step in the direction of a clean separation between distributor/user real estate. Being able to uninstall an application simply by deleting it is one of the agreeable simplifications that RISC OS offers. But it cannot work if some resources are shared. In that case a reference count is needed, incremented by an application’s installation, decremented by an application’s deletion, and attempts to delete a resource should bring up a warning of which applications still need it. Reference counting also interacts with version numbers – another thorny issue. Deletion of applications becomes more complicated. But in RISC OS the !Boot mechanism can be seen as a side-effect, admittedly dangerous, triggered by the opening of a directory. A reference-count-decrementing delete-mechanism should be seen as something that complements that. The close-bracket that complements the open-bracket, if you see what I mean. It would be triggered whenever the filer is about to delete an application. Applications need a generalization of RMensure that applies not only to modules but to resources of any kind, which serve as pointers for the delete-mechanism. Delete would need an option: whether to delete not only the application but also any resources whose reference-counts would become zero in consequence, or whether to leave zero-referenced resources alone. Presumably this kind of thing is old hat to package-managers. |
David Feugey (2125) 2709 posts |
Would be cool. |
Steve Fryatt (216) 2105 posts |
The User Guide suggests that it does, and that it can track packages installed automatically due to dependencies. Can I just clarify: is your concern based on current behaviour that you’ve experienced first hand?
You’ve got some apps installed which used shared libraries. This is an option with GCC, but it isn’t a requirement; you can also statically link or, as I’ve already noted, link to the SCL Stubs if you just need standard C99.
As far as I’m aware, this kind of thing is already taken care of by Packman. Also, Packman is happy for you to move your apps around your hard disc after it has installed them, so long as you do it via Packman, so that it knows where they are. The idea that it tells you where to put apps is a little out of date. The location of system resources, whether it’s modules in !System.Modules or shared libraries, has always been dictated by RISC OS. They must go in the correct places relative to system variables which identify where they are, else things break. This was the case on RISC OS 2, too. Sure, there’s no requirement for them to live in !Boot.Resources, but they need to live somewhere – and a location where they are picked up automatically at an appropriate stage of the boot sequence seems sensible. It also simplifies things for developers, as they can then supply dummy !Boot.Resources folders to users for the install. I don’t really follow this requirement for !Boot to be lean. Clearly minimising the things that are automatically loaded in Boot:Choices is wise (don’t put all of your desktop utilities and module here, folks; put them in $.ThirdParty and link them from Loot at and Run in Configure), but in the end !Boot is just a folder on your disc where things that the system needs and you don’t care about are stored. And if you do wish to move certain discretionary things like NewsDir outside of !Boot.Resources, to simplify backups, then that’s easy to do if you just add them to Look at in Configure. Don’t do this for things that the system needs, of course. |
Steve Fryatt (216) 2105 posts |
It already does. What doesn’t is the bit of the boot sequence which adds apps to ResourceFS at startup. There’s a utility on my website somewhere dating from my student days (so late 1990s) which took advantage of this to have a nice hierarchy in Apps; I’ve not used it in years, though… |
Chris Johns (8262) 242 posts |
Soemwhwat off topic for this thread, but while RISC OS is a single user system, years ago I did a simple thing to let you have serval different ‘users’, and it would set the Choices paths appropriately. It meant different people could have their own setups on the same machine. I can’t remember if it gave you a “home” disc on the iconbar. Perhaps it used TinyDirs to give you a quick access to your files. Of course being RISC OS there was nothing stopping you going and looking at someone elses files, but the point was to allow different people have the machine run as they wanted it. An (improved) version of it made it into Select at some point. |
Rick Murray (539) 13840 posts |
We shouldn’t be, but it happens. Everybody has an excuse, a reason, whatever. I guess it depends what was tweaked, whether it is a “configurable” part of not. I think my mods (other than Harinezumi) are in user parts rather than scattered around Boot.
Because there are a lot of shared libraries.
No, because that would be akin to opening up a body and yanking out random things.
We’re just going to have to accept that some applications require resources that can be shared. Ironically, just like CLib (nobody links to ansilib any more). It is also useful in that one can run both Otter and the other one (I forget it’s name) and it takes a huge amount of memory for the libraries but only once…because they are shared…
Can I veto this in the strongest possible way?
I should point out that my suggestion to hack SetChoices was for a proof of concept, not advice to the world. |
Rick Murray (539) 13840 posts |
Found it! http://www.stevefryatt.org.uk/software/utils/resfsapps110.zip (or on the site, software → desktop apps) I’ll have a play with this soon, it might well answer one of my biggest annoyances with RISC OS! |
David Feugey (2125) 2709 posts |
I wonder how much time would be needed, from your code, to get a recursive+directory compliant version of AddApp. |
Grahame Parish (436) 481 posts |
You have to be careful though. Like others I expect, I put some things in sub-directories off Utilities (and other auto-scanned locations) so they are there and available, but I don’t want them seen/run in normal circumstances. |
Alan Adams (2486) 1149 posts |
One nice thing about !Apps is that, apart from the ROM-based apps, they appear in alphabetical order. I have the filer set to display in date order normally, so this difference is significant for me. |
Steve Drain (222) 1620 posts |
If you want to add arbitrary files to Apps sub-directories you can use my RFSFiles module with something like:
I have done this for the dummy files for !Boot, !Help and !Run that At one time I wrote commands to remove ROM apps from Apps, so in combination with the above you could move Paint and Draw into sub-directories, too. However, they were tied to specific OS versions and I am not sure I could pull the same trick with the latest. I would try if it became desirable. |
GavinWraith (26) 1563 posts |
ResourceFS was useful in antiquity when we had an Econet of Archimedes for teaching purposes. Each machine would boot up from the server and provide readonly stuff in ResourceFS according to the needs of the hour and the class. But for the single user it would be little hardship to dispense with ResourceFS altogether. |
Rick Murray (539) 13840 posts |
Methinks you don’t know what ResourceFS is. Hint – go to Apps (on the iconbar), click Menu. Choose “Open $”. Then understand that it providing an easy way to access some applications is a mere side effect at best as to what it’s really there for. |
Richard Walker (2090) 431 posts |
Just my 2p, but I think Steve F. has it spot on. No-one needs to go messing about inside Boot. Treat it like a black box. Anyone worrying about disk space or clutter just needs to get a grip. I adopt the same approach of not fiddling with anything delivered in HardDisc4, and it is therefore really easy to update to the latest nightly every so often. I know that many of us here are pre-1994, when everyone rolled their own disk structure and boot sequence. But that was over quarter of a century ago. It is less relevant than a cassette interface. From what I have seen of the ROOL Boot over the last few years, it has got cleaner and slicker, and remember it is good back to OS 3.1! |
Rick Murray (539) 13840 posts |
You’re a quarter century too late for that advice. ;-)
Anyone worrying about disc space needs to get Martin Würthner’s DiscSpace to see what is taking up all the space. My Boot is 1153MiB, roughly broken down as follows:
My Apps take up 504MiB, of which the majority of that are the mp3s supplied with AmCog’s games (they’re high quality recordings). My “Coding” directory is 2.7GiB. 566MiB is RISC OS plus tar files etc. 1625MiB is MangaLib. ;-) I have 211MiB free (critical on Windows, severe on Android, no big deal on RISC OS). I think I ought to get a decent USB key and shift my manga onto that. I’d instantly gain a big chunk of disc space back. Thinking about it, I wonder how much bother it would be to stick a larger SD into the old Pi1 and get it going with ShareFS to be storage for the “less essential” things? That should free up some space too. There are always options that don’t involve trying to delete stuff from !Boot (though an auto clearing Scrap might be useful?).
Yup. If you don’t open Boot, you won’t see it!
Can we please apply that logic to FPEmulator and dump it once and for all so our programs can begin to make use of the infinitely faster on-board hardware floating point (that’s been a part of everything post-Iyonix)? |
Steve Fryatt (216) 2105 posts |
Try it, and watch large chunks of the OS fall apart. The primary purpose of ResourceFS is to allow modules to present data contained within them as files, which can then be accessed via a filing system in the usual way. Generally this is so that data (such as Messages files) can be easily replaced without rebuilding the underlying components. Large chunks of the OS do this, and third-party things do too. I’ve got a folder’s namespace allocated to one of my modules, for example: it stores a file of default number-to-name mappings there which a user might wish to edit and replace with an “enhanced” version. The module then loads the data from file, instead of accessing it directly from within its own memory space. Since the default data is all held inside the module, a user without a need to extend the mappings never need know about the file’s existence. |
Steve Drain (222) 1620 posts |
And it is done.
I have done it, but with the proviso that it depends on how the ROM is compiled. I have uploaded AppUtils, which is a collection of four small utilities written in BASIC to manipulate the Resources Apps. *CopyApp copies an existing app in Apps to a subdirectory. |