findunusedbd/README.md

74 lines
2.5 KiB
Markdown
Raw Normal View History

2014-06-18 05:13:55 +00:00
Standalone
----------
2014-06-05 12:25:46 +00:00
Use `fatrace` to record all file access during an `sbuild` run and find those
build dependencies which have their files never needed. You need superuser
privileges to run this script because of `fatrace`.
Run it like follows. In one terminal execute:
$ ./findunusedbd.sh
In another run sbuild like this:
$ sbuild \
--chroot-setup-commands='/home/user/path/to/findunusedbd.sh chroot-setup' \
--pre-realbuild-commands='/home/user/path/to/findunusedbd.sh pre-realbuild' \
--post-realbuild-commands='/home/user/path/to/findunusedbd.sh post-realbuild'
This needs the --pre-realbuild-commands and --post-realbuild-commands to exist
which can be added to sbuild by applying
`0001-add-pre-realbuild-commands-and-post-realbuild-comman.patch` to it.
Any unused dependencies can then be found by investigating the file
`unneededdepends.list`.
2014-06-18 05:13:55 +00:00
Batch
-----
2014-06-18 05:03:42 +00:00
The process can be automated for multiple packages by passing `dsc` files to
`run.sh`:
$ ./run.sh ../mysources/*.dsc
This script will put the successful builds in `buildsuccess.list` and the found
unused build dependencies as `*.unusedbd` for each `dsc` file in the current
directory. A second pass on the successfully built `dsc` files will then check
each of the found unused build dependencies for their validity by replacing
them by an empty equivs package one after another. The results of that run are
stored in `*.unusedbd.real` files for each `dsc` file in the current directory.
The `run.sh` script expects to find `findunusedbd.sh` directly under `/home`.
Best try this out in a chroot to not mess with the host system.
2014-06-18 05:13:55 +00:00
Schroot setup
-------------
Create the schroot:
$ sudo sbuild-createchroot --make-sbuild-tarball=/var/lib/sbuild/sid-amd64.tar.gz sid `mktemp -d` http://127.0.0.1:3142/snapshot.debian.org/archive/debian/20140601T000000Z
Enter the schroot:
2014-06-18 05:03:42 +00:00
$ sbuild-shell source:sid-amd64-sbuild
2014-06-18 05:13:55 +00:00
Make apt ignore the `Valid-Until` header:
2014-06-18 05:03:42 +00:00
$ echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/80-nocheckvaliduntil
2014-06-18 05:13:55 +00:00
Install `equivs`:
2014-06-18 05:03:42 +00:00
$ apt-get install equivs --no-install-recommends
2014-06-18 05:13:55 +00:00
Bugs
----
2014-06-18 05:03:42 +00:00
- when investigating which build dependencies are unused, virtual packages are not taken into account
- maybe the fake equivs package can be built outside the schroot to avoid the additional dependencies for installing equivs
- maybe equivs can be avoided altogether by finding a way to edit debian/control on the fly
2014-06-18 05:13:55 +00:00
License
-------
Consider everything in this repository in the public domain. It is a gross hack
and I do not care what you do with it.