From owner-freebsd-ports Thu Nov 23 05:48:01 1995 Return-Path: owner-ports Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id FAA08146 for ports-outgoing; Thu, 23 Nov 1995 05:48:01 -0800 Received: from time.cdrom.com (time.cdrom.com [192.216.222.226]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id FAA08129 for ; Thu, 23 Nov 1995 05:47:58 -0800 Received: from localhost (localhost [127.0.0.1]) by time.cdrom.com (8.6.12/8.6.9) with SMTP id FAA19248; Thu, 23 Nov 1995 05:47:26 -0800 To: Michael Smith cc: asami@cs.berkeley.edu, ports@FreeBSD.ORG Subject: Re: Proposal 3: Non-executable file in *_DEPEND In-reply-to: Your message of "Thu, 23 Nov 1995 07:20:56 GMT." <199511230720.HAA28188@genesis.atrad.adelaide.edu.au> Date: Thu, 23 Nov 1995 05:47:26 -0800 Message-ID: <19246.817134446@time.cdrom.com> From: "Jordan K. Hubbard" Sender: owner-ports@FreeBSD.ORG Precedence: bulk > Argh! Jordan's finished 2.1 and needs a bigger mountain! 8) Seriously though , > I guess if we want to do the thousand-pound package strategy, this isn't > such a bad scenario. To be honest, I've been thinking about this since long before 2.1 was even planned. This stuff is pretty old! :) > But it's simple. And the only one of the items above (it's two, really, if > you count verification) that it loses on is the explicit list of files, > sizes and times required for safe package deletions. Yes, the plist format is simple, which is why it evolved that way, but it has deeper problems. Consider, for example, the twistedness of @exec and @unexec, or the necessity for @dirrm, or the way that prefixes are handled, or even the gross specialized expansion of `%' directives to make up for the lack of any environment variable handling. I could go on. The number of special case hacks and kludges that were added after the initial plist syntax was defined is living proof, IMNSHO, that the original specification syntax was flawed. > True. We can wrap a package/distribution in another tarfile, and extend/ > refrob/whatever the plist++ syntax to allow multiple tarballs inside the > wrapper. You could then have safe multiple prefixes, and use > > tar -xf --fast-read --to-stdout tarball | (cd $prefix; tar -xzf -) I think it's simply time to go the DEC route, where you have multiple files comprising a package. Probably one or more foo.tgz files and a foo.inf file for each package. Yeah, it's messier and it knocks the paradigm of "one file per package" for a loop, but it make things a LOT easier across all the various media I'll need to support - think everything from floppies to FTP. > Woooah mamma. Hold it _right_ there. Before we go writing InstallShield > for FreeBSD (now _there's_ code that begs to die), let's have a look at > what a package tool needs to do : > > 1) Add packages. > 2) Remove packages. > 3) Verify that a package is complete and correct. > 4) Provide details on a package. 5) Deal with User Preferences 6) Deal with *other* packages 7) Possibly interact with the user 8) Possibly interact with higher level installation tools. 9) Be able to install system distributions 10) Be able to install packages by a very *wide* variety of means. It's a more complex problem that *just* what pkg_install provides. pkg_install is actually insufficient for the task in many respects and I wouldn't model the next generation tool after it. > 1) This is where the fun always is. Firstly, I can't see the real > difference between a package and a port, apart from the process of > producing the installed components from the supplied raw materials. I agree that a port install should still mimic a package install, however that's a different area of the problem. I'm just looking at merging packages and distributions right now. > Up to here, there's nothing requiring any scripting language, and we've > covered a large proportion of the package population already. You need the scripting language to talk to the user (conditionally), be more clever about wedging a package into place (there are many scenarios where a stupid install, like zircon, will just smash another port (like that tkcvs thing we used to have but seem to have wisely dropped) and render it inoperable. There are ways of merging two tcl applications (picking unique filenames, rebuilding index files, etc) but our current "blind, dumb robot" - the plist parser - doesn't know how to do any of those things and it wouldn't even be easy to train it. > [My C interpreter] > Complete sideline - where can I get this? Let me just finish my current code review on it and I'll release it again. In its previous incarnation, it was an X widget placement language (kind of like Tk and TCL cemented together) and I've always wanted to prise the functionality apart. > > 2. A very simple 3D filesystem library. > > Neat. Lots of work, but possibly worth the effort. Well, think more than packages - think "system upgrades" and I think you'll see why the chronological store becomes a lot more important. > I can see us fielding a lot of questions from Lusers who have installed > seventeen copies of emacs and filled up their "attic" filesystem though, > and making the database smart enough to deal with damage caused by "2D" > users/tools might be more work than the implementation itself. To be honest, I was thinking of doing a terrible thing (assuming I can get away with it): I was going to hack tar and cpio to recognise 3D file systems and let you specify "tag" information and such so that the extraction follows the 3DFS API. E.g.: tar -xvzf foo.tar --3dfstag MYREL_2_1 -C /my3dfs Could be made to DTRT. Other damage with 2D tools, well, I think we could at the very least have an options for: 1. Checking tree sanity, and if a checksum fails or a delta is found missing, report it and optionally try and fetch it from a known-good source. 2. Reconstructing the "visible" tree from scratch using some event tag. Both of these features would be really cool anyway and would deal with the long-standing problem of knowing whether that /usr/src you're looking at is *really* a good one, or if someone (maybe even sup) has spammed it. > Death to character-mode interfaces! If people want text screens, they can > have commandline-driven tools 8) We have an X server that will run on > 16-colour VGA, on Herc-style mono cards, and who knows what else. > This leaves users of async terminals and CGA cards out in the cold; both of > these sorts would probably be quite happy with straightforward commandline > tools. Now now, you forget one thing: I don't *like* writing command line interfaces! :-) Of course, I guess I could always expand the "script" mechanism from 2.1 to let the user type the script interactively at the keyboard.. :-) Still, it's really too early to declare the death of character mode interfaces. Yes, I'm an X hacker and I much prefer hacking on X interfaces, but an all-singing, all-dancing system written in Tk would, I believe, still be just a *bit* before its time. We'd still have all these people with perfectly reasonable systems but totally unable to get past the evil and scarey xf86config program and considerably frustrated by the exercise. For those all-too-numerous people, we need to use ncurses. And c'mon - you can still do some interesting things from ncurses, and it keeps us reasonably honest about not getting too wedded to X. Not as a first cut, but I'd like to eventually see a DOS character graphics module (as the ncurses and X11 interfaces would also be drop-in modules) written so that someone could write a custom version of the installer to run entirely under DOS. Why not? You've got full access to the BIOS there, and if you're trying to set up some sort of UMSDOS style FreeBSD installation (something we've always wanted to be able to do) why not do it right under DOS? And please don't say "DOS graphics" - I'd like an interface that responds to keystrokes in the user's lifetime.. :) > Tk. Not because it's the best, or the easiest, or anything other than that > it's _common_. On top of it, a set of form components and a form manager > in whatever language wins (your Forth 'setup', Jordan?), that eats form > specifications and generates appropriate form layouts : Oh dear, are we back to the Tk vs Ctk wars then? :-) Jordan