-#
-# Conditional build:
-%bcond_without imlib # do not compile freedesktop notification plugin
-#
+# TODO
+# - Requires: /bin/bash /bin/sh /usr/bin/env /usr/bin/perl ... etc in music plugin, subpackage it?
+# - mv languages instead handling specially in find-lang.sh, send to upstream
Summary: MSN Messenger clone for Linux
-Summary(de): MSN Messenger-Klon für Linux
-Summary(fr): Clône MSN Messenger pour Linux
-Summary(pl): Klon MSN Messengera dla Linuksa
+Summary(de.UTF-8): MSN Messenger-Klon für Linux
+Summary(fr.UTF-8): Clône MSN Messenger pour Linux
+Summary(pl.UTF-8): Klon MSN Messengera dla Linuksa
Name: amsn
-Version: 0.94
-Release: 2
-Epoch: 0
+Version: 0.98.1
+Release: 4
License: GPL
Group: Applications/Communications
-%define _ver %(echo %{version} | tr . _)
-Source0: http://dl.sourceforge.net/amsn/%{name}-%{_ver}.tar.gz
-# Source0-md5: 7b7db9225342bb6c59b873ec90882e22
-Patch0: %{name}-DESTDIR.patch
-URL: http://amsn.sourceforge.net/
-%{?with_imlib:BuildRequires: imlib-devel}
-BuildRequires: libpng-devel
-BuildRequires: libtiff-devel
+Source0: http://downloads.sourceforge.net/amsn/%{name}-%{version}.tar.gz
+# Source0-md5: 8c608673a4e920b83cc9f41c2cb837dc
+Source1: find-lang.sh
+Patch0: %{name}-desktop.patch
+Patch1: %{name}-paths.patch
+Patch2: %{name}-libpng.patch
+Patch3: %{name}-bwidget.patch
+Patch4: %{name}-no-exact-http.patch
+Patch5: %{name}-songbird-exception.patch
+Patch6: %{name}-disable-autoupdate.patch
+URL: http://www.amsn-project.net/
+BuildRequires: farsight2-devel
+BuildRequires: gupnp-igd-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel >= 2:1.4
+BuildRequires: libstdc++-devel
+BuildRequires: libv4l-devel
+BuildRequires: pkgconfig
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.517
BuildRequires: sed >= 4.0
-BuildRequires: tcl-devel >= 8.3
-BuildRequires: tk-devel >= 8.3
+BuildRequires: tcl-devel >= 8.4
+BuildRequires: tk-devel >= 8.4
+BuildRequires: which
+BuildRequires: xorg-lib-libICE-devel
+BuildRequires: xorg-lib-libSM-devel
+Requires(post,postun): hicolor-icon-theme
+# default skin is always needed, as it contains images if extra skin misses something
+Requires: %{name}-skin-default
# IM's convert is needed to display pictures (buddy icons).
Requires: ImageMagick
-Requires: tcl >= 8.3
+Requires: tcl >= 8.5.7
# MSN Protocol 9 won't let you in without SSL anymore.
Requires: tcl-tls
-Requires: tk >= 8.3
-%{!?with_imlib:BuildArch: noarch}
+Requires: tcllib
+Requires: tk >= 8.4
+Requires: tk-BWidget >= 1.8.0-2
+Requires: xdg-utils
+%if 0
+# new deps
+Requires: tcl-snack
+Requires: tclsoap
+Requires: tcltls
+Requires: tkdnd
+%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define find_lang %{SOURCE1} %{buildroot}
+
%description
This is Tcl/Tk clone that implements the Microsoft Messenger (MSN) for
Unix, Windows, or Macintosh platforms. It supports file transfers,
-groups, and many more features. Visit http://amsn.sourceforge.net/ for
-details. This is an ongoing project, and it is already going pretty
-well.
-
-%description -l de
-amsn ist ein Microsoft Messenger (MSN) Client für UNIX, Windows und
-Macintosh, der in Tcl/Tk geschrieben ist. Es unterstützt
-Dateiübertragungen, Gruppen uvm.
-Begeben Sie sich auf http://amsn.sourceforge.net/ um mehr über dieses
-Projekt zu erfahren.
-
-%description -l fr
+groups, and many more features.
+
+%description -l de.UTF-8
+amsn ist ein Microsoft Messenger (MSN) Client für UNIX, Windows und
+Macintosh, der in Tcl/Tk geschrieben ist. Es unterstützt
+Dateiübertragungen, Gruppen uvm.
+
+%description -l fr.UTF-8
amsn est un client Microsoft Messenger (MSN) pour UNIX, Windows et
-Macintosh écrit en Tcl/Tk. Il supporte les tranferts de fichiers, les
-groupes et beaucoup d'autres possibilités.
-Visitez http://amsn.sourceforge.net/ pour de plus amples détails.
+Macintosh écrit en Tcl/Tk. Il supporte les tranferts de fichiers, les
+groupes et beaucoup d'autres possibilités.
+
+%description -l pl.UTF-8
+amsn to klient Microsoft Messengera (MSN) dla Uniksów, Windows i
+Macintosha napisany w Tcl/Tk. Obsługuje przesyłanie plików, grupy i
+wiele więcej możliwości.
-%description -l pl
-amsn to klient Microsoft Messengera (MSN) dla Uniksów, Windows i
-Macintosha napisany w Tcl/Tk. Obs³uguje przesy³anie plików, grupy i
-wiele wiêcej mo¿liwo¶ci - szczegó³y pod adresem
-<http://amsn.sourceforge.net/>. Projekt jest nadal rozwijany i ju¿
-dzia³a ca³kiem dobrze.
+%package plugins
+Summary: Plugins for aMSN
+Group: Applications/Networking
+URL: http://amsn.sourceforge.net/plugins.php
+Requires: %{name} = %{version}-%{release}
+
+%description plugins
+Extra plugins for amsn to enable drawing Ink, send and receive Nudges,
+view the last lines of a recent chat when opening a new one and create
+snapshots with your webcam to use as your display picture.
%prep
-%setup -q -n %{name}-%{_ver}
-%patch0 -p1
+%setup -q
+
+# undos some source files
+find -name '*.tcl' -print0 | xargs -0 sed -i -e 's,\r$,,'
+
+rm -r utils/BWidget-1.9.0
+rm -r plugins/music/MusicWin
+rm plugins/music/*.scpt
-# add InstantMessaging category
-sed -i -e '/Categories=/s/.*/Categories=Network;InstantMessaging;/' %{name}.desktop
+# skins in amsn-skins.spec
+rm -r skins/*
+
+# for webcam to work these paths need to be added because we move libs around
+%{__sed} -i 's#\.\./libng/plugins#%{tcl_sitearch}/capture/libng/plugins#' utils/linux/capture/libng/grab-ng.c
+%{__sed} -i 's#\.\./libng/contrib-plugins#%{tcl_sitearch}/capture/libng/contrib-plugins#' utils/linux/capture/libng/grab-ng.c
+
+%{__sed} -i 's#mozilla#firefox#' config.tcl
+%{__sed} -i 's#my_filemanager open#xdg-open#' config.tcl
+%{__sed} -i 's#env(HOME) amsn_received#env(HOME) Desktop#' config.tcl
+%{__sed} -i 's# utils/bwidget1.8.0##' Makefile.in
+
+%{__sed} -i 's#set program_dir \[file dirname \[info script\]\]#set program_dir "%{_datadir}/%{name}/"#' amsn amsn-remote amsn-remote-CLI
+
+%{__sed} -i 's#`locate .*`##' configure
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
%build
-%if %{with imlib}
-cd plugins/traydock
-%configure
-%{__make}
-%endif
+# NOTE: enable debug allows us to keep debug symbols in -debuginfo package
+%configure \
+ --enable-debug \
+ CFLAGS="%{rpmcflags}"
+%{__make} \
+ verbose=yes
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_datadir}/%{name}
+install -d $RPM_BUILD_ROOT{%{_iconsdir}/hicolor,%{_pixmapsdir},%{_desktopdir}}
%{__make} install \
- prefix=%{_prefix} \
DESTDIR=$RPM_BUILD_ROOT
-%if %{with imlib}
- # Installing the freedesktop notification plugin"
- install -d $RPM_BUILD_ROOT%{_libdir}/amsn/plugins/traydock
- mv $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/traydock/libtray.so $RPM_BUILD_ROOT%{_libdir}/amsn/plugins/traydock
- rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/traydock
- ln -s ../../../%{_lib}/amsn/plugins/traydock $RPM_BUILD_ROOT%{_datadir}/amsn/plugins
-%else
- rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/traydock
-%endif
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/amsn $RPM_BUILD_ROOT%{_bindir}/amsn
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/amsn-remote $RPM_BUILD_ROOT%{_bindir}/amsn-remote
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/amsn-remote-CLI $RPM_BUILD_ROOT%{_bindir}/amsn-remote-CLI
+
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/base64
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/http
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/log
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/sha1
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/snit
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/uri
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/docs
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/{AGREEMENT,FAQ,GNUGPL,INSTALL,remote.help,TODO}
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/{CREDITS,HELP,README}
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/lang/{*.*,LANG-HOWTO,sortlang}
-# force relative path
-# FIXME: FHS?
-ln -sf ../share/amsn/amsn $RPM_BUILD_ROOT%{_bindir}
+install -d $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/linux/* $RPM_BUILD_ROOT%{tcl_sitearch}
+rmdir $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/linux
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/TkCximage $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/webcamsn $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/tcl_siren $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/tclISF $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/gupnp $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/farsight $RPM_BUILD_ROOT%{tcl_sitearch}
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/asyncresolver $RPM_BUILD_ROOT%{tcl_sitearch}
-install -d $RPM_BUILD_ROOT%{_desktopdir}
-install %{name}.desktop $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop
+mv $RPM_BUILD_ROOT{%{_datadir}/%{name},%{_desktopdir}}/%{name}.desktop
+mv $RPM_BUILD_ROOT%{_datadir}/%{name}/desktop-icons/* $RPM_BUILD_ROOT%{_iconsdir}/hicolor
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/desktop-icons
+rm $RPM_BUILD_ROOT%{_pixmapsdir}/%{name}.png
-# remove junk
-rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/amsn-0.91
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/amsn.{desktop,spec,debianmenu}
# docs in docs
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/docs
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/{CREDITS,GNUGPL,README,HELP,FAQ,TODO,Makefile,cvs_date}
-# random binary for PPC
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/sndplay
-# not for our arch
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/{winflash,winutils,QuickTimeTcl3.1,applescript,tclCarbonNotification,tclAE2.0}
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/{Makefile,gtkdock.?}
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/plugins/winico*
-rm -rf $RPM_BUILD_ROOT%{_datadir}/amsn/utils
+rm -r $RPM_BUILD_ROOT%{_datadir}/%{name}/utils/*/test.tcl
+
+%find_lang %{name}
+
+grep /plugins/ %{name}.lang > %{name}-plugins.lang
+sed -i -e '/plugins/d' %{name}.lang
%clean
rm -rf $RPM_BUILD_ROOT
-%files
+%post
+%update_icon_cache hicolor
+
+%postun
+%update_icon_cache hicolor
+
+%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc FAQ GNUGPL HELP README TODO CREDITS
-%attr(755,root,root) %{_bindir}/*
+%doc FAQ HELP README TODO CREDITS
+%attr(755,root,root) %{_bindir}/amsn
+%attr(755,root,root) %{_bindir}/amsn-remote
+%attr(755,root,root) %{_bindir}/amsn-remote-CLI
%dir %{_datadir}/%{name}
-%{_datadir}/%{name}/icons
-%{_datadir}/%{name}/lang
-%{_datadir}/%{name}/plugins
-%{_datadir}/%{name}/skins
%{_datadir}/%{name}/*.tcl
%{_datadir}/%{name}/hotmlog.htm
+
+# langlist explains the language codes used
%{_datadir}/%{name}/langlist
-%{_datadir}/%{name}/remote.help
-%attr(755,root,root) %{_datadir}/%{name}/%{name}*
+%dir %{_datadir}/%{name}/plugins
+%dir %{_datadir}/%{name}/skins
+%{_datadir}/%{name}/utils
-%{_pixmapsdir}/*.png
+%{_iconsdir}/hicolor/*/apps/*.png
%{_desktopdir}/%{name}.desktop
-%{?with_imlib:%{_libdir}/amsn}
+
+%dir %{tcl_sitearch}/*
+%{tcl_sitearch}/*/*.tcl
+%attr(755,root,root) %{tcl_sitearch}/*/*.so
+%dir %{tcl_sitearch}/capture/libng
+%dir %{tcl_sitearch}/capture/libng/plugins
+%attr(755,root,root) %{tcl_sitearch}/capture/libng/plugins/*.so
+
+%files plugins -f %{name}-plugins.lang
+%defattr(644,root,root,755)
+%dir %{_datadir}/%{name}/plugins/ColoredNicks
+%{_datadir}/%{name}/plugins/ColoredNicks/*.tcl
+%{_datadir}/%{name}/plugins/ColoredNicks/*.xml
+
+%dir %{_datadir}/%{name}/plugins/MSNGameTTT
+%{_datadir}/%{name}/plugins/MSNGameTTT/*.tcl
+%{_datadir}/%{name}/plugins/MSNGameTTT/*.xml
+%{_datadir}/%{name}/plugins/MSNGameTTT/pixmaps
+
+%dir %{_datadir}/%{name}/plugins/SearchContact
+%{_datadir}/%{name}/plugins/SearchContact/*.tcl
+%{_datadir}/%{name}/plugins/SearchContact/*.xml
+%{_datadir}/%{name}/plugins/SearchContact/pixmaps
+
+%dir %{_datadir}/%{name}/plugins/WebcamShooter
+%{_datadir}/%{name}/plugins/WebcamShooter/*.tcl
+%{_datadir}/%{name}/plugins/WebcamShooter/*.xml
+
+%dir %{_datadir}/%{name}/plugins/Notes
+%{_datadir}/%{name}/plugins/Notes/*.tcl
+%{_datadir}/%{name}/plugins/Notes/*.xml
+
+%dir %{_datadir}/%{name}/plugins/Nudge
+%{_datadir}/%{name}/plugins/Nudge/*.tcl
+%{_datadir}/%{name}/plugins/Nudge/*.xml
+%{_datadir}/%{name}/plugins/Nudge/*.wav
+
+%dir %{_datadir}/%{name}/plugins/inkdraw
+%{_datadir}/%{name}/plugins/inkdraw/*.tcl
+%{_datadir}/%{name}/plugins/inkdraw/*.xml
+%{_datadir}/%{name}/plugins/inkdraw/pixmaps
+%{_datadir}/%{name}/plugins/inkdraw/pencils
+
+%dir %{_datadir}/%{name}/plugins/music
+%{_datadir}/%{name}/plugins/music/*.tcl
+%{_datadir}/%{name}/plugins/music/*.xml
+%{_datadir}/%{name}/plugins/music/*.txt
+%{_datadir}/%{name}/plugins/music/info*
+%{_datadir}/%{name}/plugins/music/pixmaps
+
+%dir %{_datadir}/%{name}/plugins/remind
+%{_datadir}/%{name}/plugins/remind/*.tcl
+%{_datadir}/%{name}/plugins/remind/*.xml
+
+%dir %{_datadir}/%{name}/plugins/winks
+%{_datadir}/%{name}/plugins/winks/*.tcl
+%{_datadir}/%{name}/plugins/winks/*.xml
+%{_datadir}/%{name}/plugins/winks/*.txt
+%{_datadir}/%{name}/plugins/winks/pixmaps