mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
280 lines
8.7 KiB
Text
280 lines
8.7 KiB
Text
How to make an OSX package
|
|
--------------------------
|
|
|
|
Note: This is being written from the OSX 10.6 perspective, and may therefore
|
|
contain steps that are different for 10.5, although I don't recall any
|
|
actual differences.
|
|
|
|
|
|
0. Philosophy
|
|
|
|
Only Fredde tags releases. We only make builds from tagged commits. We
|
|
only release builds that build cleanly without errors or warnings. We only
|
|
release builds that pass 100% of the unit tests.
|
|
|
|
|
|
1. Prerequisites
|
|
|
|
You will need an Intel Mac, running OSX 10.5 or later.
|
|
You will need to install the Developer Tools, which are found on your OSX DVD.
|
|
You will need git installed, version 1.5 or later. See http://git-scm.com
|
|
You will need autotools installed. See http://www.gnu.org/software/autoconf
|
|
|
|
2. Get the code
|
|
|
|
2.1 Clone the task git repository. It is important that this is a throwaway
|
|
clone of the repository, because we will do (locally) destructive things
|
|
to it.
|
|
|
|
$ git clone git://tasktools.org/task.git ~/task-package.git
|
|
...
|
|
$ cd ~/task-package.git
|
|
|
|
2.2 Making sure you have the right version of the code. This assumes you are
|
|
building taskwarrior 1.9.2, but any version number is interchangeable.
|
|
Check out the correct branch, and make sure it is sitting at the correct
|
|
commit, via a tag. Note that while 1.9.2 is a branch name, v1.9.2 is a tag
|
|
name.
|
|
|
|
$ git checkout 1.9.2
|
|
$ git reset --hard v1.9.2
|
|
|
|
If there is an error in this step, stop, capture the output, and report the
|
|
errors.
|
|
|
|
3. Build taskwarrior
|
|
|
|
3.1 First build the task binary. Note the "-j 2" tells make to use both cores
|
|
in your dual-core Intel CPU, which means faster compiles. If you own a quad
|
|
core Mac, use "-j 4". If you own a single core Mac, just type "make".
|
|
|
|
$ autoreconf -f
|
|
$ ./configure
|
|
...
|
|
|
|
If any errors are reported, stop, capture the output, and report the errors.
|
|
|
|
$ make -j 2
|
|
|
|
If there are any errors, or there are any warnings generated by the compiler
|
|
stop, capture the output, and report the problem. You'll need to watch as
|
|
it builds.
|
|
|
|
4. Build the test suite
|
|
|
|
4.1 The test suite exists to prove that we do not break taskwarrior features
|
|
from one release to the next. While this is not a perfect solution, it has
|
|
saved us many times from releasing code that is inferior.
|
|
|
|
The first step is to modify the test suite Makefile to remove the Lua line.
|
|
This is because we do not yet have dynamic detection of the Lua library for
|
|
the unit tests.
|
|
|
|
$ cd ~/task-package.git/src/tests
|
|
$ vi Makefile
|
|
|
|
Any text editor will do, but look for this line (line 5):
|
|
|
|
LFLAGS = -L/usr/local/lib -llua
|
|
|
|
and change it to:
|
|
|
|
LFLAGS = -L/usr/local/lib
|
|
|
|
Now build the unit tests:
|
|
|
|
$ make -j 2
|
|
...
|
|
|
|
4.2 Run all the unit tests.
|
|
|
|
$ ./run_all
|
|
Skipping benchmarks
|
|
|
|
Pass: 4241
|
|
Fail: 0
|
|
Skipped: 0
|
|
Runtime: 86
|
|
|
|
The output should look something like this, with 0 failed, and 0 skipped
|
|
tests. If there are any failures or skips, stop and mailed the log file,
|
|
named 'all.log' to Paul & Fredde.
|
|
|
|
5. Assemble the parts
|
|
|
|
5.1 There is a script that copies all the necessary files (binary, man pages
|
|
etc) in the right place, ready for packaging. Run this:
|
|
|
|
$ cd ~/task-package.git/package-config/osx
|
|
$ ./update
|
|
|
|
6. Adjust the package details
|
|
|
|
6.1 Launch the package manager.
|
|
|
|
$ open -a /Developer/Applications/Utilities/PackageManager.app
|
|
|
|
6.2 Close the 'Untitled' window that opens - we will be using a different
|
|
file. Note that PackageManager is still running - it just has no windows.
|
|
|
|
6.3 Using the File -> Open menu, open the file
|
|
|
|
~/task-package.git/package-config/osx/task.pmdoc
|
|
|
|
<figure 1>
|
|
|
|
This is the file from the last time a package was created. It needs some
|
|
adjustments. Start by clicking on the "Taskwarrior x.x.x Distribution" with
|
|
a package icon in the top left part of the window.
|
|
|
|
6.4 Click on the "Configuration" button/tab.
|
|
|
|
- Change the "Title" to "Taskwarrior 1.9.2"
|
|
- Change the "Description" to "Taskwarrior 1.9.2 install for Snow Leopard"
|
|
|
|
<figure 2>
|
|
|
|
6.5 Click on "Edit Interface..."
|
|
|
|
There are 5 radio buttons on the left hand side - we will visit each and
|
|
make changes. Click on "Background", make sure it matches the figure.
|
|
|
|
<figure 3>
|
|
|
|
Click on "Introduction", make sure it matches the figure.
|
|
|
|
<figure 4>
|
|
|
|
Click on "Read Me", and on the right hand side, under "Read Me Panel", click
|
|
on "File" and select the file:
|
|
|
|
/Users/<your-account>/task-package.git/package-config/osx/README.txt
|
|
|
|
<figure 5>
|
|
|
|
Click on "License", and on the right hand side, under "License Panel", click
|
|
on "File" and select the file:
|
|
|
|
/Users/<your-account>/task-package.git/package-config/osx/COPYING.txt
|
|
|
|
<figure 6>
|
|
|
|
Click on "Finish Up", and make sure it matches the figure.
|
|
|
|
<figure 7>
|
|
|
|
Close the Interface Editor window (it saves automatically).
|
|
|
|
6.6 Back in the "task.pmdoc" window, click on the "Requirements" tab/button,
|
|
then click on the "+" button, and add a requirement rule as shown in the
|
|
figure. The minimum system should be 10.5.0 or 10.6.0, depending on which
|
|
package is being built.
|
|
|
|
<figure 8>
|
|
|
|
6.7 Click on the "Actions" tab/button and make sure it matches the figure.
|
|
|
|
<figure 9>
|
|
|
|
6.8 Click on the triangle next to the "local" item in the "Contents" vertical
|
|
bar on the left to expand and show a folder called "local", with the path
|
|
"/usr/local", but click on the "local" next to the blue radio button, not
|
|
the one next to the folder. Then click on the "Configuration" tab/button.
|
|
|
|
- Change the "Choice Name" to "local"
|
|
- Leave the "Identifier" alone - it is automatic
|
|
- Make sure "Selected" and "Enabled" are checked, but "Hidden" is not
|
|
|
|
<figure 10>
|
|
|
|
6.9 Click on the "Requirements" tab/button and make sure it is all blank.
|
|
|
|
<figure 11>
|
|
|
|
6.10 Click on the blue folder on the left, which is labelled "local", and has
|
|
a path of "/usr/local". Click on the "Configuration" tab/button.
|
|
|
|
- Change the "Install" to /Users/<your-account>/task-package.git/package-config/osx/local
|
|
- Make sure the "Destination" is "/usr/local"
|
|
- Make sure "Allow custom location" is checked
|
|
- Make sure the "Package Identifier is "com.beckingham.task192.local.pkg"
|
|
- Make sure the "Package Version" is 1.0. If you needed to make a
|
|
subsequent OSX package, *for the same version of task*, then this number
|
|
would be increased to show OSX that this package supersedes the earlier
|
|
one
|
|
- Make sure "Restart Action" is "None"
|
|
- Make sure "Require admin authentication" is checked
|
|
- Make sure "Package Location" is "Self-Contained"
|
|
|
|
<figure 12>
|
|
|
|
6.11 Click on the "Contents" tab/button.
|
|
|
|
- Click on all the triangles in the "local" folder to expand all directories
|
|
- Make sure "Include root in package is not checked"
|
|
- Click on the "Apply Recommendations" button
|
|
|
|
Make sure it matches the figure.
|
|
|
|
<figure 13>
|
|
|
|
6.12 Click on the "Components" tab/button, make sure it is all blank.
|
|
|
|
6.13 Click on the "Scripts" tab/button, make sure it is all blank.
|
|
|
|
7. Building the package
|
|
|
|
7.1 Click on the "Build" hammer icon to build the package.
|
|
|
|
Provide a filename of "task-1.9.1-sl.pkg" for Snow Leopard (10.6), or
|
|
"task-1.9.2.pkg" for Leopard (10.5), and save it somewhere, for example the
|
|
Desktop.
|
|
|
|
All should succeed. You can click on the "Return" button to end the build
|
|
phase, and you can quit PackageManager, but make sure you save the changes
|
|
you made, because you may need to go through the whole process again, if there
|
|
is an emergency change, or the package is somehow corrupt.
|
|
|
|
<figure 14>
|
|
|
|
8. Test the package
|
|
|
|
8.1 Double-click on the package you just created, and install taskwarrior.
|
|
You should see the README file in the UI, and the COPYING file on another
|
|
page. It should succeed.
|
|
|
|
<figure 14>
|
|
<figure 15>
|
|
<figure 16>
|
|
<figure 17>
|
|
<figure 18>
|
|
<figure 19>
|
|
<figure 20>
|
|
<figure 21>
|
|
|
|
8.2 Run the following commands to test the installation
|
|
|
|
$ /usr/local/bin/task version
|
|
|
|
task 1.9.4 built for darwin
|
|
Copyright (C) 2006 - 2011 P. Beckingham, F. Hernandez.
|
|
|
|
Taskwarrior may be copied only under the terms of the GNU General Public
|
|
License, which may be found in the taskwarrior source kit.
|
|
|
|
Documentation for taskwarrior can be found using 'man task', 'man taskrc',
|
|
'man task-tutorial', 'man task-color', 'man task-faq' or at
|
|
http://taskwarrior.org
|
|
|
|
$ man task
|
|
...
|
|
...
|
|
task 1.9.4 2011-0l-10 task 1.9.4
|
|
|
|
The man page should list 1.9.2 as the version number, but the date will be
|
|
different.
|
|
|
|
9. Email the package to Fredde.
|
|
|
|
---
|
|
|