Commit 76d5d40b authored by Nicolas Boulenguez's avatar Nicolas Boulenguez

Import repackaged 1.4.4.

parent 3b4c31d7
......@@ -22,6 +22,7 @@ Copyright (C) 2014 Joseph Wang <https://sourceforge.net/u/drjoe/profile/)>
Copyright (C) 2014 Tom Monaco <http://www.thomasmonaco.com/>
Copyright (C) 2014 Manab Chetia <manab.chetia@outlook.com>
Copyright (C) 2015 Nicola (https://sourceforge.net/u/swisscarbon/profile/)
Copyright (C) 2016 Roger (rogerdc@gmail.com)
Files under taskcoachlib/thirdparty are, well, third party. They come
with their own license. They may include modifications from the
......
......@@ -45,6 +45,20 @@ hack zope.interface (a Twisted dependency) as described here:
http://stackoverflow.com/questions/7816799/getting-py2exe-to-work-with-zope-interface
Starting with 1.4.4 you'll also need python-igraph. Binaries are
available for Windows, but installing this on OSX is a bit
difficult. The best way is probably to install the C core using Brew,
and then the Python extension using pip:
brew install gcc
brew tap homebrew/science
brew install --use-gcc --universal igraph
sudo pip install python-igraph
Note that --universal is needed because wxWidgets 2.x is 32-bits only;
--use-gcc is needed because of a bug in recent versions of the XCode
command-line tools, which make the link fail.
--- Preparation -----------------------------------------------------
Task Coach needs a few generated files, run the following command
......
......@@ -77,12 +77,14 @@ sdist_ubuntu: sdist_linux
cp dist/TaskCoach-$(TCVERSION).tar.gz dist/taskcoach_$(TCVERSION)-0ubuntu14~trusty.tar.gz
cp dist/TaskCoach-$(TCVERSION).tar.gz dist/taskcoach_$(TCVERSION)-0ubuntu15~vivid.tar.gz
cp dist/TaskCoach-$(TCVERSION).tar.gz dist/taskcoach_$(TCVERSION)-0ubuntu15~wily.tar.gz
cp dist/TaskCoach-$(TCVERSION).tar.gz dist/taskcoach_$(TCVERSION)-0ubuntu16~xenial.tar.gz
cp dist/TaskCoach-$(TCVERSION).tar.gz dist/taskcoach_$(TCVERSION)-0ubuntu18~bionic.tar.gz
sdist_raw:
mkdir -p dist
cp -a . ../tmp-sdist
cd ../tmp-sdist; make nuke; find . -name ".svn" | xargs -d '\n' rm -rf
mv ../tmp-sdist dist/TaskCoach-$(TCVERSION)
cp -a . ../../tmp-sdist
cd ../../tmp-sdist; make nuke; find . -name ".hg" | xargs -d '\n' rm -rf
mv ../../tmp-sdist dist/TaskCoach-$(TCVERSION)
cd dist; tar czf TaskCoach-$(TCVERSION)-raw.tgz TaskCoach-$(TCVERSION); rm -rf TaskCoach-$(TCVERSION)
dist/TaskCoach-$(TCVERSION).tar.gz:
......@@ -119,12 +121,18 @@ ubuntu: sdist_ubuntu
mv build build-vivid
LC_ALL=C $(PYTHON) pymake.py bdist_ubuntu wily 15 --sdist=dist/taskcoach_$(TCVERSION)-0ubuntu15~wily.tar.gz
mv build build-wily
LC_ALL=C $(PYTHON) pymake.py bdist_ubuntu xenial 16 --sdist=dist/taskcoach_$(TCVERSION)-0ubuntu16~xenial.tar.gz
mv build build-xenial
LC_ALL=C $(PYTHON) pymake.py bdist_ubuntu bionic 18 --sdist=dist/taskcoach_$(TCVERSION)-0ubuntu18~bionic.tar.gz
mv build build-bionic
ppa_sign: ubuntu
cd build-precise; debsign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu12~precise-1_source.changes
cd build-trusty; debsign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu14~trusty-1_source.changes
cd build-vivid; debsign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu15~vivid-1_source.changes
cd build-wily; debsign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu15~wily-1_source.changes
cd build-precise; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu12~precise-1_source.changes
cd build-trusty; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu14~trusty-1_source.changes
cd build-vivid; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu15~vivid-1_source.changes
cd build-wily; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu15~wily-1_source.changes
cd build-xenial; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu16~xenial-1_source.changes
cd build-bionic; debsign --re-sign -k0x$(PGPID) taskcoach_$(TCVERSION)-0ubuntu18~bionic-1_source.changes
# Split PPA by version because the upload has a tendency to fail so the buildbot must retry
......@@ -140,6 +148,12 @@ ppa_rel_vivid:
ppa_rel_wily:
cd build-wily; dput ppa:taskcoach-developers/release-snapshot taskcoach_$(TCVERSION)-0ubuntu15~wily-1_source.changes
ppa_rel_xenial:
cd build-xenial; dput ppa:taskcoach-developers/release-snapshot taskcoach_$(TCVERSION)-0ubuntu16~xenial-1_source.changes
ppa_rel_bionic:
cd build-bionic; dput ppa:taskcoach-developers/release-snapshot taskcoach_$(TCVERSION)-0ubuntu18~bionic-1_source.changes
ppa_relnext_precise:
cd build-precise; dput ppa:taskcoach-developers/nextrelease-snapshot taskcoach_$(TCVERSION)-0ubuntu12~precise-1_source.changes
......@@ -152,6 +166,12 @@ ppa_relnext_vivid:
ppa_relnext_wily:
cd build-wily; dput ppa:taskcoach-developers/nextrelease-snapshot taskcoach_$(TCVERSION)-0ubuntu15~wily-1_source.changes
ppa_relnext_xenial:
cd build-xenial; dput ppa:taskcoach-developers/nextrelease-snapshot taskcoach_$(TCVERSION)-0ubuntu16~xenial-1_source.changes
ppa_relnext_bionic:
cd build-bionic; dput ppa:taskcoach-developers/nextrelease-snapshot taskcoach_$(TCVERSION)-0ubuntu18~bionic-1_source.changes
ppa_release_precise:
cd build-precise; dput ppa:taskcoach-developers/ppa taskcoach_$(TCVERSION)-0ubuntu12~precise-1_source.changes
......@@ -164,6 +184,12 @@ ppa_release_vivid:
ppa_release_wily:
cd build-wily; dput ppa:taskcoach-developers/ppa taskcoach_$(TCVERSION)-0ubuntu15~wily-1_source.changes
ppa_release_xenial:
cd build-xenial; dput ppa:taskcoach-developers/ppa taskcoach_$(TCVERSION)-0ubuntu16~xenial-1_source.changes
ppa_release_bionic:
cd build-bionic; dput ppa:taskcoach-developers/ppa taskcoach_$(TCVERSION)-0ubuntu18~bionic-1_source.changes
app: prepare
$(PYTHON) pymake.py py2app
chmod 644 "build/Task Coach/TaskCoach.app/Contents/Resources/taskcoach.py"
......@@ -180,7 +206,9 @@ dmgbase:
dmg: dmg-goodies dmgbase
dmg-signed: dmg-goodies
codesign -f -s "Developer ID Application" -r='designated => certificate leaf[field.1.2.840.113635.100.6.1.13] and identifier "org.pythonmac.unspecified.TaskCoach"' "build/Task Coach/TaskCoach.app"
for target in Contents/Frameworks/*.dylib Contents/Frameworks/Python.framework Contents/MacOS/python .; do \
codesign -f --verify --verbose --sign "Mac Developer:" --entitlements TaskCoach.entitlements "build/Task Coach/TaskCoach.app/$$target"; \
done
make dmgbase
winpenpack: py2exe
......@@ -295,4 +323,4 @@ reallyclean:
rm -rf $(CLEANFILES) $(REALLYCLEANFILES)
nuke:
$(PYTHON) nuke.py
hg purge --all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key> <false />
</dict>
</plist>
......@@ -9,7 +9,7 @@
<summary>Your Friendly Task Manager</summary>
<summary xml:lang="fr">Your Friendly Task Manager</summary>
<description>
<p>Task Coach is an open source todo manager to manager personal tasks and todo lists. It supports composite tasks, i.e. tasks within tasks. In addition, Task Coach allows you to categorize your tasks, track efforts against a budget per task, and much more. Task Coach is available for Windows, Mac OS X, BSD, Linux, iPhone and iPad.</p>
<p>Task Coach is an open source todo manager to manage personal tasks and todo lists. It supports composite tasks, i.e. tasks within tasks. In addition, Task Coach allows you to categorize your tasks, track efforts against a budget per task, and much more. Task Coach is available for Windows, Mac OS X, BSD, Linux, iPhone and iPad.</p>
<p>Your database may be synchronized across these platforms. If espeak is installed, reminders can be spoken.</p>
<p xml:lang="fr">Task Coach est un gestionnaire de tâches libre pour gérer vos tâches et listes de choses à faire. Il supporte les tâches composites, càd les tâches faisant partie d'une autre. De plus, Task Coach vous permet de catégoriser vos tâches, suivre le temps passé par rapport à un budget associé à chaque tâche, et bien plus. Task Coach est disponible pour Windows, Mac OS X, BSD, Linux, iPhone et iPad.</p>
<p xml:lang="fr">Votre base de données peut être synchronisée à travers toutes ces plate-formes. Si espeak est installé, les rappels peuvent être énoncés.</p>
......@@ -19,5 +19,12 @@
<screenshot width="1280" height="748">http://www.taskcoach.org/screenshots/Appdata-02.png</screenshot>
</screenshots>
<url type="homepage">http://www.taskcoach.org/</url>
<url type="bugtracker">http://sourceforge.net/p/taskcoach/bugs</url>
<url type="faq">https://answers.launchpad.net/taskcoach/+faqs</url>
<url type="help">http://taskcoach.wikispaces.com/Task+Coach+Manual</url>
<url type="donation">http://www.taskcoach.org/givesupport.html</url>
<provides>
<binary>taskcoach.py</binary>
</provides>
<updatecontact>developers@taskcoach.org</updatecontact>
</application>
......@@ -34,6 +34,7 @@ BuildArch: noarch
Requires: python >= %(pythonversion)s
Requires: wxPython >= %(wxpythonversionnumber)s
Requires: python-twisted >= %(twistedversionnumber)s
Requires: python-igraph >= %(igraphversionnumber)s
# Depend on libXScrnSaver for libXss
Requires: libXScrnSaver >= 1.2.0
......
......@@ -33,6 +33,7 @@ BuildArch: noarch
Requires: python >= %(pythonversion)s
Requires: python-wxGTK >= %(wxpythonversionnumber)s
Requires: python-twisted >= %(twistedversionnumber)s
Requires: python-igraph >= %(igraphversionnumber)s
# Must have setuptools to build the package
BuildRequires: python-setuptools
......
......@@ -19,14 +19,14 @@
c = BuildmasterConfig = {}
BASEURL = 'https://svn.code.sf.net/p/taskcoach/code/'
REPOURL = 'http://hg.code.sf.net/p/taskcoach/repo'
PASSWORD = file('.passwd', 'rb').readlines()[0].strip()
USERPASSWORD = file('.userpasswd', 'rb').readlines()[0].strip()
# Warning: put release branch first.
BRANCHES = [
('Release1_3_Branch', 'LastRelease', 'rel'),
('Release1_4_Branch', 'LastRelease', 'rel'),
('trunk', 'Trunk', 'trunk'),
]
......@@ -54,25 +54,24 @@ c['slavePortnum'] = 9989
#from buildbot.changes.pb import PBChangeSource
#c['change_source'] = PBChangeSource()
from buildbot.changes.svnpoller import SVNPoller, split_file_branches
c['change_source'] = SVNPoller(BASEURL,
pollinterval=10*60,
split_file=split_file_branches)
from buildbot.changes.hgpoller import HgPoller
c['change_source'] = []
####### SCHEDULERS
from buildbot.scheduler import Scheduler, Triggerable
from buildbot.scheduler import Triggerable
from buildbot.schedulers.basic import SingleBranchScheduler
c['schedulers'] = []
forceBuilders = ['Release']
for branchName, longName, shortName in BRANCHES:
branch = None if branchName == 'trunk' else 'branches/%s' % branchName
branch = None if branchName == 'trunk' else branchName
for platform in ['Win32', 'Ubuntu10', 'Fedora14', 'OpenSuse', 'MacOS']:
c['schedulers'].append(Scheduler(name='%s%s' % (longName, platform),
branch=branch,
treeStableTimer=0,
builderNames=['%s-%s' % (platform.lower(), shortName)]))
c['schedulers'].append(SingleBranchScheduler(name='%s%s' % (longName, platform),
branch=branch,
treeStableTimer=0,
builderNames=['%s-%s' % (platform.lower(), shortName)]))
forceBuilders.append('%s-%s' % (platform.lower(), shortName))
# Release schedulers
......@@ -94,8 +93,8 @@ import tcbuild
reload(tcbuild)
from buildbot.process import factory
from buildbot.steps.source import SVN
from buildbot.steps.shell import Compile
from buildbot.steps.source import Mercurial
from buildbot.steps.shell import Compile, SetPropertyFromCommand
c['builders'] = []
......@@ -120,6 +119,7 @@ c['builders'] = []
def addCommonStartSteps(f, skipUnitTests=False, skipIntegrationTests=False, **kwargs):
f.addStep(tcbuild.Revert(**kwargs))
f.addStep(tcbuild.Cleanup(**kwargs))
f.addStep(SetPropertyFromCommand(command='hg identify -n', property='got_revision_number'))
f.addStep(tcbuild.Revision(**kwargs))
if not skipUnitTests:
f.addStep(tcbuild.UnitTests(**kwargs))
......@@ -140,16 +140,23 @@ c['builders'].append(dict(name='Release', slavename='Release',
builddir='release', factory=f))
for branchName, longName, shortName in BRANCHES:
svnargs=dict(svnurl=BASEURL + 'trunk') if branchName == 'trunk' else dict(baseURL=BASEURL)
svnargs['retry'] = (30, 5)
hgargs = dict(repourl=REPOURL, branchType='inrepo')
workdir = 'build/taskcoach'
branch = 'default' if branchName == 'trunk' else branchName
source = HgPoller(REPOURL,
pollinterval=10*60,
workdir='hgpoller-%s' % branch,
branch=branch)
source.setName('poller-%s' % branch)
c['change_source'].append(source)
# Win32
f = factory.BuildFactory()
f.addStep(SVN(**svnargs))
f.addStep(Mercurial(**hgargs))
addCommonStartSteps(f, workdir=workdir, skipUnitTests=True)
f.addStep(tcbuild.BuildSourceZip(workdir=workdir))
f.addStep(tcbuild.UploadSourceZip(workdir=workdir))
......@@ -171,8 +178,8 @@ for branchName, longName, shortName in BRANCHES:
f = factory.BuildFactory()
f.addStep(SVN(**svnargs))
addCommonStartSteps(f, workdir=workdir)
f.addStep(Mercurial(**hgargs))
addCommonStartSteps(f, workdir=workdir, skipUnitTests=True)
if shortName == 'rel':
f.addStep(tcbuild.LanguageTests(workdir=workdir))
f.addStep(tcbuild.Epydoc(workdir=workdir))
......@@ -192,8 +199,8 @@ for branchName, longName, shortName in BRANCHES:
f.addStep(tcbuild.PPA(name='relnext', workdir=workdir))
f.addStep(tcbuild.PylintStep(workdir=workdir))
f.addStep(tcbuild.PylintUploadStep(workdir=workdir))
f.addStep(tcbuild.Coverage(workdir=workdir))
f.addStep(tcbuild.UploadCoverage(workdir=workdir))
## f.addStep(tcbuild.Coverage(workdir=workdir))
## f.addStep(tcbuild.UploadCoverage(workdir=workdir))
addCommonEndSteps(f, workdir=workdir)
c['builders'].append(dict(name='ubuntu10-%s' % shortName,
......@@ -205,7 +212,7 @@ for branchName, longName, shortName in BRANCHES:
f = factory.BuildFactory()
f.addStep(SVN(**svnargs))
f.addStep(Mercurial(**hgargs))
addCommonStartSteps(f, workdir=workdir)
f.addStep(tcbuild.BuildRPM(workdir=workdir))
f.addStep(tcbuild.UploadRPM(workdir=workdir))
......@@ -228,7 +235,7 @@ for branchName, longName, shortName in BRANCHES:
f = factory.BuildFactory()
f.addStep(SVN(**svnargs))
f.addStep(Mercurial(**hgargs))
addCommonStartSteps(f, skipUnitTests=True, skipIntegrationTests=True, workdir=workdir)
f.addStep(tcbuild.BuildOpenSuse(workdir=workdir))
f.addStep(tcbuild.UploadOpenSuse(workdir=workdir))
......@@ -242,7 +249,7 @@ for branchName, longName, shortName in BRANCHES:
f = factory.BuildFactory()
f.addStep(SVN(**svnargs))
f.addStep(Mercurial(**hgargs))
addCommonStartSteps(f, skipUnitTests=True, skipIntegrationTests=True, workdir=workdir)
f.addStep(tcbuild.BuildDMG(workdir=workdir))
f.addStep(tcbuild.UploadDMG(workdir=workdir))
......@@ -256,7 +263,7 @@ for branchName, longName, shortName in BRANCHES:
####### Release
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.BuildDMG(workdir='build/taskcoach'))
f.addStep(tcbuild.UploadDMG(workdir='build/taskcoach'))
......@@ -265,7 +272,7 @@ c['builders'].append(dict(name='macos-release', slavename='MacOS',
builddir='release-macos', factory=f))
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.BuildEXE(workdir='build/taskcoach'))
f.addStep(tcbuild.UploadEXE(workdir='build/taskcoach'))
......@@ -280,7 +287,7 @@ c['builders'].append(dict(name='windows-release', slavename='WinXPSP3',
builddir='release-windows', factory=f))
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.BuildDEB(workdir='build/taskcoach'))
f.addStep(tcbuild.UploadDEB(workdir='build/taskcoach'))
......@@ -296,7 +303,7 @@ c['builders'].append(dict(name='ubuntu10-release', slavename='Ubuntu10',
builddir='release-ubuntu10', factory=f))
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.BuildRPM(workdir='build/taskcoach'))
f.addStep(tcbuild.UploadRPM(workdir='build/taskcoach'))
......@@ -311,7 +318,7 @@ c['builders'].append(dict(name='fedora14-release', slavename='Fedora14',
builddir='release-fedora14', factory=f))
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.BuildOpenSuse(workdir='build/taskcoach'))
f.addStep(tcbuild.UploadOpenSuse(workdir='build/taskcoach'))
......@@ -320,7 +327,7 @@ c['builders'].append(dict(name='opensuse-release', slavename='OpenSuse',
builddir='release-opensuse', factory=f))
f = factory.BuildFactory()
f.addStep(SVN(baseURL=BASEURL, defaultBranch='branches/%s' % BRANCHES[0][0], retry=(30, 5)))
f.addStep(Mercurial(repourl=REPOURL, defaultBranch=BRANCHES[0][0], branchType='inrepo'))
f.addStep(tcbuild.Cleanup(workdir='build/taskcoach'))
f.addStep(tcbuild.PPA(workdir='build/taskcoach', name='release'))
......@@ -366,4 +373,4 @@ c['user_managers'].append(manual.CommandlineUserManager(username="taskcoach",
c['projectName'] = "TaskCoach"
c['projectURL'] = "http://www.taskcoach.org/"
c['buildbotURL'] = "http://www.fraca7.net:8010/"
c['buildbotURL'] = "http://jeromelaheurte.net:8010/"
......@@ -45,7 +45,7 @@ class Revert(Compile):
name = 'Revert'
description = ['Reverting', 'locally', 'modified', 'files']
descriptionDone = ['Local', 'changes', 'reverted']
command = ['svn', 'revert', '-R', '.']
command = ['hg', 'revert', '.']
class Cleanup(Compile):
......@@ -67,7 +67,7 @@ class Revision(Compile):
name = 'Revision'
description = ['Generating', 'revision', 'file']
descriptionDone = ['Revision', 'file', 'generated']
command = ['make', 'revision', WithProperties('TCREV=%s', 'got_revision')]
command = ['make', 'revision', WithProperties('TCREV=%s', 'got_revision_number')]
#==============================================================================
......@@ -135,7 +135,7 @@ class Coverage(Compile):
Compile.createSummary(self, log)
self.addURL('coverage',
'http://www.fraca7.net/TaskCoach-coverage/%s/index.html' % (self.getProperty('buildername')))
'http://jeromelaheurte.net/TaskCoach-coverage/%s/index.html' % (self.getProperty('buildername')))
class UploadCoverage(DirectoryUpload):
......@@ -163,7 +163,7 @@ class UploadDoc(DirectoryUpload):
DirectoryUpload.start(self)
self.addURL('Documentation',
'http://www.fraca7.net/TaskCoach-doc/%s/index.html' % (self.getProperty('buildername')))
'http://jeromelaheurte.net/TaskCoach-doc/%s/index.html' % (self.getProperty('buildername')))
......@@ -181,7 +181,7 @@ class DistCompile(Compile):
if self.getProperty('release'):
self.command = ['make', self.target or self.name]
else:
self.command = ['make', self.target or self.name, 'TCREV=%s' % self.getProperty('got_revision')]
self.command = ['make', self.target or self.name, 'TCREV=%s' % self.getProperty('got_revision_number')]
Compile.start(self)
......@@ -210,7 +210,7 @@ class DistCompile(Compile):
class UploadBase(FileUpload):
def __init__(self, **kwargs):
kwargs['slavesrc'] = WithProperties('%s', 'filename')
kwargs['masterdest'] = WithProperties('/var/www/TaskCoach-packages/%s/%s', 'branch', 'basefilename')
kwargs['masterdest'] = WithProperties('/var/www/TaskCoach-packages/branches/%s/%s', 'branch', 'basefilename')
kwargs['mode'] = 0644
FileUpload.__init__(self, **kwargs)
......@@ -221,8 +221,8 @@ class UploadBase(FileUpload):
FileUpload.start(self)
if not self.getProperty('release'):
url = 'http://www.fraca7.net/TaskCoach-packages/%s/%s' % (self.getProperty('branch') or '',
self.getProperty('basefilename'))
url = 'http://jeromelaheurte.net/TaskCoach-packages/branches/%s/%s' % (self.getProperty('branch') or '',
self.getProperty('basefilename'))
self.addURL('Download', url)
......@@ -230,7 +230,7 @@ class UploadBase(FileUpload):
class UploadChangelog(FileUpload):
def __init__(self, **kwargs):
kwargs['slavesrc'] = 'changelog_content'
kwargs['masterdest'] = WithProperties('/var/www/TaskCoach-packages/%s/changelog_content', 'branch')
kwargs['masterdest'] = WithProperties('/var/www/TaskCoach-packages/branches/%s/changelog_content', 'branch')
kwargs['mode'] = 0644
FileUpload.__init__(self, **kwargs)
......@@ -340,6 +340,11 @@ class BuildDEB(DistCompile):
description = ['Generating', 'Debian', 'package']
descriptionDone = ['Debian', 'package']
def __init__(self, **kwargs):
# Avoid having the virtualenv bin directory in path, it messes up things
kwargs['env'] = {'PATH': '/bin:/usr/bin:/usr/local/bin'}
super(DistCompile, self).__init__(**kwargs)
class BuildUbuntu(BuildDEB):
filename_rx = re.compile(r'^moving build/(taskcoach_.*_all)\.deb')
......@@ -440,7 +445,7 @@ class ZipReleaseStep(MasterShellCommand):
def start(self):
MasterShellCommand.start(self)
self.addURL('Download release', 'http://www.fraca7.net/TaskCoach-packages/release/release.zip')
self.addURL('Download release', 'http://jeromelaheurte.net/TaskCoach-packages/release/release.zip')
# Pylint
......@@ -461,4 +466,4 @@ class PylintUploadStep(FileUpload):
def start(self):
FileUpload.start(self)
self.addURL('See', 'http://www.fraca7.net/pylint-%s.html' % self.getProperty('buildername'))
self.addURL('See', 'http://jeromelaheurte.net/pylint-%s.html' % self.getProperty('buildername'))
......@@ -22,10 +22,10 @@
{% set item_class=cycler('alt', '') %}
<li class="{{ item_class.next() }}"><a
href="http://www.fraca7.net/TaskCoach-packages/latest_bugfixes.py">Latest
href="http://jeromelaheurte.net/TaskCoach-packages/latest_bugfixes.py">Latest
bugfix packages</a>.</li>
<li class="{{ item_class.next() }}"><a href="http://www.fraca7.net/TaskCoach-packages/latest.py">All
<li class="{{ item_class.next() }}"><a href="http://jeromelaheurte.net/TaskCoach-packages/latest.py">All
latest packages</a> grouped by branch.</li>
<li class="{{ item_class.next() }}">The <a href="waterfall">Waterfall Display</a> will give you a
......
......@@ -3,7 +3,7 @@ from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'/home/jerome/Buildslave'
host = '192.168.1.2'
host = 'jeromelaheurte.net'
port = 9989
slavename = 'Fedora14'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -3,7 +3,7 @@ from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'/Users/fraca7/Buildslave'
buildmaster_host = '192.168.1.2'
buildmaster_host = 'jeromelaheurte.net'
port = 9989
slavename = 'MacOS'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -3,7 +3,7 @@ from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'/home/jerome/Buildslave'
host = '192.168.1.2'
host = 'jeromelaheurte.net'
port = 9989
slavename = 'OpenSuse'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -3,7 +3,7 @@ from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'/home/jerome/Buildslave_Release'
host = '192.168.1.2'
host = 'jeromelaheurte.net'
port = 9989
slavename = 'Release'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -2,8 +2,8 @@
from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'/home/jerome/Buildslave_Ubuntu10'
host = '192.168.1.2'
basedir = '.'
host = 'jeromelaheurte.net'
port = 9989
slavename = 'Ubuntu10'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -3,7 +3,7 @@ from twisted.application import service
from buildslave.bot import BuildSlave
basedir = r'c:\dev\buildslave'
buildmaster_host = '192.168.1.2'
buildmaster_host = 'jeromelaheurte.net'
port = 9989
slavename = 'WinXPSP3'
passwd = file('.passwd', 'rb').readlines()[0].strip()
......
......@@ -117,7 +117,7 @@ class bdist_deb(Command, object):
if not self.distribution:
self.distribution = 'UNRELEASED'
if not self.wxpythonversion:
self.wxpythonversion = '2.8'
self.wxpythonversion = '3.0'
if not self.twistedversion:
self.twistedversion = '12.1'
if not self.pythonversion:
......@@ -188,7 +188,7 @@ class bdist_deb(Command, object):
def write_debian_files(self):
''' Create the different package files in the debian folder. '''
debian_files = dict(rules=rules, compat='5\n', pycompat='2\n',
debian_files = dict(rules=rules, compat='9\n',
menu=menu, control=control, copyright=self.copyright_contents(),
changelog=changelog)
for filename, contents in debian_files.iteritems():
......@@ -228,14 +228,12 @@ class bdist_deb(Command, object):
rules = '''#!/usr/bin/make -f
DEB_PYTHON_SYSTEM := pysupport
DEB_PYTHON2_MODULE_PACKAGES=taskcoach
include /usr/share/cdbs/1/rules/simple-patchsys.mk
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk
binary-install/taskcoach::
\tdh_desktop
\tdh_icons
'''
......@@ -250,14 +248,13 @@ control = '''Source: %(package)s
Section: %(section)s
Priority: %(priority)s
Maintainer: %(maintainer)s <%(maintainer_email)s>
Build-Depends: cdbs (>= 0.4.43), debhelper (>= 5), python, dpatch
Build-Depends-Indep: python-support (>= 0.5.3)
Standards-Version: 3.7.3
Build-Depends: cdbs (>= 0.4.43), debhelper (>= 5), python, devscripts, dh-python
Standards-Version: 4.1.1
Homepage: %(url)s
Package: %(package)s
Architecture: %(architecture)s
Depends: python (>= %(pythonversion)s), python-wxgtk2.8 (>= %(wxpythonversion)s), python-wxversion, python-twisted (>= %(twistedversion)s), libxss1, ttf-dejavu, xdg-utils
Depends: python (>= %(pythonversion)s), python-wxgtk3.0 (>= %(wxpythonversion)s), python-wxversion, python-twisted (>= %(twistedversion)s), libxss1, ttf-dejavu, xdg-utils, python-igraph
Recommends: python-notify, libgnome2-0, libavahi-compat-libdnssd1, x11-utils
Suggests: python-kde4
Description: %(description)s.
......
......@@ -26,7 +26,7 @@ class bdist_portable_base(Command, object):
''' Base class for bdist commands that create portable distributions. '''
def copy_files(self, src_dir, dest_dir, copy_recursively=False):
if src_dir.endswith('.svn'):
if src_dir.endswith('.hg'):
return
if not os.path.exists(dest_dir):
os.mkdir(dest_dir)
......@@ -50,4 +50,4 @@ class bdist_portable_base(Command, object):
dest_file = file(dest_filename, 'wb')
dest_file.write(contents)
dest_file.close()
\ No newline at end of file
* TaskCoach would not start on Fedora 23 using LXDE. This probably concerns
other distributions as well.
* Reminders would fire randomly or not at all.
* Per-task effort total time consolidation, patch provided by
rogerdc@gmail.com
* Add a viewer for task dependencies based on igraph (contributed by
Matthias Tafelmeier). Not available on all platforms.
* Task Coach now uses Mercurial for version control. This only affects you
if you want to develop or use Task Coach source code.
......@@ -22,6 +22,24 @@ from changetypes import *
releases = [
Release('1.4.4', 'December 2, 2018',
summary='''This is a mixed feature and bugfix release.''',
bugsFixed=[
Bugv2('''TaskCoach would not start on Fedora 23 using LXDE. This probably
concerns other distributions as well.'''),
Bugv2('''Reminders would fire randomly or not at all.'''),
],
featuresAdded=[
Feature('''Per-task effort total time consolidation, patch provided by rogerdc@gmail.com'''),
Feature('''Add a viewer for task dependencies based on igraph (contributed
by Matthias Tafelmeier). Not available on all platforms.'''),
],
dependenciesChanged=[
Dependency('''Task Coach now uses Mercurial for version control. This
only affects you if you want to develop or use Task Coach source code.'''),
],
),
Release('1.4.3', 'January 31, 2016',
summary='''This is a mixed feature and bugfix release.''',
featuresAdded=[
......
......@@ -21,7 +21,7 @@ import os
def visitDir(arg, dirname, names):
try:
names.remove('.svn')
names.remove('.hg')
except:
pass
......
......@@ -170,6 +170,7 @@ iconlist = [
('weather_sunny_icon', 'apps', 'kweather', [16]),
('weather_umbrella_icon', 'apps', 'colors', [16]),
('wrench_icon', 'actions', 'configure', [16, 22, 32]),
('graph_icon', 'apps', 'graph', [16, 22, 32]),
]
icons = {}
......
No preview for this file type
icons.in/taskcoach.png

6.32 KB | W: | H:

icons.in/taskcoach.png

5.25 KB | W: | H:

icons.in/taskcoach.png
icons.in/taskcoach.png
icons.in/taskcoach.png
icons.in/taskcoach.png
  • 2-up
  • Swipe
  • Onion skin
#!/usr/bin/python
'''
Task Coach - Your friendly task manager
Copyright (C) 2004-2016 Task Coach developers <developers@taskcoach.org>
Task Coach 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 3 of the License, or
(at your option) any later version.
Task Coach 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, see <http://www.gnu.org/licenses/>.
'''
import os, shutil
def nuke():
sin, sout = os.popen4('svn st --no-ignore')