From 899f0101ed9e39a87af2e29e2fbe9fe55b8ec30f Mon Sep 17 00:00:00 2001 From: Peter Gordon Date: Mar 07 2007 07:25:06 +0000 Subject: Update to new upstream release (0.5 RC1); use a rewritten setup.py instead of patching it an ungodly amount, since that's easier to maintain across version updates and whatnot. --- diff --git a/.cvsignore b/.cvsignore index 93a0100..fa51488 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -deluge-0.4.90.3.tar.gz +deluge-0.4.99.1.tar.gz diff --git a/deluge-fixed-setup.py b/deluge-fixed-setup.py new file mode 100644 index 0000000..723582c --- /dev/null +++ b/deluge-fixed-setup.py @@ -0,0 +1,132 @@ +# Copyright (c) 2006 Zach Tibbitts ('zachtib') +# Heavily modified by Peter Gordon ('codergeek42') : +# (1) Forcibly build against a system copy of libtorrent (Rasterbar's); +# (2) Don't let the build script hardcode the RPM buildroot install path in the +# installed files. +# (3) Use proper CFLAGS (e.g., don't strip any) +# +# This program 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; either version 2, or (at your option) +# any later version. +# +# This program 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 program. If not, write to: +# The Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor +# Boston, MA 02110-1301, USA. + +import platform, os, os.path, glob +from distutils.core import setup, Extension +from distutils import sysconfig +import shutil +from distutils import cmd +from distutils.command.install import install as _install +from distutils.command.install_data import install_data as _install_data +from distutils.command.build import build as _build +import msgfmt + +pythonVersion = platform.python_version()[0:3] + +APP_VERSION = "0.4.99.1" + +additions = ['-DNDEBUG', '-O2'] + +if pythonVersion == '2.5': + cv_opt = sysconfig.get_config_vars()["CFLAGS"] + for addition in additions: + cv_opt = cv_opt + " " + addition + sysconfig.get_config_vars()["CFLAGS"] = ' '.join(cv_opt.split()) +else: + cv_opt = sysconfig.get_config_vars()["OPT"] + for addition in additions: + cv_opt = cv_opt + " " + addition + sysconfig.get_config_vars()["OPT"] = ' '.join(cv_opt.split()) + + +deluge_core = Extension('deluge_core', + include_dirs = [sysconfig.get_python_inc(), '/usr/include', '/usr/include/libtorrent'], + libraries = ['boost_filesystem', 'torrent'], + extra_compile_args = ["-Wno-missing-braces"], + sources = ['src/deluge_core.cpp']) + + + +class build_trans(cmd.Command): + description = 'Compile .po files into .mo files' + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + po_dir = os.path.join(os.path.dirname(__file__), 'po') + for path, names, filenames in os.walk(po_dir): + for f in filenames: + if f.endswith('.po'): + lang = f[:len(f) - 3] + src = os.path.join(path, f) + dest_path = os.path.join('build', 'locale', lang, 'LC_MESSAGES') + dest = os.path.join(dest_path, 'deluge.mo') + if not os.path.exists(dest_path): + os.makedirs(dest_path) + if not os.path.exists(dest): + print 'Compiling %s' % src + msgfmt.make(src, dest) + else: + src_mtime = os.stat(src)[8] + dest_mtime = os.stat(dest)[8] + if src_mtime > dest_mtime: + print 'Compiling %s' % src + msgfmt.make(src, dest) + +class build(_build): + sub_commands = _build.sub_commands + [('build_trans', None)] + def run(self): + _build.run(self) + +class install_data(_install_data): + def run(self): + for lang in os.listdir('build/locale/'): + lang_dir = os.path.join('share', 'locale', lang, 'LC_MESSAGES') + lang_file = os.path.join('build', 'locale', lang, 'LC_MESSAGES', 'deluge.mo') + self.data_files.append( (lang_dir, [lang_file]) ) + _install_data.run(self) + + + +cmdclass = { + 'build': build, + 'build_trans': build_trans, + 'install_data': install_data, +} + +data = [('share/deluge/glade', glob.glob('glade/*.glade')), + ('share/deluge/pixmaps', glob.glob('pixmaps/*.png')), + ('share/applications' , ['deluge.desktop']), + ('share/pixmaps' , ['deluge.xpm'])] + +for plugin in glob.glob('plugins/*'): + data.append( ('share/deluge/' + plugin, glob.glob(plugin + '/*')) ) + +setup(name="deluge", fullname="Deluge BitTorrent Client", version=APP_VERSION, + author="Zach Tibbitts, Alon Zakai", + author_email="zach@collegegeek.org, kripkensteiner@gmail.com", + description="A bittorrent client written in PyGTK", + url="http://deluge-torrent.org", + license="GPLv2", + scripts=["scripts/deluge"], + packages=['deluge'], + package_dir = {'deluge': 'src'}, + data_files=data, + ext_package='deluge', + ext_modules=[deluge_core], + cmdclass=cmdclass + ) diff --git a/deluge-setup.py-build-against-system-libtorrent.patch b/deluge-setup.py-build-against-system-libtorrent.patch deleted file mode 100644 index 9111274..0000000 --- a/deluge-setup.py-build-against-system-libtorrent.patch +++ /dev/null @@ -1,88 +0,0 @@ ---- setup.py.old 2007-03-02 20:14:51.000000000 -0800 -+++ setup.py 2007-03-02 20:17:03.000000000 -0800 -@@ -29,16 +29,11 @@ - - - # --# NOTE: The following "hack" removes the -g and -Wstrict-prototypes --# build options from the command that will compile the C++ module, -+# NOTE: The following "hack" removes the -Wstrict-prototypes -+# build option from the command that will compile the C++ module, - # deluge_core. While we understand that you aren't generally --# encouraged to do this, we have done so for the following reasons: --# 1) The -g compiler option produces debugging information about --# the compiled module. However, this option increases the --# size of deluge_core.so from ~1.9MB to 13.6MB and slows down --# the program's execution without offering any benefits --# whatsoever. --# 2) -Wstrict-prototypes is not a valid C++ build option, and the -+# encouraged to do this, we have done so for the following reason(s): -+# 1) -Wstrict-prototypes is not a valid C++ build option, and the - # compiler will throw a number of warnings at compile time. - # While this does not really impact anything, it makes it - # seem as if something is going wrong with the compile, and -@@ -60,60 +55,11 @@ - - - --# --# NOTE: The Rasterbar Libtorrent source code is in the libtorrent/ directory --# inside of Deluge's source tarball. On several occasions, it has been --# pointed out to us that we should build against the system's installed --# libtorrent rather than our internal copy, and a few people even submitted --# patches to do just that. However, as of now, this version --# of libtorrent is not available in Debian, and as a result, Ubuntu. Once --# libtorrent-rasterbar is available in the repositories of these distributions, --# we will probably begin to build against a system libtorrent, but at the --# moment, we are including the source code to make packaging on Debian and --# Ubuntu possible. --# - deluge_core = Extension('deluge_core', -- include_dirs = ['./libtorrent', './libtorrent/include', -- './libtorrent/include/libtorrent', -- '/usr/include/python' + pythonVersion], -- libraries = ['boost_filesystem', 'boost_date_time', -- 'boost_program_options', 'boost_regex', -- 'boost_serialization', 'boost_thread', -- 'z', 'pthread'], -- extra_compile_args = ["-Wno-missing-braces"], -- sources = ['src/deluge_core.cpp', -- 'libtorrent/src/alert.cpp', -- 'libtorrent/src/allocate_resources.cpp', -- 'libtorrent/src/bt_peer_connection.cpp', -- 'libtorrent/src/entry.cpp', -- 'libtorrent/src/escape_string.cpp', -- 'libtorrent/src/file.cpp', -- 'libtorrent/src/http_tracker_connection.cpp', -- 'libtorrent/src/identify_client.cpp', -- 'libtorrent/src/ip_filter.cpp', -- 'libtorrent/src/peer_connection.cpp', -- 'libtorrent/src/piece_picker.cpp', -- 'libtorrent/src/policy.cpp', -- 'libtorrent/src/session.cpp', -- 'libtorrent/src/session_impl.cpp', -- 'libtorrent/src/sha1.cpp', -- 'libtorrent/src/stat.cpp', -- 'libtorrent/src/storage.cpp', -- 'libtorrent/src/torrent.cpp', -- 'libtorrent/src/torrent_handle.cpp', -- 'libtorrent/src/torrent_info.cpp', -- 'libtorrent/src/tracker_manager.cpp', -- 'libtorrent/src/udp_tracker_connection.cpp', -- 'libtorrent/src/web_peer_connection.cpp', -- 'libtorrent/src/kademlia/closest_nodes.cpp', -- 'libtorrent/src/kademlia/dht_tracker.cpp', -- 'libtorrent/src/kademlia/find_data.cpp', -- 'libtorrent/src/kademlia/node.cpp', -- 'libtorrent/src/kademlia/node_id.cpp', -- 'libtorrent/src/kademlia/refresh.cpp', -- 'libtorrent/src/kademlia/routing_table.cpp', -- 'libtorrent/src/kademlia/rpc_manager.cpp', -- 'libtorrent/src/kademlia/traversal_algorithm.cpp']) -+ include_dirs = [sysconfig.get_python_inc(), '/usr/include', '/usr/include/libtorrent'], -+ libraries = ['boost_filesystem', 'torrent'], -+ extra_compile_args = ["-Wno-missing-braces"], -+ sources = ['src/deluge_core.cpp']) - - data = [('share/deluge/glade', glob.glob('glade/*.glade')), - ('share/deluge/pixmaps', glob.glob('pixmaps/*.png')), diff --git a/deluge-setup.py-dont-store-the-install-dir.patch b/deluge-setup.py-dont-store-the-install-dir.patch deleted file mode 100644 index 2c48aa2..0000000 --- a/deluge-setup.py-dont-store-the-install-dir.patch +++ /dev/null @@ -1,78 +0,0 @@ ---- setup.py.after-use-system-libtorrent-patch 2007-03-02 20:28:40.000000000 -0800 -+++ setup.py 2007-03-02 20:30:06.000000000 -0800 -@@ -72,67 +72,6 @@ - for plugin in glob.glob('plugins/*'): - data.append( ('share/deluge/' + plugin, glob.glob(plugin + '/*')) ) - --# Thanks to Iain Nicol for code to save the location for installed prefix --# At runtime, we need to know where we installed the data to. --import shutil --from distutils import cmd --from distutils.command.install import install as _install -- --class write_data_install_path(cmd.Command): -- description = 'saves the data installation path for access at runtime' -- -- def initialize_options(self): -- self.data_install_dir = None -- self.lib_build_dir = None -- -- def finalize_options(self): -- self.set_undefined_options('install', -- ('install_data', 'data_install_dir') -- ) -- self.set_undefined_options('build', -- ('build_lib', 'lib_build_dir') -- ) -- -- def run(self): -- conf_filename = os.path.join(self.lib_build_dir, -- 'deluge', 'dcommon.py') -- -- conf_file = open(conf_filename, 'r') -- data = conf_file.read() -- conf_file.close() -- data = data.replace('@datadir@', self.data_install_dir) -- -- conf_file = open(conf_filename, 'w') -- conf_file.write(data) -- conf_file.close() -- --class unwrite_data_install_path(cmd.Command): -- description = 'undoes write_data_install_path' -- -- def initialize_options(self): -- self.lib_build_dir = None -- -- def finalize_options(self): -- self.set_undefined_options('build', -- ('build_lib', 'lib_build_dir') -- ) -- -- def run(self): -- dest = os.path.join(self.lib_build_dir, -- 'deluge', 'dcommon.py') -- shutil.copyfile('src/dcommon.py', dest) -- --class install(_install): -- sub_commands = [('write_data_install_path', None)] + \ -- _install.sub_commands + [('unwrite_data_install_path', None)] -- --cmdclass = { -- 'install': install, -- 'write_data_install_path': write_data_install_path, -- 'unwrite_data_install_path': unwrite_data_install_path, --} -- -- - setup(name="deluge", fullname="Deluge BitTorrent Client", version="0.4.90.3", - author="Zach Tibbitts, Alon Zakai", - author_email="zach@collegegeek.org, kripkensteiner@gmail.com", -@@ -144,6 +83,5 @@ - package_dir = {'deluge': 'src'}, - data_files=data, - ext_package='deluge', -- ext_modules=[deluge_core], -- cmdclass=cmdclass -+ ext_modules=[deluge_core] - ) diff --git a/deluge.spec b/deluge.spec index a67eb27..4364cd6 100644 --- a/deluge.spec +++ b/deluge.spec @@ -2,7 +2,7 @@ %{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} Name: deluge -Version: 0.4.90.3 +Version: 0.4.99.1 Release: 1%{?dist} Summary: A Python BitTorrent client with support for UPnP and DHT Group: Applications/Editors @@ -10,9 +10,8 @@ License: GPL URL: http://deluge-torrent.org/ Source0: http://deluge-torrent.org/downloads/%{name}-%{version}.tar.gz -Patch0: %{name}-setup.py-build-against-system-libtorrent.patch -Patch1: %{name}-64bit-python_long.patch -Patch2: %{name}-setup.py-dont-store-the-install-dir.patch +Source1: %{name}-fixed-setup.py +Patch0: %{name}-64bit-python_long.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -37,9 +36,8 @@ zero configuration of port-forwarding. %prep %setup -q -%patch0 -b .use-system-libtorrent -%patch1 -b .64bit-python_long -%patch2 -b .dont-store-the-install-dir +%patch0 -p0 -b .64bit-python_long +install -m 0755 %{SOURCE1} ./setup.py %build @@ -65,13 +63,14 @@ pushd %{buildroot}/%{python_sitearch}/%{name}/ sed -i 1d ${FILE}; done popd +%find_lang %{name} %clean rm -rf %{buildroot} -%files +%files -f %{name}.lang %defattr(-,root,root,-) %doc LICENSE %{python_sitearch}/%{name}/ @@ -90,6 +89,15 @@ update-desktop-database &> /dev/null ||: %changelog +* Tue Mar 06 2007 Peter Gordon - 0.4.99.1-1 +- Update to new upstream release (0.5 RC1). +- Use rewritten setup.py instead of patching it so much, since it's easier to + maintain across version upgrades and whatnot: + + fixed-setup.py +- Remove the setup.py patches (no longer needed, since I'm packaging my own): + - setup.py-dont-store-the-install-dir.patch + - setup.py-build-against-system-libtorrent.patch + * Fri Mar 02 2007 Peter Gordon - 0.4.90.3-1 - Update to new upstream release (0.5 Beta 3). - Add patch to fix storing of installation directory: diff --git a/sources b/sources index 5c8362e..630d660 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -eecdbae003a9240d93ec023d7a81cd97 deluge-0.4.90.3.tar.gz +631c45e864a27df4925ecec8e8db415f deluge-0.4.99.1.tar.gz