Table of Contents
This page will be re-written in the future, for now it's here as-is being copy-pasted from several sources.
SysV pkg-files
NB: All the shell stuff assumes you are running bash. If you are using sh or ksh, you will need to manually expand the brace expansions and if you are using csh or tcsh, you will need to adjust the for-loops and brace expansions for that shell. To make a SysV pkg from a cpio file: 1. Make a temp/working directory 2. In the temp/working dir, blow up the cpio file (as root, or with sudo if you have that installed): cpio -idmv /path/to/foo.cpio 2b. If the cpio file was already installed, an alternative to expanding the cpio file again is to pipe the output of 'cpio -cit < foo.cpio' to 'pkgproto' to build the prototype file in the next step, but it is not as easy to search for symlinks using this method. 3. Build the pkg prototype file (does not have to be done as root): echo 'i pkginfo' > prototype pkgproto {dirs,created,from,cpio} >> prototype 3a. This is the tricky part. If there are any symbolic links in the pkg, for some reason, the pkgproto for AMIX doesn't include them in the prototype file, so, we have to add them manually. You'll need the coreutils package installed to get the 'readlink' command. The following example just searches the 'usr' subdirectory, but if the pkg installs stuff outside of 'usr', then they will need to be searched/accounted for as well: find usr -type l -print > one for i in `cat one` ; do readlink -f $i ; done | sed -e "s|`pwd`||" -e "s|^/||" > two paste -d= one two | awk '{print "s none", $1}' >> prototype The 'one' and 'two' files can be removed after the 'paste' command. 3b. At this point, it's not a bad idea to check the prototype file for any inconsistancies with regards to permissions and file ownership. For the most part, everything should probably be 'root root', or maybe 'bin bin', but there are exceptions. 4. Create a pkginfo file. The 'PKG' name can only be up to 9 characters long. PKG=pkgname ARCH=m68k NAME=My nifty package VERSION=1.2.3 CATEGORY=utilities 5. Make the package structure: pkgmk -d `pwd` -r / 6. Bundle it up into a package file: pkgtrans -s `pwd` /path/you/store/pkgs/pkgname-1.2.3.pkg 7. To install your new pkg (as root, or with sudo): pkgadd -d /path/you/store/pkgs/pkgname-1.2.3.pkg --- If you configure/install packages to install to their own directory (/usr/local/pkgname, /opt/AmixBP/pkgname, etc), then you can build your prototype file with something like: cd / ; find usr/local/pkgname | pkgproto >> /path/to/working/dir/prototype ; cd - as the command step of 3 above. Just keep an eye out for bits that might have been installed elsewhere, like gcc likes to put the man pages in /usr/man/* regardless of the --prefix supplied during the configure step. If you just install everything to /usr/local, which makes it easier on the PATH, I use 'find' to look for files newer than the Makfile for the package that was just installed: cd / ; find usr -newer ~/dl/foo-2.04/Makefile | pkgproto >> /path/to/working/dir/prototype The prototype file will need a little cleaning, make sure that there are entries for all directories: i pkginfo d none usr 0755 root root d none usr/local 0755 root root d none usr/local/bin 0755 root root The above 'find' command will probably only find /usr/local/bin, you'll need to manually add the two directory entries above it. Also, check lower in the file for other examples, like '/usr/local/man/man1' (for man pages), might need to add an entry for '/usr/local/man', etc. If you miss any, 'pkgmk' will let you know. Just fix them, then re-run pkgmk, adding the '-o' flag to 'overwrite' the previous run.
Installing AmixBP software
More information on AmixBP (backports for Amix, not updated since 2009).
After downloading the desired files from sourceforge.net, to unpack them into the default location /opt/amixbp on your Amiga UNIX machine run the following command:
zoo xpq filename.tar.zoo | gtar -xvC / -f -
This will unpack the files to the correct location. If you'd rather not unpack straight into /opt/amixbp, you can unpack to your current directory by omitting the “C /” from the gtar options. This will create an opt/amixbp directory tree descending from your pwd. When unpacking the files, don't worry about errors regarding existing directories. This is normal.
You need to add /opt/amixbp/bin to your path. If you would like files installed to take precedence over the native utilities, add it to the front of your path. If you want to Amiga UNIX commands and utilities to take precedence, add it to the back of your path. In that case, to force the use of AmixBP software (for example: Amiga UNIX provides an old gcc, but so does AmixBP) you will need to specify the full path. ie: /opt/amixbp/bin/gcc
Installing software from the file galleries
Installing the software is fairly simple. You will need bzip2 to handle the archives, this is provided here for the binary only. If you like, you can download the full bzip2 archive from the file galleries, which requires bzip2 to extract. To install the bzip2.Z file, as root do:
uncompress bzip2.Z chmod a+x bzip2 cp -p bzip2 /usr/bin
Now you have bzip2. To install any of the cpio.bz2 archives, become root (su), cd to / and do:
bzip2 -dc filename.cpio.bz2 | cpio -ivcdm
If you have the bzip2 archive installed, you can use bzcat instead of bzip2 -dc.
If you don't entirely trust the cpio archives, you can install them into a fake root tree and move the files later. For example, you can make a directory in /tmp, unarchive the file there, check it out, and move the directories out to / when you're satisfied.
Note that most archives will unpack to /usr/local, so you need to add directories like /usr/local/bin and /usr/local/sbin to your path if you want to execute them without explicitly specifying the location of the files (ie: instead of make you would have to do /usr/local/bin/make if /usr/local/bin is not in your path).
Compilation
SUCCESS
- NCSA httpd 1.5.2a — successful on 1.1, AMIX gcc
- gzip 1.3.5 — successful on 2.03, gcc-2.7.2.3
- GNU screen 4.0.2 — successful on 2.03, gcc-2.7.2.3
- GNU make 3.80 — successful on 2.03, gcc-2.7.2.3
- wget 1.9.1 — successful on 2.03, gcc-2.7.2.3
- Nethack 3.4 — successful on 2.03, gcc-2.7.2.3
- apache 1.3.31 — successful on 2.03, gcc-2.7.2.3
- gcc 2.4.5 — successful on 2.03, AMIX gcc, then recompiled with itself
- gcc 2.5.8 — successful on 2.03, gcc 2.4.5, then recompiled with itself
- gcc 2.6.3 — successful on 2.03, gcc 2.5.8, then recompiled with itself
- gcc 2.7.2.3 — successful on 2.03, gcc 2.6.3, then recompiled with itself
- ntp-4.2.0 — successful and working on 2.1
- bash-1.14.7 — successful and working on 2.1
- bash-3.0 — successful and working on 2.1, needs changes to compile (see below)
- bzip2 1.0.2 — successful and working on 2.1
- rsync 2.6.3 — successful and working on 2.1
- GNU tar 1.14 — successful and working on 2.1, needs changes to compile (see below)
- GNU coreutils 5.2.1 — successful and working on 2.1, needs changes to compile (see below)
- GNU patch 2.5.4 — successful and working on 2.1, needs changes to compile (see below)
- lynx 2.7.2 — successful and working on 2.1, needs changes to compile (see below)
- zlib 1.2.2 — successful and working on 2.1
- perl 5.005_4 — successful and working on 2.1, care needed during configuration (see below)
- openssl 1.0.0d — successful and working on 2.1, needs changes to compile (see below)
FAILS
- amiwm 0.20pl48 — fails on 2.03, compiles, object files do not link, AMIX gcc
- gcc 2.95.3 — fails on 2.03, with gcc 2.7.2.3, collect2 has unresolved symbols (forget which, sys_sig.h?)
- binutils 2.15 — no m68k-cbm-sysv4 target for gas or ld, makes this useless pretty much
- apache 2.x — compilation failure
- mysql 4.x — compilation failure
- lynx 2.8.x — compilation failure, assembler takes a dump
- netrik — missing, uncompilable libraries
- w3m — missing, uncompilable libraries
- GNU gettext — nope (last tested on 2.03)
- GNU readline — nyet (last tested on 2.03, integrated readline on bash 3.0 compiled fine on 2.1)
- UNIX top 3.5.1 — Can get it to compile, but only displays one process (init), free mem is wrong, and crashes on update.
- wm2 — Wants ANSI C headers. Man, just ask for the world why dontcha?
IN PROCESS
- WindowLab 1.32: Add -lnsl and -lsocket to EXTRA_LIBS in Makefile. Comment out defines for shape extension in top of Makefile. Change XROOT to /usr/X. Change snprintf() in menufile.c to use sprintf(), remove “sizeof” parameter (Buffer overflows? What buffer overflows??). Rename windowlab.1x to windowlab, compress with compress and move to /usr/man/1X. HOLY SHIT A WINDOW MANAGER COMPILED ON AMIX
CHANGES NEEDED changes needed for successful compilation on AMIX
- bash 3.0 Needed to edit some stuff for libintl to compile…will redo this and add the info later
- GNU tar 1.14 Need to #include stdlib.h in src/xheader.c and src/incremen.c to provide free
- GNU patch 2.5.4 Edit argmatch.c, change strncasecmp call to strncmp
- lynx 2.7.2 Add “-DNO_BCOPY” to defines in Makefile for svr4
- coreutils 5.2.1 Added #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) to lib/fts.c
- Perl 5.005_4: Compiled only standard extensions, shared objects. Link gcc-2.7.2.3 cpp to /usr/local/bin/cpp to prevent use of ancient /usr/public/bin/cpp before running Configure. Use my own malloc, do not use Perl malloc
- openssl 1.0.0d perl5 needed for compilation. svr4 unsupported, run ./Configure gcc instead of ./config. Define NO_STRINGS_H in Makefile CFLAGS. edit crypto/o_str.c to change strings.h ifdef to use NO_STRINGS_H. include sys/types.h in crypto/bio/bss_bio.c, replace all instances of ssize_t with size_t. ifdef NO_STRINGS_H apps/apps.c. add -lnsl -lsocket to EX_LIBS in apps/Makefile and in test/Makefile to fix lots of missing symbols
- prngd 0.9.29. Oh dear, one of these where you edit the Makefile and config.h manually, and oh generic sysv4 isn't supported so I have to make my own defines… Defined AMIX, copied SYSLIBS from NCR sysv4 entry. AMIX doesn't have ssize_t is has size_t, many files need to be edited (add ifdefs later). AMIX closelog requires () made AMIX entry in config.h, provided file locations for entropy collection borrowed Solaris 7 prngd.conf file, need to fix it but it will work for now. Seems to work, but will dump core if you fail to provide a socket to run on. Provide that socket…
- openssh 3.9p1. Proceeding well, now that I realize ldd expects to find everything in /usr/lib and/or /usr/ccs/lib and cannot be changed (permanently) without a recompile, and gee we don't have the sources for that guy. Commented out include of shadow.h in auth.c and auth-shadow.c since it caused redefinition of struct spwd. This allowed compile to continue but I wonder if I'll be able to log in. Compilation finished, now recompiling since AMIX doesn't have /dev/random and I need to use prngd for entropy…binaries seem to work otherwise. Add #define PRNGD_SOCKET /var/run/egd-pool and #define PRNGD_PORT 708 to ssh-rand-helper.c so ssh actually uses prngd. Works now but only root can login…others get setuid error…think I found a fix, add to config.h: #define SETEUID_BREAKS_SETUID 1, #define BROKEN_SETREUID 1, #define BROKEN_SETREGID 1
- rhapsody 0.25b. REQUIRES ncurses from DRASTIC UPGRADES file gallery. add #define bzero(b, n) memset(b, '\0', n) to src/defines.h. add #define strncasecmp(a, b, c) strncmp(a, b, c) to src/defines.h. add #define strcasecmp(a, b) strcmp(a, b) to src/defines.h. comment out #include strings.h in: src/screen.c, src/ctcp.c, src/dcc.c, src/main.c, src/config.c, src/comm.c, src/misc.c in main.c change #include <sys/signal.h> to #include “/usr/local/lib/gcc-lib/m68k-cbm-sysv4/2.7.2.3/include/sys/signal.h”
WANT-TO-BUILD
ANY modern window manager for X — Please