Hi, if this tool works like it supposed, it will be very handy. But the current ebuild/buildsystem suffers from disrespecting CC and failing with forced as-needed, isn't strict multilib capable and byte-compilation of python modules. Please find attached a hacky patch.
thanks justin On 9/4/11 9:13 AM, Александр Берсенев wrote: > Hi! > > I am Alexander Bersenev, I was participating in GSoC this year. > I want to present you the tool I've developed during this program. I > hope that you'll find it useful. > > The purpose of my project is to help ebuild developers to compose > accurate dependency list for a package. > The tool has many features in order to do it, most of them listed on > the documentation site: http://soc.dev.gentoo.org/~bay/autodep/ > > The killer-feature is an emulating the file system without > non-dependency packages installed. I call it dependency checking or > strict emerging. If program builds successfully in this environment > then check is passed. If no - check is failed and user likely will be > having a bad experience while trying to build this package if he > hasn't some packages installed. > > It works fine, I've reported a few dozens of bugs about missing > dependencies here: https://bugs.gentoo.org/show_bug.cgi?id=autodep. > > How to install and use it: > 1) add neurogeek overlay in your overlay list > 2) emerge autodep > 3) use autodep and emerge_strict commands. > > I want to tell you more about emerge_strict command. This is an emerge > command but with strict dependency checking. I've modified a portage > and add this feature into it. Actually, after "emerge autodep" you > will have two versions of portage: one is from your system(emerge) and > one is from modified portage(emerge_strict). > > !!!ATTENTION!!! > I modified a last available portage version from git. It is about > Portage 2.2.0_alpha50. The you running portage 2.1.x.x it > theoretically can be unsafe to use them both. I used it together for > about a month and not found any problems, but, anyway, be careful. > !!!ATTENTION!!! > > Here is an example of emerge_strict dev-libs/nss output: > https://381591.bugs.gentoo.org/attachment.cgi?id=285369 > > Missing dependency is founded here: > sdb.c:58:21: fatal error: sqlite3.h: No such file or directory > compilation terminated. > .... > > [NOT IN DEPS] dev-db/sqlite-3.7.7.1 : [u'compile'] > /usr/include/sqlite3.h blocked > .... > > I've set up a tinderbox to catch missing dependencies. And it works > right now. Also, I recently installed desktop gentoo linux on my new > notebook using only emerge_strict. It is also works. > > Although GSoC is over, I want to support this tool in further. I will > be appreciate for any feedback. > > Best, > > Alexander Bersenev >
diff --git a/app-portage/autodep/autodep-0.1.ebuild b/app-portage/autodep/autodep-0.1.ebuild index 62b4290..e4f494b 100644 --- a/app-portage/autodep/autodep-0.1.ebuild +++ b/app-portage/autodep/autodep-0.1.ebuild @@ -7,7 +7,7 @@ EAPI=3 PYTHON_DEPEND="2:2.6" RESTRICT_PYTHON_ABIS='2.4 2.5 3.*' -inherit python +inherit autotools eutils flag-o-matic multilib python DESCRIPTION="Auto dependency analyser for Gentoo" HOMEPAGE="http://soc.dev.gentoo.org/~bay/autodep/" @@ -18,15 +18,31 @@ SLOT="0" KEYWORDS="~x86 ~amd64" IUSE="" -DEPEND="sys-fs/fuse +RDEPEND=" + app-portage/portage-utils + sys-fs/fuse" +DEPEND="${RDEPEND} dev-util/pkgconfig" -RDEPEND="sys-fs/fuse - app-portage/portage-utils" -src_compile() { - emake || die +pkg_setup() { + python_set_active_version 2 +} + +src_prepare() { + epatch "${FILESDIR}"/${P}-build.patch + sed "s:usr/lib:/usr/$(get_libdir):g" -i Makefile || die + tc-export CC + export raw_LDFLAGS="$(raw-ldflags)" } src_install() { emake DESTDIR="${D}" install || die } + +pkg_postinst() { + python_mod_optimize /usr/$(get_libdir)/portage_with_autodep +} + +pkg_postrm() { + python_mod_cleanup /usr/$(get_libdir)/portage_with_autodep +} diff --git a/app-portage/autodep/files/autodep-0.1-build.patch b/app-portage/autodep/files/autodep-0.1-build.patch new file mode 100644 index 0000000..e49bd54 --- /dev/null +++ b/app-portage/autodep/files/autodep-0.1-build.patch @@ -0,0 +1,26 @@ + Makefile | 8 ++++---- + 1 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 01c92f1..1a26d16 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,14 +1,14 @@ + all: hookfs file_hook.so + + hookfs: src/hook_fusefs/hookfs.c +- $(CC) -std=c99 -Wall `pkg-config fuse --cflags --libs` -lulockmgr \ +- $(CFLAGS) $(LDFLAGS) src/hook_fusefs/hookfs.c -o hookfs ++ $(CC) -std=c99 -Wall $(CFLAGS) $(LDFLAGS) \ ++ src/hook_fusefs/hookfs.c -o hookfs `pkg-config fuse --cflags --libs` -lulockmgr + + file_hook.so: file_hook.o +- ld -shared -o file_hook.so -ldl -lc file_hook.o ++ ld $(raw_LDFLAGS) -shared -o file_hook.so file_hook.o -ldl -lc + + file_hook.o: src/hook_lib/file_hook.c +- cc -Wall -fPIC -o file_hook.o -c src/hook_lib/file_hook.c ++ $(CC) -Wall -fPIC -o file_hook.o -c src/hook_lib/file_hook.c + + install: + mkdir -p "${DESTDIR}/usr/lib/"
signature.asc
Description: OpenPGP digital signature