More pkgs committed to Sabotage

No comments
I am having so much fun with Sabotage. I have found it to be very easy to understand. Beautifully designed, and simple logical shell scripts everywhere. The only binary executable is 'butch', a super-fast CLI package manager.

rofl0r is the main guy maintaining Sabotage:

I forked it, and I am adding packages, so as to be able to compile all of the packages used in a typical Puppy or Quirky.
My commits:

I haven't quite decided how I will integrate Quirky with Sabotage. I have been thinking as well of improved security.

SmartGit GUI for git

My knowledge of git is rudimentary. With my recent interest in Sabotage Linux, I am now itching to be able to contribute to the project, which is on github.

So, I thought that I would make life easier for myself by using one of the GUIs for git. After playing with a few, some of which wouldn't even start, I have settled on SmartGit.

This is a commercial product, free for non-commercial projects. Their website:

It needs Adobe's Java JRE v7, which I got from here:
I got 7u80, expanded it in my Sabotage project partition, and then created /root/.smartgit/smartgit.vmoptions with one entry:
...which is where my JRE is expanded.

The SmartGit download expands to directory 'smartgit', and inside that just run bin/ That's it, off she goes.

There are setup questions, and I chose to connect to github (where you need to already have an account), and chose the Sabotage repository:

Then chose to clone it, also specified to clone it in my project partition, /mnt/sdb5/projects/sabotage

Hey, simple and it works. Looks good. Now all I have to do is learn how to use it

Well, there are some tutorials:

Note, I'm running Quirky April 7.2.1 64-bit. I am back on this slightly older Quirky, as Sabotage does not like Quirky Xerus.

Maybe I should start a Forum thread for discussing Sabotage and SmartGit.

Compiling Sabotage OS

I posted about using a ready-made Sabotage x86_64 musl rootfs:

I was most intrigued by the directory layout. Very simple and logical. Packages are installed into /opt, with symlinks created from the normal locations in the filesystem. /usr is just a symlink to ".".

This is kind of like Gobolinux. But, I recall looking at Gobolinux many years ago, and just now took another look:
I thought then, and still do, that it is "too different". Well, obviously it works, but it is not for me.

Sabotage, on the otherhand, is really still the standard Linux directory hierarchy, with the advantage of packages getting installed in /opt -- which is really nice, as you can see at a glance everything in a package.
You can even do stuff like install a package by putting it in /opt, then run "butch relink <package>" to create the symlinks (butch is the package manager).

Note, "butch unlink <package>" will remove all the symlinks. Neat. That effectively uninstalls the package.

There doesn't have to be any separate package database, as /opt is itself the database.

I have some reservations:

Musl seems to be compiling just about everything these days. Sabotage have 700 packages, but I see that Alpine Linux compiles many more with musl.
So, I guess that musl is OK. Great of course for creating static utilities. The space saving, well, when we are compiling apps that are many megabytes in size, such as Firefox, the saving of musl is probably insignificant.

Probably the same thing could be said about busybox, that Sabotage uses.

Sabotage was originally developed by Josiah Worcester:
Development stopped in 2011. The project was forked by a couple of guys:
...what is good to see is that it is still active.

I decided to give it a go. I got the source from github:
# git clone git://

This will build the entire distro from source. What I found though, is that it does not like Quirky 8.0, or rather one of the header files, for which I can blame Ubuntu.
So, I booted up my good old Quirky April 7.2.1, built from packages compiled in T2. This is very much a "vanilla flavoured" build, just about anything will compile. And indeed, sabotage is off and running, compiling that is.

I will post a report sometime.

Just a thought: Quirky and Puppy are chameleons, Woof* builds them from the binary packages of any distro. No reason why Woof* cannot build from the binary packages created by Sabotage.

Sabotage musl root f.s.

No comments
Sometime ago, I attempted to compile 'f2fs-tools' statically, using uclibc and dietlibc. Failed.

Tried again today, in Quirky 8.0. Still no-go with dietlibc. I installed 'musl', 'musl-dev' and 'musl-tools' DEBs, but no-go, had issues that were too difficult to wade through -- to do with the multilib paths.

So I thought, why not just grab a ready-to-go x86_64 musl root f.s.? Yeah, I downloaded the Sabotage OS:

No hassles at all, I was able to compile f2fs-tools. Had to install a few packages first though:
# chroot sabotage-1.0.0-x86_64-rootfs-core-aee6b85c /bin/sh

autoconf 2.69
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_6
# make
# make install

automake 1.15
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_6
# make
# make install

m4 1.4.17
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_6
# make
# make install

libtool 2.4.6
# M4=/bin/m4 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --
# make
# make install

already in f.s., but I want this later version...
e2fsprogs 1.42.13
# LDFLAGS='-static' CFLAGS='-O2 -static' ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --localstatedir=/var --sysconfdir=/etc --disable-fsck --disable-libblkid --disable-libuuid --disable-uuidd --enable-relative-symlinks
# make

f2fs-tools 1.6.1
1. Add the below line into mkfs/
mkfs_f2fs_LDFLAGS = -all-static
2. Add the below line into fsck/
fsck_f2fs_LDFLAGS = -all-static
# autoreconf --install
# LDFLAGS=-static ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --build=x86_64-pc-linux-gnu --bindir=/bin --sbindir=/sbin --libdir=/lib --disable-shared --enable-static
# make

f2fs_io_parse.c:16:23: fatal error: sys/queue.h: No such file or directory
...failed building f2fs_io_parse
...however, has built utilities that I need.

# strip --strip-unneeded fsck/fsck.f2fs
# strip --strip-unneeded mkfs/mkfs.f2fs

Perhaps others might find this useful. I ran "make clean" in each of the source packages, then put it all together again and uploaded (103.5MB):

To use, just expand, then chroot:
# tar -xf sabotage-1.0.0-x86_64-rootfs-core-aee6b85c.tar.gz
# chroot sabotage-1.0.0-x86_64-rootfs-core-aee6b85c /bin/sh

Note, I want static fsck.f2fs and e2fsck, as redesigning the initrd in Quirky. Currently, for recovery and f.s. check, a rootfs is built in /dev/ram0 from files in the system, however, this is not the best if recovering a broken system.

eudev 3.1.2

No comments
Quirky 8.0 has eudev 1.10, getting a bit old.

I downloaded version 3.1.2 from here:

Note, I first tried 3.1.5, the latest, however it is broken, does not create libgudev.

My config:
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/lib/udev --with-rootlibdir=/lib --enable-introspection=no --disable-selinux --with-rootprefix="" --disable-manpages --libexecdir=/usr/libexec --build=x86_64-pc-linux-gnu --enable-split-usr --exec-prefix="" --enable-hwdb  --enable-kmod --disable-gtk-doc --enable-gudev

PET are here:

Note, the rules are separate, as Quirky currently does not use them.

Pages: [1] [2] [3] [4] [5] ...