30 Commits

Author SHA1 Message Date
T. Joseph Carter
66a3648ef2 install-gsos.py: Refactor patch application
This isn't done yet as the code doesn't currently do anything with
checking whether patches were correctly applied or not.  Also the
function is really ugly.  I need to start making python modules and
classes out of a few things here to clean this up further.
2015-11-15 05:46:24 -08:00
T. Joseph Carter
50e57aab7c install-gsos.py: Now patches a2boot files! 2015-11-14 15:53:02 -08:00
T. Joseph Carter
442d48c0be install-gsos.py: Refactor digest check 2015-11-14 14:39:53 -08:00
T. Joseph Carter
7e38c7fe37 install-gsos.py: Add some error checking 2015-11-14 13:36:40 -08:00
T. Joseph Carter
7ef2e4c445 install-gsos.py: Improve output on sea.bin extract 2015-11-14 11:55:30 -08:00
T. Joseph Carter
b96fe0a3bb install-gsos.py: Improve download func output 2015-11-14 10:43:59 -08:00
T. Joseph Carter
db1fea3000 install-gsos.py: Remove some dead code 2015-11-14 10:34:20 -08:00
T. Joseph Carter
4c80da8598 install-gsos.py: More refactoring
I'm not real pleased with the outcome here, but all of the functions
related to mounting the HFS image and getting the a2boot files out of it
has been factored out of the bootblock installation function.

I also rewrote the disk7 download code (which has been refactored) be a
lot more robust.  It's longer than it maybe needs to be, but it's going
the right direction.
2015-11-14 10:29:21 -08:00
T. Joseph Carter
8d94034d5e install_gsos.py: Fix typos, make Darwin work again 2015-11-14 08:10:13 -08:00
T. Joseph Carter
bfa985068e install-gsos.py: refactor HFS image operations
Because the way we deal with the A2SETUP.img varies based on your OS,
there's a lot of platform-specific clutter.  Not only that, the boot
block installation function has started to get rather unwieldy.  So we
begin thinning it out a little.
2015-11-14 08:02:28 -08:00
T. Joseph Carter
1ae17e23b2 install_gsos.py: check if boot files are needed
The check is written and runs correctly, but its result is not currently
used for anything.
2015-11-14 05:03:57 -08:00
T. Joseph Carter
1c95cadacb Begin cleanup; string formats, verbosity
This is the start of a major cleanup of the code in install-gsos.py
(which really is turning into install-a2boot.py).  First, the code is
developing three levels of output: Silent, normal, and verbose.  There
might eventually be also a fourth debug level, but that's not happening
yet.

Second, variable names just haphazardly chosen as I've been working on
this are being sanitized, made consistent, and otherwise improved.

Third (and this has only just begun), the code is being refactored a
bit for what belongs where.  That will continue.
2015-11-14 03:50:29 -08:00
T. Joseph Carter
2c9a1ed072 Installing netatalk-format NAMES now works 2015-11-14 00:17:31 -08:00
T. Joseph Carter
3709d7c0ab ft=python (oops) 2015-11-14 00:10:49 -08:00
T. Joseph Carter
dda119a948 Added 6.0.1 patches; whitespace changes; vim hint 2015-11-13 06:23:02 -08:00
T. Joseph Carter
12816d90cd Clean up 2.x/3.x compatibility, comments 2015-11-13 05:40:31 -08:00
T. Joseph Carter
1934abe7db Get the .sea name right out of the MacBinary file 2015-11-13 05:33:23 -08:00
T. Joseph Carter
8ccf7ea70a Do the output suppression on subprocesses right 2015-11-13 02:02:29 -08:00
T. Joseph Carter
dff8c58675 Cleanups to allow non sea.bin disk image in future 2015-11-12 09:55:21 -08:00
T. Joseph Carter
2c5244ba98 Implement multiple sources for disk7 2015-11-11 15:34:38 -08:00
T. Joseph Carter
1836b18c34 Support finally for Linux! 2015-11-09 04:56:20 -08:00
T. Joseph Carter
819e19f6d3 .endsWith -> .endswith 2015-11-09 04:54:05 -08:00
T. Joseph Carter
4587df5bf9 hfsutils works if installed (no check for that) 2015-11-09 03:58:56 -08:00
T. Joseph Carter
cc89978e52 Now installs on Darwin systems! 2015-11-09 03:14:35 -08:00
T. Joseph Carter
d9c4af34e0 Different tack: Just install boot blocks
This isn't done, but it reflects largely starting over.  The goal right
now is to install the boot blocks.  To do this we need to:

* Find out if we need to install anything
* Download the disk image archive
* Extract the disk image from the archive
* Mount the image
* Copy the files out of the image
* Unmount the image
* Patch the files if they need patching
* Verify the files are patched correctly

The branching possibilities for installing the disk images are:

1. That the image is currently always a .sea.bin file.  In future, it
   might not be!  After all, the other six disk images are available
   multiple places and they're not stored as self-extracting images in
   MacBinary format.

2. That there are three different ways I know of to extract the HFS disk
   image:  Mount it as a loop filesystem (Linux), attach it as a disk
   image file (OS X), or extract its contents using hfsutils which
   should be able to run just about anywhere.  Of course hfsutils has an
   additional branch in that hfsutils "sanitizes" the files you copy out
   of it for you in ways we don't want, so we need to know the file
   names it uses so we can change them back to OS X expectations.

3. How are we installing these files?  If we're installing them for
   netatalk, we need to rename a file.  If just to a UNIX path, that's
   something different.  If there was some reason to package them in
   ProDOS format, again, we need to do something different.

At this time, since I'm developing this on a Mac, I'm assuming .sea.bin
with an 800k image, I'm implementing hdiutil to mount the image, and
I'll implement the UNIX naming first (so as Mac/Linux mount the files.)

Next I'll implement renaming for netatalk and hfsutils.  I'll check it
out on the pi and implement the Linux filesystem mounting probably last,
then clean it up to behave more like Python is supposed to if I can
before I start on the GS/OS install itself.

I need a better MacBinary unpacker than unar gives me.  The way that
works right now is just clumsy.
2015-11-08 20:48:13 -08:00
T. Joseph Carter
1796676df1 os.environ.has_key(key) -> key in os.environ 2015-11-08 17:57:29 -08:00
T. Joseph Carter
876991f11f A little more progress on installing boot blocks 2015-11-08 15:39:20 -08:00
T. Joseph Carter
73fa5d5909 Add some pseudocode that is helping me understand
Think I see some of what I need to do next.
2015-11-07 22:31:43 -08:00
T. Joseph Carter
c3b4829e26 Downloads and extracts disk 7 now
I'm not real happy with how I'm doing this.  It's obviously not as clean
or as simple as a shell script would be, but that's to be expected since
we have to emulate with those shell commands--whole programs in their
own right--do.  But right now, the logic doesn't flow right either for a
structured program or an unstructured shell script.  Probably trying to
do too much in one go there.
2015-11-06 23:55:36 -08:00
T. Joseph Carter
d52b6ef9f1 Start of experimental install-gsos.py
This script replaces--or rather will eventually replace--the bash script
that installs netboot files in /media/A2SHARED.  It generally is going
to be implemented for now as a copy of the shell script, not quite
verbatim.  For example, rather than run individual commands with sudo,
it re-runs itself with sudo.  And rather than force scriptURL to include
a trailing slash, it explicitly chops the slash off to behave more like
you'd expect directories to.

Also, the body of installing the netboot files will be built as a
function rather than as straight script execution.  Basically the idea
there is to begin breaking the components of the netboot script into
their own functions that can be accessed independently in the future.
One step at a time there.

Anyway, very little of the script is done yet.  This is just to begin
the process and perhaps elicit some feedback if I'm really doing
something totally wrong here--my python's a little rusty.
2015-11-06 08:51:43 -08:00