1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2024-11-19 13:29:03 +00:00
Go to file
2011-08-25 09:36:06 -04:00
cocoa Fixed compilation error under Leopard. 2011-08-24 09:28:13 -07:00
core [#165 state:fixed] Don't collapse tree nodes on changing folder states. [Qt] 2011-07-12 12:51:11 -04:00
core_me [#161 state:fixed] Fixed folder sorting. 2011-06-15 11:58:33 -04:00
core_pe pe v2.2.1 2011-06-15 14:20:34 -04:00
core_se se v3.1.1 2011-08-24 12:05:31 -04:00
debian_me Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00
debian_pe Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00
debian_se Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00
help se v3.1.1 2011-08-24 12:05:31 -04:00
images Replaced 'Add' and 'Remove' by + and - icons in the directories dialog under Qt. 2011-01-18 11:07:56 +01:00
qt Updated qt/lang/de.qm 2011-08-25 09:36:06 -04:00
.hgignore Removed XIB files in de.lproj and fr.lproj, as they're just by products of other files. 2011-08-24 11:58:28 -04:00
.hgtags Added tag se3.1.1 for changeset db1f325c907f 2011-08-24 13:17:05 -04:00
build.py Added Xcode 4 support. 2011-07-21 10:11:51 -04:00
configure.py Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00
LICENSE Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00
package.py Merged heads 2011-04-12 13:29:27 +02:00
README Added Xcode 4 support. 2011-07-21 10:11:51 -04:00
requirements-osx.txt Added pip requirement files. 2011-07-11 14:00:03 -04:00
requirements-win.txt Added pip requirement files. 2011-07-11 14:00:03 -04:00
requirements.txt [#168 state:fixed] Made the file collection phase cancellable. 2011-07-11 14:18:55 -04:00
run_template_cocoa.py Replaced the use of runpy for running Qt by a simple subprocess call. runpy would cause weird QTimer warnings. 2010-10-05 09:27:32 +02:00
run_template_qt.py Updated copyright year to 2011. 2011-04-12 10:04:01 +02:00

Contents
========

This package contains the source for dupeGuru. To learn how to build it, refer to the "Build dupeGuru" section. Below is the description of the various subfolders:

- core: Contains the core logic code for dupeGuru. It's Python code written in TDD style.
- core_*: Edition-specific-cross-toolkit code written in Python.
- cocoa: UI code for the Cocoa toolkit. It's Objective-C code.
- qt: UI code for the Qt toolkit. It's written in Python and uses PyQt.
- images: Images used by the different UI codebases.
- debian_*: Skeleton files required to create a .deb package
- help: Help document, written for Sphinx.

There are also other sub-folder that comes from external repositories (automatically checked out
with as mercurial subrepos):

- hscommon: A collection of helpers used across HS applications.
- cocoalib: A collection of helpers used across Cocoa UI codebases of HS applications.
- qtlib: A collection of helpers used across Qt UI codebases of HS applications.

dupeGuru Dependencies
=====================

Before being able to build dupeGuru, a few dependencies have to be installed:

General dependencies
--------------------

- Python 3.1 (3.2 on Mac OS X) (http://www.python.org)
- Send2Trash3k (http://hg.hardcoded.net/send2trash)
- hsaudiotag3k 1.1.0 (for ME) (http://hg.hardcoded.net/hsaudiotag)
- jobprogress 1.0.1 (http://hg.hardcoded.net/jobprogress)
- Sphinx 1.0.6 (http://sphinx.pocoo.org/)
- pytest 2.0.0, to run unit tests. (http://pytest.org/)

Note: Sphinx doesn't officially support Python 3.x yet, but it doesn't matter because it is invoked
by the build system through command line, so you can build dupeGuru even if Sphinx is installed in
your Python 2.x install.

OS X prerequisites
------------------

- XCode 3.1 (http://developer.apple.com/TOOLS/xcode/)
- Sparkle (http://sparkle.andymatuschak.org/)
- PyObjC 2.3 (http://pyobjc.sourceforge.net/)
- pluginbuilder 1.0.1 (http://bitbucket.org/hsoft/pluginbuilder)
- appscript 1.0.0 for ME and PE (http://appscript.sourceforge.net/)

dupeGuru can be built with XCode 4, but there's gotchas, see below.

Windows prerequisites
---------------------

- Visual Studio 2008 (Express is enough) is needed to build C extensions. (http://www.microsoft.com/Express/)
- PyQt 4.7.5 (http://www.riverbankcomputing.co.uk/news)
- cx_Freeze, if you want to build a exe. You don't need it if you just want to run dupeGuru. (http://cx-freeze.sourceforge.net/)
- Advanced Installer, if you want to build the installer file. (http://www.advancedinstaller.com/)

Linux prerequisites
-------------------

- PyQt 4.7.5 (http://www.riverbankcomputing.co.uk/news)

The easy way!
-------------

There's an easy way to install the majority of the prerequisites above, and it's `pip <http://www.pip-installer.org/>`_ which has recently started to support Python 3. So install it and then run::

    pip install -r requirements-[osx|win].txt

([osx|win] depends, of course, on your platform. On other platforms, just use requirements.txt). 
Because Sphinx doesn't support Python 3 yet, it's not in the requirements file and you'll have to 
install it manually. You might have to compile PyObjC manually too (see gotchas below). Sparkle and 
Advanced Installer, having nothing to do with Python, are also manual installs.

PyQt isn't in the requirements file either (there's no package uploaded on PyPI) and you also have
to install it manually.

Prerequisite gotchas
--------------------

Correctly installing the prerequisites is tricky. Make sure you have at least the version number 
required for each prerequisite.

If you didn't use mercurial to download this source, you probably have an incomplete source folder!
External projects (hscommon, qtlib, cocoalib) need to be at the root of the dupeGuru project folder.
You'll have to download those separately. Or use mercurial, it's much easier.

As far as I can tell, you don't *have* to compile/install everything manually and you can normally
use `easy_install` to install python dependencies. However, be aware that compiling/installing
manually from the repositories of each project is what I personally do, so if you hit a snag 
somewhere, you might want to try the manual way.

PyObjC's website is badly outdated. Also, as far as I can tell, the package installable with
`easy_install` has good chances of not working. Your best bet is to download the latest tagged
version from the repository and compile it from source.

Also, on OS X, don't try to use the built-in python 2.x to install Sphinx on (the only pre-requisite
that doesn't run on python 3 yet). There's some weird error popping up when dupeGuru tries to build 
its help file. Install your own framework version of python 2.7, and then install Sphinx on that. 
When Sphinx supports Python 3, things will be easier because you'll be able to install sphinx on the 
same Python version you build dupeGuru with.

Another one on OS X: I wouldn't use macports/fink/whatever. Whenever I tried using those, I always 
ended up with problems.

dupeGuru can be built with XCode 4 (until support for 10.5 is dropped, xcode 3 and xcode 4 projects
have to be maintained in parallel though). You build it through `build.py`, like you'd normally do
but for dupeGuru PE, make sure that you installed the latest version of macholib because there was a
10.7 related bug that was fixed recently. Right now, the fix hasn't even been released yet so you 
have to install directly from the repo ( http://bitbucket.org/ronaldoussoren/macholib ). The fix
in question is at http://bitbucket.org/ronaldoussoren/macholib/changeset/4ab0de0f5b60

Whenever you have a problem, always double-check that you're running the correct python version. 
You'll probably have to tweak your $PATH.

Building dupeGuru
=================

First, make sure you meet the dependencies listed in the section above. Then you need to configure your build with:

	python configure.py
	
If you want, you can specify a UI to use with the `--ui` option. So, if you want to build dupeGuru with Qt on OS X, then you have to type `python configure.py --ui=qt`. You can also use the `--dev` flag to indicate a dev build (it will build `dg_cocoa.plugin` in alias mode and use the "dev" config in XCode).

Then, just build the thing and then run it with:

	python build.py
	python run.py

If you want to create ready-to-upload package, run:

	python package.py