--- gnuift-0.1.14.orig/debian/dirs +++ gnuift-0.1.14/debian/dirs @@ -0,0 +1,2 @@ +usr/bin +usr/sbin --- gnuift-0.1.14.orig/debian/docs +++ gnuift-0.1.14/debian/docs @@ -0,0 +1,4 @@ +build-tree/gift-*/NEWS +build-tree/gift-*/README +build-tree/gift-*/THANKS +build-tree/gift-*/AUTHORS --- gnuift-0.1.14.orig/debian/control +++ gnuift-0.1.14/debian/control @@ -0,0 +1,201 @@ +Source: gnuift +Section: graphics +Priority: optional +Maintainer: Robert Jordens +Build-Depends: cdbs, dh-buildinfo, debhelper (>> 4.0.0), docbook-to-man, autoconf (>= 2.52), automake1.7 | automake, pkg-config, libtool, m4, flex, libexpat1-dev, libmysql++-dev, libmagick9-dev | libmagick-dev, perl, libperl-dev, libtext-iconv-perl, libxml-handler-trees-perl, libxml-sax-expat-perl, libxml-sax-perl, libxml-libxml-perl, libxml-parser-perl, libhtml-parser-perl, libxml-writer-perl, libparse-yapp-perl, libxml-xql-perl, libxml-dom-perl, libwww-perl +Build-Depends-Indep: doxygen, tetex-extra, linuxdoc-tools, linuxdoc-tools-info, linuxdoc-tools-latex, linuxdoc-tools-text, ldp-docbook-dsssl +Standards-Version: 3.6.1 + +Package: gnuift +Architecture: any +Depends: ${shlibs:Depends}, gnuift-perl (= ${Source-Version}) +Suggests: gnuift-doc, kmrml +Description: GNU Image Finding Tool - index and search images by content + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need to + annotate all images before querying the collection. + . + The GIFT comes with a tool which lets you index whole directory trees + containing images in one go. You then can use the GIFT server and its + client, to browse your own image collections. + . + The GIFT is an open framework. The developers explicitly have taken + into account the possibility of adding new ways of querying to the + framework. The communication protocol for client-server communication, + MRML, is XML based and fully documented (http://www.mrml.net). This + aims at promoting code reuse among researchers and application + developers. + . + The current version of the GIFT can be seen in action at + http://viper.unige.ch/demo/ + . + The GIFT (ex Viper) is the result of a research effort at the Vision + Group at the CUI (computer science center) of the University of Geneva + (see http://vision.unige.ch/). This cutting-edge research has been the + subject of several publications and conference talks. Details can be + found at http://viper.unige.ch/. + . + To avoid a name clash with the "gift" package (a fasttrack filesharing + client), these packages have been named "gnuift" (also to stress that + gnuift is a GNU project). + +Package: gnuift-doc +Architecture: all +Description: Documentation for gnuift + This package includes gift-guide, configuring-and-hacking-the-gift and + the doxygen reference tree. The application is contained in the gnuift + package. + . + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need to + annotate all images before querying the collection. + . + The GIFT comes with a tool which lets you index whole directory trees + containing images in one go. You then can use the GIFT server and its + client, to browse your own image collections. + . + The GIFT is an open framework. The developers explicitly have taken + into account the possibility of adding new ways of querying to the + framework. The communication protocol for client-server communication, + MRML, is XML based and fully documented (http://www.mrml.net). This + aims at promoting code reuse among researchers and application + developers. + . + To avoid a name clash with the "gift" package (a fasttrack filesharing + client), these packages have been named "gnuift" (also to stress that + gnuift is a GNU project). + +Package: libgnuift0c2a +Replaces: libgnuift0, libgnuift0c2 +Conflicts: libgnuift0, libgnuift0c2 +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Suggests: libgnuift0-dev (= ${Source-Version}), gnuift, gnuift-doc +Description: GNU Image Finding Tool - libraries + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need + to annotate all images before querying the collection. + . + The GIFT is an open framework. The communication protocol for + client-server communication, MRML, is XML based and fully documented + (http://www.mrml.net). + . + To avoid a name clash with the "gift" package (a fasttrack filesharing + client), these packages have been named "gnuift" (also to stress that + gnuift is a GNU project). + . + More information can be found at http://www.gnu.org/software/gift/. + +Package: libgnuift0-dev +Architecture: any +Provides: libgnuift-dev +Conflicts: libgnuift-dev +Section: libdevel +Depends: libgnuift0c2a (= ${Source-Version}), libexpat1-dev, libmagick6-dev | libmagick5-dev | libmagick-dev +Description: libgnuift development files + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need + to annotate all images before querying the collection. + . + The GIFT is an open framework. The communication protocol for + client-server communication, MRML, is XML based and fully documented + (http://www.mrml.net). + . + To avoid a name clash with the "gift" package (a fasttrack filesharing + client), these packages have been named "gnuift" (also to stress that + gnuift is a GNU project). + . + More information can be found at http://www.gnu.org/software/gift/. + +Package: libmrml1c2a +Replaces: libmrml1, libmrml1c2 +Conflicts: libmrml1, libmrml1c2 +Architecture: any +Section: libs +Depends: ${shlibs:Depends} +Suggests: gnuift, libmrml1-dev (= ${Source-Version}) +Description: Multimedia Retrieval Markup Language + MRML's aims are to unify access to multimedia retrieval and management + software component in order to extend their capabilities. The success + of such a context has already been demonstrated via the development of + the GNU Image Finding Tool (GIFT). + . + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need + to annotate all images before querying the collection. + . + The GIFT is an open framework. The communication protocol for + client-server communication, MRML, is XML based and fully documented. + . + More information can be found at http://www.mrml.net/ and + http://www.gnu.org/software/gift/. + +Package: libmrml1-dev +Architecture: any +Provides: libmrml-dev +Conflicts: libmrml-dev +Depends: ${shlibs:Depends}, libmrml1c2a (= ${Source-Version}), libexpat1-dev +Section: libdevel +Description: libmrml development files + MRML's aims are to unify access to multimedia retrieval and management + software component in order to extend their capabilities. The success + of such a context has already been demonstrated via the development of + the GNU Image Finding Tool (GIFT). + . + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need + to annotate all images before querying the collection. + . + The GIFT is an open framework. The communication protocol for + client-server communication, MRML, is XML based and fully documented. + . + For more information about the Multimedia Retrieval Markup Language + have look at http://www.mrml.net/. + +Package: gnuift-perl +Architecture: all +Depends: gnuift (= ${Source-Version}), ${perl:Depends}, imagemagick, libtext-iconv-perl, libxml-handler-trees-perl, libxml-sax-expat-perl, libxml-sax-perl, libxml-libxml-perl, libxml-parser-perl, libhtml-parser-perl, libxml-writer-perl, libparse-yapp-perl, libxml-xql-perl, libxml-dom-perl, libwww-perl +Description: GNU Image Finding Tool - perl modules + Architecture independent perl modules of gnuift. The application is + contained in the gnuift package. + . + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need to + annotate all images before querying the collection. + . + The GIFT comes with a tool which lets you index whole directory trees + containing images in one go. You then can use the GIFT server and its + client, to browse your own image collections. + . + The GIFT is an open framework. The developers explicitly have taken + into account the possibility of adding new ways of querying to the + framework. The communication protocol for client-server communication, + MRML, is XML based and fully documented (http://www.mrml.net). This + aims at promoting code reuse among researchers and application + developers. + . + To avoid a name clash with the "gift" package (a fasttrack filesharing + client), these packages have been named "gnuift" (also to stress that + gnuift is a GNU project). --- gnuift-0.1.14.orig/debian/libgnuift0c2a.install +++ gnuift-0.1.14/debian/libgnuift0c2a.install @@ -0,0 +1,2 @@ +debian/tmp/usr/lib/libGIFT*.so.* + --- gnuift-0.1.14.orig/debian/libmrml1c2a.install +++ gnuift-0.1.14/debian/libmrml1c2a.install @@ -0,0 +1,2 @@ +debian/tmp/usr/lib/libMRML*.so.* +debian/tmp/usr/share/* usr/share/libmrml1 --- gnuift-0.1.14.orig/debian/rules +++ gnuift-0.1.14/debian/rules @@ -0,0 +1,78 @@ +#!/usr/bin/make -f +# rules +# +# Robert Jordens +# +# This software may be used and distributed according to the terms +# of the GNU General Public License, incorporated herein by reference. +# +# $Id: rules 158 2003-09-15 14:53:01Z rj $ +# + + +include /usr/share/cdbs/1/class/makefile.mk +DEB_UPSTREAM_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-[^-]*$$//') +DEB_UPSTREAM_TARBALL_VERSION := $(shell echo $(DEB_UPSTREAM_VERSION) | sed 's/\+[^+]*$$//') +DEB_TAR_SRCDIR := gift-$(DEB_UPSTREAM_TARBALL_VERSION) +include /usr/share/cdbs/1/rules/tarball.mk +include /usr/share/cdbs/1/rules/simple-patchsys.mk +include /usr/share/cdbs/1/class/autotools.mk +include /usr/share/cdbs/1/rules/debhelper.mk + +ifneq (,$(findstring parallel,$(DEB_BUILD_OPTIONS))) + PARALLEL_JOBS := $(shell echo $(DEB_BUILD_OPTIONS) | \ + sed -e 's/.*parallel=\([0-9]\+\).*/\1/') + ifeq ($(DEB_BUILD_OPTIONS),$(PARALLEL_JOBS)) + PARALLEL_JOBS := $(shell if [ -f /proc/cpuinfo ]; \ + then echo `cat /proc/cpuinfo | grep 'processor' | wc -l`; \ + else echo 1; fi) + endif + NJOBS := -j$(PARALLEL_JOBS) +endif +DEB_MAKE_ENVVARS := MAKEFLAGS=$(NJOBS) LIBRARY_PATH=$(CURDIR)/debian/tmp/usr/lib + +DEB_CONFIGURE_EXTRA_FLAGS := --enable-shared=yes --enable-static=yes \ + --enable-set-web-publishing-directory=/var/www/gnuift \ + --enable-set-web-publishing-location=http://localhost/gnuift \ + --enable-bayesian --enable-multi-threading + +DEB_DH_MAKESHLIBS_ARGS := -V +DEB_SHLIBDEPS_INCLUDE := debian/libgnuift0c2a/usr/lib debian/libmrml1c2a/usr/lib +DEB_PERL_INCLUDE := debian/gnuift/usr/bin debian/gnuift-perl/usr/share/perl5/GIFT debian/gnuift-perl/usr/share/gnuift debian/gnuift/usr/share/gnuift + +DEB_INSTALL_DOCS_ALL := $(shell cat debian/docs) +DEB_INSTALL_CHANGELOGS_ALL := $(DEB_BUILDDIR)/ChangeLog + +post-patches:: debian/stamp-autotools-maintregen-arch +debian/stamp-autotools-maintregen-arch: + cd $(DEB_BUILDDIR); sh ./bootstrap-cvs.sh ; \ + cp /usr/bin/libtool $(DEB_BUILDDIR); libtoolize --force --copy + touch debian/stamp-autotools-maintregen-arch + +build/gnuift:: + docbook-to-man debian/gnuift.sgml > debian/gnuift.1 + +# after the directories are created but before dh_compress is run. +common-binary-post-install-arch:: + dh_buildinfo + +.PHONY: update-create-orig-tarball +update-create-orig-tarball: + mkdir -p tmp-orig-tree/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig + cp *.tar.* tmp-orig-tree/$(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig + tar -C tmp-orig-tree -czvf \ + ../$(DEB_SOURCE_PACKAGE)_$(DEB_UPSTREAM_VERSION).orig.tar.gz \ + $(DEB_SOURCE_PACKAGE)-$(DEB_UPSTREAM_VERSION).orig + +.PHONY: update-clean +update-clean: + rm -rf tmp-orig-tree + +clean:: update-clean + +clean:: + -rm -f Doc/*.txt Doc/*.tex GIFTServer/gift-mrml-messages/*.mrml \ + dtd/mrml-parsing-log debian/gnuift.1 + -rm -rf Doc/autoDoc + -rm -f debian/stamp-autotools-maintregen-arch + --- gnuift-0.1.14.orig/debian/libgnuift0-dev.install +++ gnuift-0.1.14/debian/libgnuift0-dev.install @@ -0,0 +1,4 @@ +debian/tmp/usr/lib/libGIFT*.a +debian/tmp/usr/lib/libGIFT*.la +debian/tmp/usr/lib/libGIFT*.so +debian/tmp/usr/include/libGIFT* --- gnuift-0.1.14.orig/debian/gnuift-perl.links +++ gnuift-0.1.14/debian/gnuift-perl.links @@ -0,0 +1,10 @@ +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-add-collection.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-diagnose-print-all-ADI.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-dtd-to-keywords.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-dtd-to-tex.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-mrml-client.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-old-to-new-url2fts.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-perl-example-server.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-remove-collection.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-start.pl.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-url-to-fts.pl.1.gz --- gnuift-0.1.14.orig/debian/watch +++ gnuift-0.1.14/debian/watch @@ -0,0 +1,2 @@ +version=2 +ftp://ftp.gnu.org/gnu/gift/gift-(.*)\.tar\.gz debian --- gnuift-0.1.14.orig/debian/changelog +++ gnuift-0.1.14/debian/changelog @@ -0,0 +1,181 @@ +gnuift (0.1.14-6.1) unstable; urgency=low + + * Non-maintainer upload. + * Renamed for C++ allocator change (Closes: #339177). + + -- Luk Claes Wed, 28 Dec 2005 23:14:45 +0100 + +gnuift (0.1.14-6) unstable; urgency=low + + * debian/control: libmysql++-dev as Build-Depends; closes: Bug#272004 + (FTBFS: Unsatisfiable build-dependency on libsqlplus-dev) + + -- Robert Jordens Thu, 20 Oct 2005 14:25:14 +0200 + +gnuift (0.1.14-5) unstable; urgency=high + + * debian/control: Build-Depends: libmagick9-dev | + libmagick-dev to do the imagemagick transition; closes: Bug#332450 + (FTBFS: libmagick transition) + * also rebuilding to fix mis-build on m68k; closes: Bug#330640 (gnuift needs + to be rebuilt on m68k for C++ transition) + * urgency high because both block a transition + + -- Robert Jordens Fri, 7 Oct 2005 12:10:36 +0200 + +gnuift (0.1.14-4) unstable; urgency=medium + + * debian/control: conflict with libmrml_1_; + closes: Bug#325284 (libmrml1c2: overlapping files with libmrml1) + * urgency medium because this is RC + + -- Robert Jordens Fri, 9 Sep 2005 21:33:36 +0200 + +gnuift (0.1.14-3) unstable; urgency=medium + + * debian/{control,rules,libmrml1c2.install,libgnuift0c2.install}: CXX + transition; rename libgnuift0 to libgnuift0c2 and libmrml1 to libmrml1c2 + * urgency medium because this is RC + + -- Robert Jordens Tue, 9 Aug 2005 11:56:22 +0200 + +gnuift (0.1.14-2) unstable; urgency=medium + + * fix missing header includes leading to pointer truncation on 64 bit + archs. Patch from David Mosberger ; thanks + closes: Bug#308582 + + -- Robert Jordens Wed, 11 May 2005 20:52:02 +0200 + +gnuift (0.1.14-1) unstable; urgency=low + + * new upstream release + * 06_gcc-3.4.diff: applied upstream; 06_gcc-4.0.diff: fixed + * libmrml0 -> libmrml1, SONAME change. + + -- Robert Jordens Sat, 7 May 2005 15:00:35 +0200 + +gnuift (0.1.13-2) unstable; urgency=low + + * debian/patches/06_gcc-3.4.diff: gcc-3.4 fixes from Andreas Jochens + : closes: Bug#266259 + * debian/patches/07_gcc_4.0.diff: gcc-4.0 and amd64 fixes from Andreas + Jochens closes: Bug#286878 + + -- Robert Jordens Mon, 3 Jan 2005 20:19:01 +0100 + +gnuift (0.1.13-1) unstable; urgency=high + + * urgency-high upload because the version in testing does not work at all + * debian/patches/07_fixup-for-g++-3.4.diff: added; + closes: Bug#258761: gnuift: FTBFS with gcc-3.4 + * debian/watch: updated to version=2 + * new upstream release + + gift has been producing wrong indexing data; all wrong indexed data has + to be reindexed or fixed with a script that will be sent to + ; + closes: Bug#216398 + + debian/patches/06_look-for-so-0.diff, + debian/patches/05_fixup-hardcoded-dirs-makefiles.diff, + debian/patches/05_fixup-hardcoded-dirs-sources.diff, + debian/patches/05_fixup-sgml-docs.diff, + debian/patches/07_fixup-for-g++-3.4.diff deleted: incorporated + upstream + + -- Robert Jordens Mon, 16 Aug 2004 18:11:37 +0200 + +gnuift (0.1.9+3epsilon+cvs030915-4) unstable; urgency=low + + * debian/patches/06_look-for-so-0.diff: added, closes: Bug#216398 + + -- Robert Jordens Fri, 11 Jun 2004 17:30:28 +0200 + +gnuift (0.1.9+3epsilon+cvs030915-3) unstable; urgency=low + + * debian/control: (Build-)Depend on libmagick6-dev; closes: Bug#248222 + + -- Robert Jordens Mon, 10 May 2004 01:40:37 +0200 + +gnuift (0.1.9+3epsilon+cvs030915-2) unstable; urgency=low + + * debian/control: made all descriptions more descriptive; closes: Bug#213404 + + -- Robert Jordens Tue, 30 Sep 2003 10:31:50 +0200 + +gnuift (0.1.9+3epsilon+cvs030915-1) unstable; urgency=low + + * Built a new upstream tarball from CVS with the note about military use + removed; closes: Bug#210868 + * debian/rules: uses tarball and simple-patchsys now + + -- Robert Jordens Mon, 15 Sep 2003 14:15:42 +0200 + +gnuift (0.1.9+3epsilon-3) unstable; urgency=low + + * Doc/gift-guide.sgml: licensing problem resolved with Wolfgang Mueller + ; see the bug for details; + closes: Bug#210868 + * changed Wolfgangs e-mail address accordingly. + * debian/gnuift.sgml is now GPL + + -- Robert Jordens Sun, 14 Sep 2003 19:03:11 +0200 + +gnuift (0.1.9+3epsilon-2) unstable; urgency=low + + * debian/rules + + don't let binary/gnuift depend on binary/gnuift-perl; breaks + autobuilding. + + new format for parallel building via DEB_BUILD_OPTIONS + + -- Robert Jordens Thu, 11 Sep 2003 09:18:38 +0200 + +gnuift (0.1.9+3epsilon-1) unstable; urgency=low + + * New upstream release. + * debian/rules: + + switched to cdbs + + use dh_buildinfo + + enabled parallel building if USE_NJOBS set in the + environment + * debian/control + + changed rjo@gmx.de to jordens@debian.org + + Build-Depends: libmysqlclient-dev, emacsen + + updated descriptions + + fixed lib*-dev Conflicts and Depends + + added Build-Depends-Indep to Build-Depends + + gnuift-perl contains all perl modules + + suggest kmrml + * libtoolized anew + * g++/gcc 3.3: + + a few header files: #include + + line-join multiline mysql-statements + * fixed web pubblishing locations + * doxygen headers added from CVS + * fixed DESTDIR in libMRML/include/Makefile.am + * debian/gnuift.sgml: written manpage + + -- Robert Jordens Thu, 4 Sep 2003 12:42:29 +0200 + +gnuift (0.1.9-2) unstable; urgency=low + + * notes from Bart Schuller : + * fill libgnuift0 + * don't run doxygen twice + * moved the definitions of the hardcoded paths to configure.in + * export LIBRARY_PATH=`pwd`/debian/tmp/usr/lib; befor install + + -- Robert Jordens Tue, 2 Sep 2003 22:18:01 +0200 + +gnuift (0.1.9-1) unstable; urgency=low + + * Initial Release. + * renamed to gnuift to evade clash with a FastTrack client named "gift" + * work on ACX_PTHREAD + * killed rpath in libtool + * fhs compliance (perl modules, libraries, executables, dtds) + * split off the libraries + * made the documentation work + * upload to Debian, which closes: Bug#137472 + + -- Robert Jordens Sat, 16 Nov 2002 12:24:52 +0100 + --- gnuift-0.1.14.orig/debian/gnuift.examples +++ gnuift-0.1.14/debian/gnuift.examples @@ -0,0 +1 @@ +debian/Client.php --- gnuift-0.1.14.orig/debian/libmrml1-dev.install +++ gnuift-0.1.14/debian/libmrml1-dev.install @@ -0,0 +1,6 @@ +debian/tmp/usr/lib/libMRML*.a +debian/tmp/usr/lib/libMRML*.la +debian/tmp/usr/lib/libMRML*.so +debian/tmp/usr/include/libMRML +debian/tmp/usr/bin/libMRML-config + --- gnuift-0.1.14.orig/debian/gnuift-doc.manpages +++ gnuift-0.1.14/debian/gnuift-doc.manpages @@ -0,0 +1 @@ +Doc/autoDoc/man/man3/* --- gnuift-0.1.14.orig/debian/gnuift-perl.install +++ gnuift-0.1.14/debian/gnuift-perl.install @@ -0,0 +1,4 @@ +debian/tmp/usr/bin/C*.pm usr/share/perl5/GIFT +debian/tmp/usr/bin/C*.pl usr/share/gnuift +debian/tmp/usr/bin/gift*.pl +debian/tmp/usr/share/libmrml1/gift*.mrml --- gnuift-0.1.14.orig/debian/compat +++ gnuift-0.1.14/debian/compat @@ -0,0 +1 @@ +4 --- gnuift-0.1.14.orig/debian/gnuift-doc.doc-base.doxygen +++ gnuift-0.1.14/debian/gnuift-doc.doc-base.doxygen @@ -0,0 +1,14 @@ +Document: gnuift-doxygen +Title: Gnu Image Finding Tool - Doxygen source documentation +Author: Wolfgang Mueller +Section: Apps/Graphics +Abstract: Doxygen source documentation for the GIFT + GIFT is a content based image retrieval system (CBIRS). It gives the + user the possibility to index and search images without having to + annotate them first. Indexing is done using image properties such as + color and texture. + +Format: HTML +Index: /usr/share/doc/gnuift-doc/html/index.html +Files: /usr/share/doc/gnuift-doc/html/* + --- gnuift-0.1.14.orig/debian/Client.php +++ gnuift-0.1.14/debian/Client.php @@ -0,0 +1,939 @@ + +'; +//mrml dtd path +$mrmldtd=''; +//path for image upload: +$ImagePath="image/"; +//images extension: +$ImagesExtension="gif,jpeg,jpg,tiff,tif,png,pict,pcx,bmp,pgm,ppm"; +//***************VARIABLES**************** +//global variable +$Depth=0; +$Collection=array(); +$NbCollection=-1; +$Algorithm=array(); +$NbAlgorithm=-1; +$Property=array(); +$NbProperty=-1; +$NbPropertyAlgo=array(); +$Parent=array(); + + +//Javascript functions +//to submit the form in case of algorithm change + + echo " + + "; + + + +//***********SOCKET FUNCTIONS************ +//Open a socket +function connection($server,$port) { + $socket = fsockopen ($server,$port, &$errno, &$errstr, 30); + if (!$socket) {die("$errstr ($errno)
\n");} + return $socket; +} + +//Make a request to the server and return the answer +function request($socket,$request) { + fputs ($socket, $request); + $answer=""; + while (!feof($socket)) { + $buf = fgets($socket,1); + $answer .=$buf; + } + return $answer; +} + +//***********REQUEST FUNCTIONS************ +function MakeRandom() { + //global variables + global $xml,$mrmldtd; + global $Algorithm,$NbAlgorithm; + global $AlgorithmId,$CollectionId,$SessionId; + global $server,$port,$Return; + + //find the Algorithm Type + for ($i=0;$i<=$NbAlgorithm;$i++){ + if ($Algorithm[$i]["ALGORITHM-ID"]==$AlgorithmId) {$AlgorithmType=$Algorithm[$i]["ALGORITHM-TYPE"];} + } + + //The MRML request to fetch a random set of images + $RandomRequest= $xml . $mrmldtd . + " + + + + + + "; + + + //Make the request + $socket=connection($server,$port); + $answer=request($socket,$RandomRequest); + fclose($socket); + + //Create a xml parser, Parse the answer and free the parser + $MRML_parser = xml_parser_create(); + xml_set_element_handler($MRML_parser, "MRMLstart", "MRMLend"); + xml_parse($MRML_parser, $answer); + xml_parser_free($MRML_parser); +} + +//make a query +function MakeQuery() { + //global variables + global $HTTP_POST_VARS,$HTTP_POST_FILES; + global $xml,$mrmldtd,$ImagePath,$phppath; + global $Algorithm,$NbAlgorithm,$ImgHeight,$ImgWidth; + global $AlgorithmId,$CollectionId,$SessionId,$OldCollectionId; + global $server,$port,$Return,$url,$SERVER_NAME,$DOCUMENT_ROOT; + global $Property,$NbProperty,$NbPropertyAlgo,$OldAlgorithm; + global $imageloc,$imagerel,$nbimage,$QueryImgNb,$QueryImgRelLoc; + + //get the upload file name + $NameImgUpload=$HTTP_POST_FILES['UserImage']['name']; + + //if there is a upload file... + if ($NameImgUpload!="") { + //check if file exist + if ($HTTP_POST_FILES['UserImage']['tmp_name']=="none") { + die("

file upload error: $NameImgUpload


"); + } + + //check file extension + CheckExtension($NameImgUpload); + + //move the file to $ImagePath directory + $temp=explode(".",$NameImgUpload); + $desti1=$ImagePath.$NameImgUpload; + $desti2 = $ImagePath . $temp[0] . ".jpg"; + if ($desti1==$desti2) {$desti2=$ImagePath . "Thumb_".$temp[0] . ".jpg";} + + if (!move_uploaded_file($HTTP_POST_FILES['UserImage']['tmp_name'],$desti1)) {die ("error in transfert");} + + //convert image to jpg with "convert" + $command=escapeShellCmd("./convert -geometry $ImgWidthx$ImgHeight $desti1 $desti2"); + system($command); + } + + + + //check if the url and his extension is valid. + if ($url!="") { + if (!@fopen($url,"rb")){ + die("

Bad url: $url


"); + } + + //check file extension + CheckExtension($url); + + //copy image from url + $urltmp=explode('/',$url); + $urltmp2=explode('.',$urltmp[count($urltmp)-1]); + $dest1=$ImagePath."tmp.".$urltmp2[1]; + $dest2 = $ImagePath . $urltmp2[0] . ".jpg"; + if (!($fp = fopen($url,"r"))) die("Could not open src"); + if (!($fp2 = fopen($dest1,"w"))) die("Could not open dest"); + while ($contents = fread( $fp,4096)) { + fwrite( $fp2, $contents); + } + fclose($fp); + fclose($fp2); + + //convert image to jpg + $command=escapeShellCmd("./convert -geometry $ImgWidthx$ImgHeight $dest1 $dest2"); + system($command); + } + + //find the right algorithm + for ($i=0;$i<=$NbAlgorithm;$i++){ + if ($Algorithm[$i]["ALGORITHM-ID"]==$AlgorithmId) { + $AlgorithmType=$Algorithm[$i]["ALGORITHM-TYPE"]; + $algonum=$i; + } + } + + $nbimage=0; + $nbrel=0; + $nbthumb=0; + //find image location,relevance and thumbnail location + while (list ($key, $val) = each ($HTTP_POST_VARS)) { + if (is_int(strpos($key,"image_"))){ + $imageloc[$nbimage]=$val; + $nbimage++; + } + if (is_int(strpos($key,"rel_img_"))){ + $imagerel[$nbrel]=$val; + $nbrel++; + } + if (is_int(strpos($key,"thumb_img_"))){ + $imagethumb[$nbthumb]=$val; + $nbthumb++; + } + + } + + //find the query image + $QueryImgNb=0; + for ($i=0;$i<$nbimage;$i++){ + if ($imagerel[$i]==-1 || $imagerel[$i]==1) { + $QueryImg[$QueryImgNb]=$imageloc[$i]; + $QueryImgThumb[$QueryImgNb]=$imagethumb[$i]; + $QueryImgRel[$QueryImgNb]=$imagerel[$i]; + if ($imagerel[$i]==1) { + $QueryImgRelLoc[$QueryImg[$QueryImgNb]]=1; + } + $QueryImgNb++; + } + } + + //The MRML request + $QueryRequest= $xml . $mrmldtd . + " + + + + "; + //add the image location to the request + for ($i=0;$i<$nbimage;$i++){ + $QueryRequest .= "\n"; + } + //ad the image passed by url + if ($url!="") { + $QueryRequest .= "\n"; + $QueryImg[$QueryImgNb]=$url; + $QueryImgThumb[$QueryImgNb]=$phppath.$dest2; + $QueryImgRel[$QueryImgNb]=1; + $QueryImgNb++; + } + //ad the image passed by file upload + if ($NameImgUpload!="") { + $NameImgUploadLoc= $phppath.$desti1; + $QueryRequest .= "\n"; + $QueryImg[$QueryImgNb]=$NameImgUploadLoc; + $QueryImgThumb[$QueryImgNb]=$phppath.$desti2; + $QueryImgRel[$QueryImgNb]=1; + $QueryImgNb++; + } + + $QueryRequest .= " + "; + + //Display QueryImg + ShowQueryImg($QueryImgNb,$QueryImg,$QueryImgThumb,$QueryImgRel); + + echo "

QueryRequest: $QueryRequest


"; + + echo "

Result:

"; + + + //Make the request + $socket=connection($server,$port); + $answer=request($socket,$QueryRequest); + fclose($socket); + + //Create a xml parser, Parse the answer and free the parser + $MRML_parser = xml_parser_create(); + xml_set_element_handler($MRML_parser, "MRMLstart", "MRMLend"); + xml_parse($MRML_parser, $answer); + xml_parser_free($MRML_parser); + +} + +//get info form server +function GetInfo() { + global $xml,$mrmldtd,$allowUpload; + global $server,$port,$name; + + //simple mrml request + $GetInfo= $xml . $mrmldtd . + " + + + "; + + //Make the first request + $socket=connection($server,$port); + $answer=request($socket,$GetInfo); + fclose($socket); + + //Create a xml parser, Parse the answer and free the parser + $MRML_parser = xml_parser_create(); + xml_set_element_handler($MRML_parser, "MRMLstart", "MRMLend"); + xml_parse($MRML_parser, $answer); + xml_parser_free($MRML_parser); + + //show collections, algorithms and ... + echo "
Do not save this page (see why)


"; + ShowCollection(); + ShowAlgorithm(); + ShowNumberReturn(); + echo "Algorithm options:
"; + ShowOptionAlgorithm(); + if ($allowUpload == "yes") + ShowAddImage(); + else + echo "

Image uploading feature disabled"; + ShowButtons(); +} + +//***********PARSING FUNCTIONS************ +function MRMLstart($parser, $name, $attrs) { + global $Collection,$NbCollection; + global $Algorithm,$NbAlgorithm; + global $Property,$NbProperty,$NbPropertyAlgo; + global $SessionId,$Submit,$Depth,$Parent; + + //parse MRML tag + switch ($name) { + case "ACKNOWLEDGE-SESSION-OP": + //Get session id + if ($SessionId=="") { + $SessionId=$attrs["SESSION-ID"]; + } + + echo ""; + break; + + case "COLLECTION": + //Get Collection + $NbCollection++; + while (list ($key, $val) = each ($attrs)) { + $Collection[$NbCollection][$key]=$val; + } + break; + + case "ALGORITHM": + //Get alorithm + if ($attrs["ALGORITHM-TYPE"]!="") { + $NbProperty=-1; + $Depth=0; + $NbAlgorithm++; + while (list ($key, $val) = each ($attrs)) { + $Algorithm[$NbAlgorithm][$key]=$val; + } + } + break; + + case "PROPERTY-SHEET": + //Get alorithm property + if ($NbAlgorithm==-1) {$NbAlgorithm=0;} + $NbProperty++; + $NbPropertyAlgo[$NbAlgorithm]=$NbProperty; + while (list ($key, $val) = each ($attrs)) { + $Property[$NbAlgorithm][$NbProperty][$key]=$val; + } + + //save Depth and parent from the property + $Property[$NbAlgorithm][$NbProperty]["DEPTH"]=$Depth; + $Property[$NbAlgorithm][$NbProperty]["PARENT"]=$Parent[$Depth]; + + //increase Depth + $Depth++; + + $Parent[$Depth]=$NbProperty; + + break; + + case "QUERY-RESULT-ELEMENT": + //get image info + global $imageloc,$imagerel,$nbimage,$QueryImgRelLoc; + $ImgLoc=$attrs["IMAGE-LOCATION"]; + $ImageThumb=$attrs["THUMBNAIL-LOCATION"]; + $Similarity=$attrs["CALCULATED-SIMILARITY"]; + //echo "ImgLoc: -$ImgLoc- , ImageThumb: -$ImageThumb-
"; + if ($Submit=="Random") {ShowImage($ImgLoc,$ImageThumb,$Similarity,0);} + if ($Submit=="Query" && $QueryImgRelLoc[$ImgLoc]=="") {ShowImage($ImgLoc,$ImageThumb,$Similarity,0);} + if ($Submit=="Query" && $QueryImgRelLoc[$ImgLoc]!="") {ShowImage($ImgLoc,$ImageThumb,$Similarity,1);} + + break; + } +} + +function MRMLend($parser, $name) { + global $Depth; + switch ($name) { + case "PROPERTY-SHEET": + //decrease depth + $Depth--; + break; + } +} + +//***********DISPLAY FUNCTIONS************ + + +//show the query images +function ShowQueryImg($QueryImgNb,$QueryImg,$QueryImgThumb,$QueryImgRel) { + //global variable + global $SERVER_NAME,$DOCUMENT_ROOT,$ImgWidth,$ImgHeight; + + + $tr=0; + if ($QueryImgNb>0) { + echo "

Query:

"; + for ($i=0;$i<$QueryImgNb;$i++) { + + if ($tr%5==0) {echo "";} + + //get name of the image from his url + //and use it for the "alt" tag + $extmp=explode('/',$QueryImg[$i]); + $alt=$extmp[count($extmp)-1]; + + //get real path of the image location + $temp=substr($QueryImgThumb[$i], strlen($SERVER_NAME)+7, strlen($QueryImgThumb[$i])); + //get the size of this image + $size=@GetImageSize($DOCUMENT_ROOT . $temp); + + //calculate the right proportion for the reduce image heigh and image width + if ($size[0]!="") { + if ($size[0]>=$size[1]) { + $TmpHeight=@(($size[1]*$ImgWidth)/$size[0]); + $TmpWidth=$ImgWidth; + } + else { + $TmpWidth=@(($size[0]*$ImgHeight)/$size[1]); + $TmpHeight=$ImgHeight; + } + } + else { + $TmpHeight=$ImgHeight; + $TmpWidth=$ImgWidth; + } + + //display image and some info + echo ""; + + $tr++; + if ($i==$QueryImgNb-1) {$tr=5;} + if ($tr%5==0) {echo "";} + + } + echo "
\"$alt\""; + $name="image_".$i; + echo ""; + $name="thumb_img_".$i; + echo ""; + $name="rel_img_".$i; + echo "
"; + } +} + +//same function but for result iamge +function ShowImage($ImageLoc,$ImageThumb,$Similarity,$Rel) { + global $CollectionId,$QueryImgNb,$DOCUMENT_ROOT,$SERVER_NAME; + global $Return,$ImgWidth,$ImgHeight; + static $nbimage=0; + static $first=true; + static $tmp=0; + + //get name of the image form his url + //and use it for the "alt" tag + $extmp=explode('/',$ImageLoc); + $alt=$extmp[count($extmp)-1]; + + if ($first) {$tmp=$QueryImgNb;$first=false;} + if ($nbimage==0) {echo "";} + if ($nbimage%5==0) {echo "";} + + //get real path of the image location + $temp=substr($ImageThumb, strlen($SERVER_NAME)+7, strlen($ImageThumb)); + //get the size of this image + $size=@GetImageSize($DOCUMENT_ROOT . $temp); + if ($size[0]>=$size[1]) { + $TmpHeight=@(($size[1]*$ImgWidth)/$size[0]); + $TmpWidth=$ImgWidth; + } + else { + $TmpWidth=@(($size[0]*$ImgHeight)/$size[1]); + $TmpHeight=$ImgHeight; + } + + //display image and some info + echo ''; + $nbimage++; + if ($nbimage%5==0) {echo '';} + if ($nbimage==$Return) {echo "
'; + if ($Rel==1) { + + echo ""; + echo "
\"$alt\""; + echo "
Similarity: $Similarity
Query Image
"; + + } + else { + echo "
\"$alt\""; + echo "
Similarity: $Similarity"; + $name="image_".$tmp; + echo ""; + $name="thumb_img_".$tmp; + echo ""; + $name="rel_img_".$tmp; + echo "
"; + $tmp++; + } + echo '
top
";} +} + +//show collection +function ShowCollection(){ + global $Collection,$NbCollection,$CollectionId; + echo "Collection (details): "; + + //get collection name and collection ID + //and show all collections + if ($CollectionId!="") { + for ($i=0;$i<=$NbCollection;$i++){ + if ($Collection[$i]["COLLECTION-ID"]==$CollectionId) { + $CollectionName=$Collection[$i]["COLLECTION-NAME"]; + echo ""; + } + } + echo '';} + + for ($i=0;$i<=$NbCollection;$i++){ + $value=$Collection[$i]["COLLECTION-ID"]; + $name=$Collection[$i]["COLLECTION-NAME"]; + if ($CollectionId!=$value) {echo "";} + } + echo ' '; + +} + +//Display algorithm +function ShowAlgorithm(){ + global $Algorithm,$NbAlgorithm,$AlgorithmId; + echo "Algorithm: "; + + //get algorithm name and algorithm ID + //and show all algorithms + if ($AlgorithmId!="") { + for ($i=0;$i<=$NbAlgorithm;$i++){ + if ($Algorithm[$i]["ALGORITHM-ID"]==$AlgorithmId) { + $AlgorithmName=$Algorithm[$i]["ALGORITHM-NAME"]; + echo ""; + } + } + echo '';} + + for ($i=0;$i<=$NbAlgorithm;$i++){ + $value=$Algorithm[$i]["ALGORITHM-ID"]; + $name=$Algorithm[$i]["ALGORITHM-NAME"]; + if ($AlgorithmId!=$value) {echo "";} + } + echo ' '; +} + + +// show property of algorithm +function ShowOptionAlgorithm($Depth=0,$Parent="",$visibility="visible",$IdLayer=0){ + global $Algorithm,$NbAlgorithm,$AlgorithmId; + global $Property,$NbProperty,$NbPropertyAlgo,$OldAlgorithm; + static $Option=0; + + //get algorithmID + if ($AlgorithmId!="") { + for ($i=0;$i<=$NbAlgorithm;$i++){ + if ($Algorithm[$i]["ALGORITHM-ID"]==$AlgorithmId) {$algonum=$i;} + } + } + else {$algonum=0;} + + $j=0; + $InLayer=""; + //for each property of the algorithm + for ($i=0;$i<=$NbPropertyAlgo[$algonum];$i++){ + //if depth is the actual Depth and parent are the actual parent + //(mean that they are in the same "group") + if ($Property[$algonum][$i]["DEPTH"]==$Depth && $Property[$algonum][$i]["PARENT"]==$Parent) { + + //switch the different type of property + switch ($Property[$algonum][$i]["PROPERTY-SHEET-TYPE"]) { + + //in case of subset, go to the next depth + //and set the subset as parent + case "subset": + $tempDepth[$j]=$Depth+1; + $tempParent[$j]=$i; + $j++; + $visibility2=$visibility; + break; + + //in case of pannel, go to the next depth + //and set the pannel as parent + case "pannel": + $tempDepth[$j]=$Depth+1; + $tempParent[$j]=$i; + $j++; + $visibility2=$visibility; + break; + + //in case of set-element... + case "set-element": + $option="AlgoOption".$Option; + global $$option; + if ($OldAlgorithm!=$algonum) $$option=""; + + //get property's name + $name=$Property[$algonum][$i]["CAPTION"]; + $InLayer.="$name: "; + $sendname=$Property[$algonum][$i]["SEND-NAME"]; + $InLayer.= ""; + + + //if the property value is yes + if ($$option=="yes" || ($Property[$algonum][$i]["SEND-VALUE"]=="yes" && $$option=="") ) { + //save the next depth and set the set-element as parent + + $tempDepth[$j]=$Depth+1; + $tempParent[$j]=$i; + $j++; + + + $visibility2="visible"; + + //If the property have children + //add the option to show/hide children + if ($Property[$algonum][$i+1]["PARENT"]==$i) { + $InLayer.= ""; + } + $InLayer.= ""; + $InLayer.= ""; + $InLayer.=' '; + } + //if the property value is no + //make nearly the same as yes + else { + if ($$option=="" || $$option=="no" || ($Property[$algonum][$i]["SEND-VALUE"]=="no" && $$option=="")) { + $visibility2="visible"; + + //If the property have children + //add the option to show/hide children + if ($Property[$algonum][$i+1]["PARENT"]==$i) { + $visibility2="hidden"; + $InLayer.= ""; + } + $InLayer.=""; + $InLayer.= ""; + $InLayer.= ''; + } + } + + //go to the next property + $Option++; + break; + + //in case of numeric property + case "numeric": + + $option="AlgoOption".$Option; + global $$option; + + //get the value + $InLayer.= ""; + $sendname=$Property[$algonum][$i]["SEND-NAME"]; + $InLayer.= ""; + if ($$option=="" || $OldAlgorithm!=$algonum) {$value=$Property[$algonum][$i]["SEND-VALUE"];} + else { + $optionb="AlgoOptionb".$Option; + global $$optionb; + $value=$$optionb; + } + + //get name, from , to and step + $name=$Property[$algonum][$i]["CAPTION"]; + $InLayer.= "$name: "; + $from=$Property[$algonum][$i]["FROM"]; + $to=$Property[$algonum][$i]["TO"]; + $step=$Property[$algonum][$i]["STEP"]; + + //display property + $InLayer.= " "; + + $Option++; + break; + } + + } + } + + + + //Display property + if ($InLayer!="") { + echo $InLayer."
"; + $IdLayer++; + } + + //make recursion + for ($i=0;$i<$j;$i++) ShowOptionAlgorithm($tempDepth[$i],$tempParent[$i], $visibility2,$IdLayer); + +} + +//display the number of images the script must return +function ShowNumberReturn(){ + global $Return,$NbReturnImages; + echo "Return "; + echo " images

"; +} + +//diplay two text input for file upload and url image +function ShowAddImage() { + echo "
Url of a relevant image:"; + echo ""; + echo '
Other relevant image: '; +} + + +//show tree buttons: Random, Query and Clear +function ShowButtons() { +global $server,$port,$name; + echo '

+ + + + + +
+
+ +
+ (fetch a random set of images)
+
+
+ +
+ ( launch the query)
+
+
+ +
+ (Clear the query)
+
+
'; + echo ""; + echo ""; + echo ""; +} + + +//asking for server and port +function AskConnection () { + echo 'Connection with a GIFT server

'; + echo '(You may like to start with this tutorial)

'; + echo ' + + + + + + + + + + + +
+
Server Name:
+
+ +
+
Server Port:
+
+ +
+
User Name:
+
+ +
+
+By connecting to this service, you implicitly affirm that you have read and accepted our disclaimer +
+
+

'; +} + +//**********Other Function******************* +//create a directory +function CreateDir($dir) { + if (!is_dir($dir)){ + $oldumask = umask(0); + mkdir ($dir,0777); + umask($oldumask); + } +} + +//check if is $name have valid image extension +function CheckExtension($name) { + global $ImagesExtension; + + //get image Extension + $temp=explode(".",$name); + $n=count($temp); + $extension=strtolower(trim($temp[$n-1])); + $type=explode(",",$ImagesExtension); + + //check if it's a valid one + $valid=false; + for ($i=0;$i

error: $name
bad extension: $extension
this script supports: $ImagesExtension


"); + } +} + +//******************MAIN******************* +//Form +echo "
"; + +//in case of algorithm change, make the same request as before +echo ""; +if ($AlgorithmId!="" && $Submit=="") { + $Submit=$OldSubmit; + echo ""; +} + + + +//create a directory +CreateDir($ImagePath); + +switch ($Submit) { + case "": + AskConnection(); + break; + case "Accept and Connect": + GetInfo(); + break; + case "Clear": + GetInfo(); + break; + case "Random": + GetInfo(); + MakeRandom(); + break; + case "Query": + GetInfo(); + MakeQuery(); + break; +} + +echo '
+ '; +/******************END OF PHP******************/ +?> --- gnuift-0.1.14.orig/debian/TODO.Debian +++ gnuift-0.1.14/debian/TODO.Debian @@ -0,0 +1,18 @@ +TODO + +Robert Jordens + +This software may be used and distributed according to the terms +of the GNU General Public License, incorporated herein by reference. + +$Id: TODO.Debian 92 2003-09-04 13:59:38Z rj $ + +To be done. In order of importance and annoyance + + * bad hardcoded stuff + * java client + * php client + * global collection + * conffiles + + --- gnuift-0.1.14.orig/debian/README.Debian +++ gnuift-0.1.14/debian/README.Debian @@ -0,0 +1,28 @@ +gnuift and libmrml for Debian +----------------------------- + +GIFT is quite a beast. You should install gnuift-doc and read +/usr/share/doc/gnuift-doc/configuring-and-hacking-the-gift.dvi.gz and +/usr/share/doc/gnuift-doc/gift-guide.dvi.gz + +The PHP client ist included as an example in +/usr/share/doc/gnuift/examples it works right out of the box. + + +So in short you could do the following: + + * mkdir gift-data + * cd gift-data + * cp /usr/share/libmrml1/gift-config.mrml . + * export GIFT_HOME=`pwd` + * gift-add-collection.pl /path/to/your/huge/collection/of/images + * gift & # and hope it runs + * gunzip < /usr/share/doc/gnuift/examples/Client.php.gz > \ + /path/to/a/webserver/accessible/directory/Client.php + * access the url with a browser and enter the host where gift is + running + * be happy + + + -- Robert Jordens , Sat, 16 Nov 2002 12:24:52 +0100 + --- gnuift-0.1.14.orig/debian/gnuift.links +++ gnuift-0.1.14/debian/gnuift.links @@ -0,0 +1,7 @@ +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-endianize.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-extract-features.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-generate-inverted-file.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-modify-distance-matrix.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-one-minus.1.gz +usr/share/man/man1/gnuift.1.gz usr/share/man/man1/gift-write-feature-descs.1.gz --- gnuift-0.1.14.orig/debian/patches/05_add-doxy-header-and-footer.diff +++ gnuift-0.1.14/debian/patches/05_add-doxy-header-and-footer.diff @@ -0,0 +1,20 @@ +--- Doc/HTML/DoxygenFooter.html ++++ Doc/HTML/DoxygenFooter.html +@@ -0,0 +1,5 @@ ++ ++
++ Need for discussion? Want to contribute? Contact
help-gift@gnu.org Generated using Doxygen
++ ++ +--- Doc/HTML/DoxygenHeader.html ++++ Doc/HTML/DoxygenHeader.html +@@ -0,0 +1,9 @@ ++ ++ ++ ++ System documentation of the GNU Image-Finding Tool ++ ++ ++ ++

System documentation of the GNU Image-Finding Tool

++ --- gnuift-0.1.14.orig/debian/patches/07_gcc-4.0.diff +++ gnuift-0.1.14/debian/patches/07_gcc-4.0.diff @@ -0,0 +1,12 @@ +diff -urN tmp/libMRML/cc/CAttributeList.cc gift-0.1.13/libMRML/cc/CAttributeList.cc +--- tmp/libMRML/cc/CAttributeList.cc 2002-07-26 13:23:23.000000000 +0200 ++++ gift-0.1.13/libMRML/cc/CAttributeList.cc 2004-12-22 19:42:18.000000000 +0100 +@@ -92,7 +92,7 @@ + + if(strcmp(i->second.first, + i->second.second)){ +- cout << "DELETING FAILED" << flush << int(i->second.second) << flush << i->second.first << i->second.second << endl; ++ cout << "DELETING FAILED" << flush << long(i->second.second) << flush << i->second.first << i->second.second << endl; + assert(0); + } + delete[] i->second.first; --- gnuift-0.1.14.orig/debian/patches/08_add-missing-headers.patch +++ gnuift-0.1.14/debian/patches/08_add-missing-headers.patch @@ -0,0 +1,39 @@ +>>>> On Tue, 10 May 2005 23:59:36 +0100, Debian/IA64 non-US Build Daemon said: + + > Function `malloc' implicitly converted to pointer at rgb2hsv_utils.c:186 + > Function `malloc' implicitly converted to pointer at quantize.c:29 + +These are caused by a missing include of and, if reachable +at all, will cause a segfault on some arches (such as ia64) due to +pointer truncation (implicit "int" return value gets sign-extended to +64-bit pointer, which results in a crash if theh value is +dereferenced). + +You can use the following script to filter build logs and check for +these types of errors: + + http://people.debian.org/~dannf/check-implicit-pointer-functions + +The attached patch fixes the problems. + +Thanks, + + --david + +--- FeatureExtraction/rgb2hsv_utils.c~ 2002-07-22 00:09:28.000000000 -0700 ++++ FeatureExtraction/rgb2hsv_utils.c 2005-05-11 02:18:15.000000000 -0700 +@@ -1,4 +1,5 @@ + #include ++#include + #include + #include "ppm.h" + +--- FeatureExtraction/quantize.c~ 2002-07-22 00:09:28.000000000 -0700 ++++ FeatureExtraction/quantize.c 2005-05-11 02:18:24.000000000 -0700 +@@ -1,4 +1,5 @@ + #include ++#include + #include + + enum ppm_error hsv_quantize_ppm(PPM *im_hsv, PPM **im_quant, int **colmap, int numH, int numS, int numV, int numG) { + --- gnuift-0.1.14.orig/debian/gnuift-doc.docs +++ gnuift-0.1.14/debian/gnuift-doc.docs @@ -0,0 +1,4 @@ +build-tree/gift-*/Doc/gift-guide.txt +build-tree/gift-*/Doc/configuring-and-hacking-the-gift.txt +build-tree/gift-*/Doc/gift-guide.dvi +build-tree/gift-*/Doc/configuring-and-hacking-the-gift.dvi --- gnuift-0.1.14.orig/debian/copyright +++ gnuift-0.1.14/debian/copyright @@ -0,0 +1,27 @@ +This package was debianized by Robert Jordens on +Thu, 4 Sep 2003 12:42:29 +0200. + +It was downloaded from ftp://ftp.gnu.org/gnu/gift + +Upstream Author: Wolfgang Müller + New address: + +Copyright: + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 dated June, 1991. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + --- gnuift-0.1.14.orig/debian/gnuift.init.d-disabled +++ gnuift-0.1.14/debian/gnuift.init.d-disabled @@ -0,0 +1,42 @@ +#!/bin/sh +# + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/bin/gift +NAME=gnuift +DESC="the Gnu Image Finding Tool daemon" +GIFT_HOME=/var/lib/gnuift + + +test -f $DAEMON || exit 0 + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ + --background --chuid nobody --exec $DAEMON \ + >/dev/null 2>&1 + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --oknodo --stop --quiet --user nobody \ + --exec $DAEMON + echo "$NAME." + ;; + restart|force-reload) + echo "Restarting $DESC: " + /etc/init.d/$NAME stop && /etc/init.d/$NAME start + ;; + *) + N=/etc/init.d/$NAME + # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 + --- gnuift-0.1.14.orig/debian/gnuift.sgml +++ gnuift-0.1.14/debian/gnuift.sgml @@ -0,0 +1,117 @@ +Robert"> + Jordens"> + Sep 4, 2003"> + 1"> + jordens@debian.org"> + + gnuift"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + GNU Image Finding Tool - index and search images by + content + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and gift-* + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + + + The GIFT (the GNU Image-Finding Tool) is a Content Based Image + Retrieval System (CBIRS). It enables you to do Query By Example on + images, giving you the opportunity to improve query results by + relevance feedback. For processing your queries the program relies + entirely on the content of the images, freeing you from the need to + annotate all images before querying the collection. + + The GIFT comes with a tool which lets you index whole directory trees + containing images in one go. You then can use the GIFT server and its + client, to browse your own image collections. + + The GIFT is an open framework for content-based image retrieval. We + explicitly have taken into account the possibility of adding new ways + of querying to the framework. Our communication protocol for + client-server communication, MRML, is XML based and fully documented + (http://www.mrml.net). This aims at promoting code reuse among + researchers and application developers. + + The current version of the GIFT can be seen in action at + http://viper.unige.ch/demo/ + + The GIFT (ex Viper) is the result of a research effort at the Vision +Group at the CUI (computer science center) of the University of Geneva + (see http://vision.unige.ch/). This cutting-edge research has been the + subject of several publications and conference talks. Details can be + found at http://viper.unige.ch/. + + + + + SEE ALSO + + The gnuift-doc package contains reference manuals, configuration + hints and further information. + + + AUTHOR + This manual page was written by &dhusername; &dhemail; for the + &debian; system (but may be used by others). Permission is granted + to copy, distribute and/or modify this document under the terms of + the GNU General Public License, Version 2. On + Debian systems, the full text of this license can be found in the + file /usr/share/common-licenses/GPL-2. + +
+ + + + --- gnuift-0.1.14.orig/debian/gnuift-doc.doc-base.conf +++ gnuift-0.1.14/debian/gnuift-doc.doc-base.conf @@ -0,0 +1,16 @@ +Document: gnuift-conf +Title: Configuring and hacking the GIFT +Author: Wolfgang Mueller +Section: Apps/Graphics +Abstract: Guide for the advanced user and the programmer + The GIFT has been designed to maximize flexibility, both for users and + developers. This document explains, how GIFT can be configured + (levering this flexibility), and how the configuration files are + digested in the interior workings of GIFT. + +Format: text +Files: /usr/share/doc/gnuift-doc/configuring-and-hacking-the-gift.txt.gz + +Format: dvi +Files: /usr/share/doc/gnuift-doc/configuring-and-hacking-the-gift.dvi.gz + --- gnuift-0.1.14.orig/debian/gnuift.manpages +++ gnuift-0.1.14/debian/gnuift.manpages @@ -0,0 +1 @@ +debian/gnuift.1 --- gnuift-0.1.14.orig/debian/gnuift-doc.doc-base.guide +++ gnuift-0.1.14/debian/gnuift-doc.doc-base.guide @@ -0,0 +1,16 @@ +Document: gnuift-guide +Title: Gnu Image Finding Tool - Guide +Author: Wolfgang Mueller +Section: Apps/Graphics +Abstract: User's guide to the GIFT + GIFT is a content based image retrieval system (CBIRS). It gives the + user the possibility to index and search images without having to + annotate them first. Indexing is done using image properties such as + color and texture. + +Format: text +Files: /usr/share/doc/gnuift-doc/gift-guide.txt.gz + +Format: dvi +Files: /usr/share/doc/gnuift-doc/gift-guide.dvi.gz + --- gnuift-0.1.14.orig/debian/gnuift.install +++ gnuift-0.1.14/debian/gnuift.install @@ -0,0 +1,7 @@ +debian/tmp/usr/bin/gift +debian/tmp/usr/bin/gift-endianize +debian/tmp/usr/bin/gift-extract-features +debian/tmp/usr/bin/gift-generate-inverted-file +debian/tmp/usr/bin/gift-modify-distance-matrix +debian/tmp/usr/bin/gift-one-minus +debian/tmp/usr/bin/gift-write-feature-descs --- gnuift-0.1.14.orig/debian/gnuift-doc.install +++ gnuift-0.1.14/debian/gnuift-doc.install @@ -0,0 +1 @@ +build-tree/gift-*/Doc/autoDoc/HTML/* /usr/share/doc/gnuift-doc/html