# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/dev-util/gambas/gambas-2.8.2.ebuild,v 1.4 2008/10/01 17:35:45 betelgeuse Exp $ EAPI="2" inherit autotools eutils fdo-mime qt3 multilib toolchain-funcs DESCRIPTION="Gambas is a free development environment based on a Basic interpreter with object extensions" HOMEPAGE="http://gambas.sourceforge.net/" SLOT="2" MY_PN="${PN}${SLOT}" MY_P="${MY_PN}-${PV}" SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.bz2" LICENSE="GPL-2" KEYWORDS="~amd64 ~x86" IUSE="bzip2 corba curl debug doc examples firebird gtk kde mysql odbc opengl pcre pdf postgres qt3 sdl smtp sqlite sqlite3 svg v4l xml zlib" RDEPEND="bzip2? ( >=app-arch/bzip2-1.0.5 ) corba? ( >=net-misc/omniORB-4.1.0 ) curl? ( >=net-misc/curl-7.15.5-r1 ) firebird? ( >=dev-db/firebird-2.1.0.17755_rc2-r1 ) gtk? ( >=x11-libs/gtk+-2.10.14 ) kde? ( >=kde-base/kdelibs-3.5.9-r1 ) mysql? ( >=virtual/mysql-5.0 ) odbc? ( >=dev-db/unixODBC-2.2.12 ) opengl? ( >=media-libs/mesa-7.0.2 ) pcre? ( >=dev-libs/libpcre-7.6-r1 ) pdf? ( >=app-text/poppler-0.5.3 ) postgres? ( >=virtual/postgresql-base-8.2 ) qt3? ( >=x11-libs/qt-3.2:3 ) sdl? ( >=media-libs/sdl-image-1.2.6-r1 >=media-libs/sdl-mixer-1.2.7 ) smtp? ( >=dev-libs/glib-2.16.2 ) sqlite? ( =dev-db/sqlite-2* ) sqlite3? ( >=dev-db/sqlite-3.5.6 ) svg? ( >=gnome-base/librsvg-2.16.1-r2 ) v4l? ( >=media-libs/libpng-1.2.26 >=media-libs/jpeg-6b-r8 ) xml? ( >=dev-libs/libxml2-2.6.31 >=dev-libs/libxslt-1.1.22 ) zlib? ( >=sys-libs/zlib-1.2.3-r1 ) sys-devel/gcc[libffi]" DEPEND="${RDEPEND}" S="${WORKDIR}/${MY_P}" pkg_setup() { # ImageProvider implementers, see .component files for more info if ! { use qt3 || use gtk || use sdl; } ; then use pdf && die "PDF support depends on Qt, GTK or SDL being enabled" use v4l && die "V4L support depends on Qt, GTK or SDL being enabled" fi # OpenGLViewer implementers, see .component files for more info if ! { use qt3 || use sdl; } ; then use opengl && die "OpenGL support depends on Qt or SDL being enabled" fi if ! use gtk; then use svg && die "SVG support depends on GTK being enabled" fi if ! use qt3; then use kde && die "KDE support depends on Qt being enabled" einfo ewarn "The Gambas IDE currently cannot be be build without Qt being enabled." if use gtk; then einfo ewarn "You are using the USE flag gtk, but not qt3. Attempting to use GTK instead" ewarn "of Qt for certain components. This is considered EXPERIMENTAL and the" ewarn "resulting components may not function." fi einfo ebeep 3 fi } my_reduce_eautoreconf() { sed -i -e "/^\(AC\|GB\)_CONFIG_SUBDIRS(${1}[,)]/d" \ configure.ac \ || die "my_reduce_eautoreconf: sed on configure.ac failed with ${1}" sed -i -e "/^SUBDIRS/s/\ \(@${1}_dir@\|${1}\)//1" \ Makefile.am \ || die "my_reduce_eautoreconf: sed on Makefile.am failed with ${1}" } my_examine_components() { local comp="gb.*/src/*.component gb.*/src/*/*.component main/lib/*/*.component comp/src/*/.component" # Examine app/src/gambas2/CComponent.class for more info einfo einfo "Checking component files ..." einfo elog "The following components are reported stable, but incomplete:" elog "$(grep '^State=1' ${comp} | sed -e 's/.*gb\.\([^/]*\)[/]\?\.component.*/\t\1/')" einfo ewarn "The following components are reported unstable:" ewarn "$(grep '^\(State=2\|Alpha\)' ${comp} | sed -e 's/.*gb\.\([^/]*\)[/]\?\.component.*/\t\1/')" einfo } src_prepare() { if { ! use qt3; } && use gtk; then ebegin "Applying sed no-Qt-use-GTK-workaround-patch (EXPERIMENTAL)" # Gentoo-specific patch/workaround sed -i -e 's/EXPORT = "gb.qt"/EXPORT = "gb.gtk"/' \ main/lib/gui/main.c \ || die "sed no-Qt-use-GTK-workaround-patch (EXPERIMENTAL)" eend 0 fi ebegin "Applying sed no-automagic-patch" # Gentoo-specific patch sed -i -e 's/gb_enable_\$1=yes/gb_enable_\$1=no/' \ acinclude.m4 \ || die "sed no-automagic-patch failed" eend 0 # Gentoo-specific patch epatch "${FILESDIR}/${PN}-2.5.0-mimetype-registration.patch" # gb.qt needs this patch because it does not use GB_COMPONENT_PKG_CONFIG in qt.gb/configure.ac epatch "${FILESDIR}/${PN}-2.7.0-r1-gb.qt-QT_LDFLAGS.patch" # help does not appear to need libtool, see acinclude.m4 for more info epatch "${FILESDIR}/${PN}-2.7.0-r1-help-GB_INIT_SHORT.patch" # Gentoo-specific patches for libtool compatibility epatch "${FILESDIR}/${PN}-2.7.0-r1-remove-libltdl-from-main.patch" epatch "${FILESDIR}/${PN}-2.8.0-libtool.patch" epatch "${FILESDIR}/${PN}-2.8.0-help-path.patch" # sdl_sound appears inconsistently named and disables itself epatch "${FILESDIR}/${PN}-2.8.0-sdl-component-name.patch" # Gentoo-specific patch epatch "${FILESDIR}/${PN}-2.8.2-FLAGS.patch" epatch "${FILESDIR}/${PN}-2.8.2-app-Makefile-install.patch" epatch "${FILESDIR}/${PN}-2.8.2-comp-Makefile-install.patch" epatch "${FILESDIR}/${PN}-2.8.2-examples-Makefile-install.patch" ebegin "Applying sed remove-libtool-patch" # Gentoo-specific patch, may be obsoleted in the future # Remove embedded libtool.m4 file sed -i -e '/[-][*][-]Autoconf[-][*][-]$/,/^dnl\ Like\ AC_CHECK_HEADER,\ but/d' \ acinclude.m4 \ || die "sed remove-libtool-patch failed" eend 0 my_examine_components ebegin "Removing provided libtool/libltdl" rm -R ./main/libltdl \ && rm config.guess config.sub install-sh ltmain.sh \ && rm */config.guess */config.sub */install-sh */ltmain.sh \ || die "removing libtool failed" eend 0 ebegin "Reducing eautoreconf" # Keep synchronized with myconf in src_compile use bzip2 || my_reduce_eautoreconf bzlib2 use zlib || my_reduce_eautoreconf zlib use mysql || my_reduce_eautoreconf mysql use odbc || my_reduce_eautoreconf odbc use postgres || my_reduce_eautoreconf postgresql use sqlite || my_reduce_eautoreconf sqlite2 use sqlite3 || my_reduce_eautoreconf sqlite3 use firebird || my_reduce_eautoreconf firebird use gtk || my_reduce_eautoreconf gtk use svg || my_reduce_eautoreconf gtksvg use pdf || my_reduce_eautoreconf pdf #net use curl || my_reduce_eautoreconf curl use smtp || my_reduce_eautoreconf smtp use pcre || my_reduce_eautoreconf pcre use qt3 || my_reduce_eautoreconf qt my_reduce_eautoreconf qte use kde || my_reduce_eautoreconf kde use sdl || my_reduce_eautoreconf sdl use sdl || my_reduce_eautoreconf sdl_sound use xml || my_reduce_eautoreconf xml use v4l || my_reduce_eautoreconf v4l #crypt use opengl || my_reduce_eautoreconf opengl use corba || my_reduce_eautoreconf corba { use qt3 || use gtk || \ use sdl; } || my_reduce_eautoreconf image use qt3 || my_reduce_eautoreconf desktop # This may work in the future, but it does not work now. # { use qt3 || \ # use gtk; } || my_reduce_eautoreconf desktop use doc || my_reduce_eautoreconf help use examples || my_reduce_eautoreconf examples eend 0 eautoreconf || die "eautoreconf failed" } src_configure() { local myconf local myconf_main local myconf_qt local myconf_xml myconf="$(use_enable bzip2 bzlib2) $(use_enable zlib) $(use_enable mysql) $(use_enable odbc) $(use_enable postgres postgresql) $(use_enable sqlite sqlite2) $(use_enable sqlite3) $(use_enable firebird) $(use_enable gtk) $(use_enable svg gtksvg) $(use_enable pdf) --enable-net $(use_enable curl) $(use_enable smtp) $(use_enable pcre) $(use_enable qt3 qt) --disable-qte $(use_enable kde) $(use_enable sdl) $(use_enable sdl sdl_sound) $(use_enable xml) $(use_enable v4l) --enable-crypt $(use_enable opengl) $(use_enable corba) $( { use qt3 || use gtk || use sdl; } \ && echo '--enable-image' || echo '--disable-image') $(use_enable qt3 desktop)" # This may work in the future, but it does not work now. # $( { use qt3 || use gtk; } && echo '--enable-desktop' || echo '--disable-desktop')" myconf_main="--enable-intl --enable-conv --enable-ffi --with-ffi-libraries=/usr/$(get_libdir)/gcc/${CHOST}/$(gcc-fullversion)/ --enable-preloading" if use qt3; then myconf_qt="$(use_enable opengl qtopengl) --enable-qt-translation " fi myconf_xml="$(use_enable xml xslt)" econf --config-cache \ ${myconf} ${myconf_main} ${myconf_qt} ${myconf_xml} \ $(use_enable debug) --disable-profiling \ --docdir=/usr/share/doc/${PF} --htmldir=/usr/share/doc/${PF}/html } my_dekstop_and_icon () { # USAGE: local icon="${1}.png" make_desktop_entry "${1}" "${2}" "${5}/${icon}" "${3}" \ || die "make_desktop_entry failed for ${1}" insinto ${5} newins ${4} ${icon} || die "newins failed for ${1}" } src_install() { emake DESTDIR="${D}" install -j1 || die "emake install failed" dodoc AUTHORS ChangeLog NEWS README || die "dodoc failed" newdoc gb.net/src/doc/README gb.net-README || die "newdoc failed" newdoc gb.net/src/doc/changes.txt gb.net-ChangeLog || die "newdoc failed" use pcre && { newdoc gb.pcre/src/README gb.pcre-README || die "newdoc failed"; } if use qt3 || use gtk; then use qt3 && \ my_dekstop_and_icon \ "${MY_PN}" "Gambas" "Development" \ "app/src/${MY_PN}/img/logo/new-logo.png" \ "/usr/share/icons/hicolor/128x128/apps" my_dekstop_and_icon \ "${MY_PN}-database-manager" "Gambas Database Manager" "Development" \ "app/src/${MY_PN}-database-manager/img/logo/logo-128.png" \ "/usr/share/icons/hicolor/128x128/apps" insinto /usr/share/icons/hicolor/64x64/mimetypes doins app/mime/application-x-gambasscript.png main/mime/application-x-gambas.png \ || die "doins failed" insinto /usr/share/mime/application doins app/mime/application-x-gambasscript.xml main/mime/application-x-gambas.xml \ || die "doins failed" fi use doc && { dosym "/usr/share/${MY_PN}/help" "/usr/share/doc/${PF}/html" \ || die "dosym failed"; } } my_fdo_update() { fdo-mime_desktop_database_update fdo-mime_mime_database_update } pkg_postinst() { my_fdo_update } pkg_postrm() { my_fdo_update }