Plan to be able to use /usr/local/lib/raspple2 for other things, so
moved the nulib2-version file to a pkginfo subdir.
This gave me an excuse to create something I've wanted for awhile: A
place to stick legacy code that fixes our mistakes that probably doesn't
need to exist forever. I can count the number of people who downloaded
1f8afb6 on a few fingers of one hand most likely, but the change still
got published and I can silently fix my mistake without having to stick
mostly useless code in install_archive_tools someone's gonna look at
three years from now and ask, "does that still need to be there?" No,
no it doesn't. And fixup describes succinctly how long that code needs
to remain there. And the fix is encapsulated into a nice little blob
that's easily removed when the time comes.
Fixes an unfiled bug using the old snapshot where nulib2 fails to
compile on buster/sid systems. Additionally, we now include the version
of nulib2 we've installed in /usr/local/lib/raspple2 so that we can
upgrade this stuff when the time comes to do so.
The Unarchiver for UNIX is available on Debian, Ubuntu, Fedora, and on
macOS under the package name "unar". It's in Arch Linux as well called
"unarchiver". What this means is we really have no need whatsoever to
download the source code and compile it, so we won't.
Also made install_archive_tools ignore args it doesn't understand.
And what do you think install_java does? If you just say it's going to
install the latest version of perl, I'm going to hit you.
On Raspbian systems it defaults to oracle-java8-jdk because that's what
Raspbian defaults too _for now_. Apparently openjdk 9 can keep up with
it and possibly run circles around it, in which case maybe we want to
use default-jre everywhere. I'm for not using Oracle Java regardless
because … Oracle, but if it's not just as fast, those of you running
armv6-based Pis are going to not be happy if we drop it.
We now install oysttyer 2.9.1 instead of old 2.7.2. While I was at it,
I made the installation prefer the Debian package for oysttyer if you
have it available (in buster and sid), while falling back on local
installations if you don't.
Changed how we remove local installations for Term::ReadKey. The way we
do it now is less complete, but also less likely to break stuff that we
didn't install maybe. It doesn't heart anything to leave it behind, but
it requires a manual touch to clean it up.
Finally fixed some missing sudos. Really the whole installation should
be run with root privs if it's going to run with root privs, but I'm not
ready to begin thinking about that since we don't necessarily know who
the normal user is otherwise, and we still modify the normal user's
account. (That should change, but we're not in a position to change it
yet.)
…why? Because show_changes will become the "do you want to install
this?" confirmation at some point. That's not what it does now, it just
shows you the version for now. But eventually it will tell you the
version you have installed, compare to the version you are going to
install, show you the changes between here and there, and ask you if you
actually want to proceed with installation. When that happens it'll be
appropriate to rename the script, but for now it's a placeholder.
I don't like how this is done, but I don't like any part of how the
emulators are handled right now. At least the mess is in the right spot
now, save for the thing that conditionally execs a login shell to make
sure gsport groups take effect at the end. That whole restart thing is
also a mess I haven't thought about yet.
The install for both LinApple and GSPort is still kind of a mess. In
LinApple's case that's mostly upstream (tinu.) and GSPort is a
combination of multiple clusterf—it's gonna take some doing. :)
At some point in the very near future GSPlus will replace GSPort and
that'll clean up some of it.
We don't actually download any picopkg files in install_comm_tools
anymore—oysttyer was the only one and we just always pull that from git
and the Readline module from CPAN now. (In buster we'll only need the
CPAN module if Debian doesn't package it.)
Really the only picopkgs which are optional to download are gsport,
linapple, and nulib. And since none of those exist at the moment, you
don't even really have much of an "option" about them either. Yeah, I
know, I'm working on it.
Did you know if you're at the top of a directory listing and press up,
it segfaults immediately, leaving your terminal in a modified state
without a visible cursor, forcing you to know how to fix that kind of
broken terminal state with stty, tput, and/or reset? Yes!
It is at version 0.12 and it was last touched in 2002. It has no
manpage, no help screen, and the wrong keypress causes it to randomly
die badly. This is not a "user friendly" program. If you want ftp with
arrow keys, use lynx!
We're no longer installing this pile of alpha-quality abandonware.
Don't like it? Make something good or adopt this program and fix its
bugs, then talk to me. I just can't justify this thing.
ipv6 should be enabled on Raspbian nowadays, so we should no longer need
to modify the stock exim configuration. If it gives you an error on
startup, let me know and we'll put it back.
It turns out nc does a pretty decent ftp client and might be a good
alternative to cftp which … really never went anywhere and is awfully
easy to crash.
Another temporary script. This performs the tasks from ivan.sh related
to installCommTools. It differs from that block (which has not yet been
formally replaced) primarily by having a rewritten and hopefully more
logical installation for oysttyer.
Oysttyer probably should be broken into its own script—all of these
things should be really—but this one in particular because it's so
involved even compared to other installations because we have stuff we
need to clean up first.
The FIXME about unsafe file handling is resolved. However since nulib2
doesn't build on sid, we need to get that fixed before sid becomes
buster, so a new FIXME is needed.
Now install_archive_tools creates its own temp directories for
installation. Nulib2 doesn't build for me on sid/buster though, we're
going to need a patch I think. We may as well patch it at that point
for building libnufx as a shared lib while we're at it. I really don't
want another project right now. :( This is why we don't get releases
out.
The archiver installation was a pretty simple, isolated chunk of code,
and thus easily pulled into its own script with minimal external
dependencies.
I made few changes, so the new script isn't very tidy unless it's run
from ivan.sh. It should create temp directories for anything it
downloads and clean up after itself when it's finished, but for now it
assumes ivan.sh is doing that. Mostly that's to keep the intellectual
diff small from the code in ivan.sh to the script.
I'll clean this up in an upcoming commit. Feel free to offer PRs that
do this kind of thing to other easily isolated (or not so easily
isolated) chunks. Once ivan.sh is split apart into nice logical pieces,
it will be a lot easier to test and fix individual pieces independent of
the whole. That's something we can't even say for a2server yet.
Added a new script that sets two variables when sourced, $ras2_os and
$ras2_arch. These are different than the existing variables we've been
using in a2cloud/a2server and they don't (in and of themselves) presume
Debian. That said, nothing's likely to work with these scripts except
on Debian, so … yeah. But the script is designed not to tie you to that
ultimately.
Outputs the variable assignments to stdout unless you pass -q.