sbog
Added tag 0.3-rc1 for changeset 1ed138843c86
Removed tag 0.3
Added tag 0.3 for changeset 2c9d53b27937

heads

tip
browse log
0.3-rc1
browse .tar.gz

clone

read-only
https://hg.sr.ht/~telesto/sbog
read/write
ssh://hg@hg.sr.ht/~telesto/sbog

#sbog - a command line program for listing slackbuild.org upgrades

#motivation

i was unhappy with some aspects of the sbopkg -c command, especially the performance. sbog addresses this issues:

  • sbog is sufficiently fast
  • sbog can be run as non-root user
  • sbog prints the upgrades in a simple, easy to parse way

#installation

#from source

sbog is written in go.

note to slackware users: don't use the go command that comes with slackware (gcc-go package), but install go by using the google-go-lang slackbuild. this is the default go compiler and produces the best code.

installation procedure:

# set the go sandbox, go code lives here
export GOPATH=<path to go sandbox>
	
# go executables are installed to this place
export PATH=$GOPATH/bin:$PATH
	
# download the source, compile and install
go get bitbucket.org/trueslack/sbog
	
# sbog is now usable
sbog help

#download executable

You can find binary downloads at the sbog downloads page.

#usage

enter

sbog help
	

to learn how to use sbog.

#supported slackbuild.org branches

sbog was tested with the slackbuild.org master and 14.2 branches.

sbog has no support for following slackbuild scripts: development/p4v, libraries/p4api, multimedia/google-talkplugin, multimedia/huludesktop, network/viber, python/p4python, system/aide, network/dianara (patch for dianara sent to ponce, waiting for reply).

the reason is that these scripts do nasty things and sbog is not able to parse the package version from the script (parsing the package version from a slackbuild is a clumsy and hacky business. a slackbuild repository does not contain a package database.).

sbog will work with other slackbuild.org branches, but it's more likely to run into issues. saying that, almost all slackbuilds are still fine, errors are the exception.

#prettify the output of sbog

the default output of the sbog upgrades command is hard to read but easy to parse:

	
graphviz   graphviz-2.38.0-x86_64-1_SBo   graphviz-2.40.1-x86_64-1_SBo
feh   feh-2.22.2-x86_64-1_SBo   feh-2.23.1-x86_64-1_SBo
...
	

it's easy to improve this output. as an example i declare a shortcut sbou by putting following code into my shell startup script:

sbou() {
	sbog upgrades /var/lib/sbopkg/SBo/ /var/log/packages/ | awk '{print $1 "\n\tinstalled: " $2 "\n\tnew:       " $3 }'
}

the awk command formats the output in a way similar to sbopkg. running sbou gives us now:

feh
	installed: feh-2.22.2-x86_64-1_SBo
	new:       feh-2.23.1-x86_64-1_SBo
graphviz
	installed: graphviz-2.38.0-x86_64-1_SBo
	new:       graphviz-2.40.1-x86_64-1_SBo
...
	

#benchmarks

on my 32-bit slackware-current system there are about 1000 installed packages. 70 of these packages are slackbuild based. i use the slackbuild.org "master" branch. for the benchmarks every command is run twice:

  • 1st run: before running the command the hg cache is cleared with the command

      `sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"`.
    

    it's like running the program for the first time after boot.

  • 2nd run: all hd data is in cache now.

elapsed time:

			sbopkg -c		sbog upgrades
1st run		  38 s        		 10 s
2nd run		  16 s	    		0.6 s

#open issues

dealing with package name changes is not implemented yet.