191 lines
4.6 KiB
Markdown
191 lines
4.6 KiB
Markdown
Table of Contents:
|
|
==================
|
|
|
|
- [Branches and Tags:](#branches-and-tags)
|
|
- [Testing:](#testing)
|
|
- [Build Tasks](#build-tasks)
|
|
- [Stable Releases](#stable-releases)
|
|
- [Production Releases](#production-releases)
|
|
- [Updating MacPorts (automatic)](#updating-macports-automatic)
|
|
- [Updating MacPorts (manual)](#updating-macports-manual)
|
|
|
|
Branches and Tags:
|
|
==================
|
|
|
|
There are 3 branches/tags:
|
|
|
|
- **HEAD:** The cutting edge of development.
|
|
- **tag stable:** Stable enough for use by most people.
|
|
- **tag production:** Burned in long enough that we are confident it can be widely adopted.
|
|
|
|
If you are packaging BlackBox for distribution, you should track the *tag production*. You might also want to provide a separate package that tracks *tag stable:* for early adopters.
|
|
|
|
Testing
|
|
=======
|
|
|
|
Tips:
|
|
|
|
* macOS: `brew install gpg pinentry`
|
|
* FreeBSD: `pkg install gpg gmake`
|
|
* CentOS7: `yum install gpg`
|
|
|
|
To run a suite of tests:
|
|
|
|
```
|
|
cd ~/src/github.com/StackExchange/blackbox
|
|
make test
|
|
```
|
|
|
|
FYI: For FreeBSD, use `gmake test`
|
|
|
|
|
|
Build Tasks
|
|
===========
|
|
|
|
Stable Releases
|
|
===============
|
|
|
|
Step 0. Test the software
|
|
|
|
Run this command to run the unit and system tests:
|
|
|
|
```
|
|
make test
|
|
```
|
|
|
|
NOTE: The tests require pinentry-tty. On macOS with NIX this
|
|
can be installed via: `nix-env -i pinentry`
|
|
|
|
Marking the software to be "stable":
|
|
|
|
Step 1. Update CHANGELOG.md
|
|
|
|
Use "git log" to see what has changed and update CHANGELOG.md.
|
|
|
|
For a new release, add:
|
|
|
|
```
|
|
echo Release v1.$(date +%Y%m%d)
|
|
```
|
|
|
|
Commit with:
|
|
|
|
```
|
|
git commit -m'Update CHANGELOG.md' CHANGELOG.md
|
|
```
|
|
|
|
Step 2. Tag it.
|
|
|
|
```
|
|
git pull
|
|
git tag -d stable
|
|
git push origin :stable
|
|
git tag stable
|
|
git push origin tag stable
|
|
```
|
|
|
|
Step 3. Mark your calendar 1 week from today to check to see if this should be promoted to production.
|
|
|
|
Production Releases
|
|
===================
|
|
|
|
If no bugs have been reported a full week after a stable tag has been pushed, mark the release to be "production".
|
|
|
|
```
|
|
git fetch
|
|
git checkout stable
|
|
git tag -d production
|
|
git push origin :production
|
|
git tag production
|
|
git push origin tag production
|
|
R="v1.$(date +%Y%m%d)"
|
|
git tag "$R"
|
|
git push origin tag "$R"
|
|
```
|
|
|
|
Step 4. Get credit!
|
|
|
|
Record the fact that you did this release in your weekly accomplishments file.
|
|
|
|
|
|
|
|
Updating MacPorts (automatic)
|
|
=============================
|
|
|
|
Step 1: Generate the Portfile
|
|
|
|
```
|
|
tools/macports_report_upgrade.sh 1.20150222
|
|
```
|
|
|
|
This script will generate a file called `Portfile-vcs_blackbox.diff` and instructions on how to submit it as a update request.
|
|
|
|
Step 2: Submit the update request.
|
|
|
|
Submit the diff file as a bug as instructed. The instructions should look like this:
|
|
|
|
- PLEASE OPEN A TICKET WITH THIS INFORMATION: https://trac.macports.org/newticket
|
|
- Summary: `vcs_blackbox @1.20150222 Update to latest upstream`
|
|
- Description: `New upstream of vcs_blackbox.
|
|
github.setup and checksums updated.`
|
|
- Type: `update`
|
|
- Component: `ports`
|
|
- Port: `vcs_blackbox`
|
|
- Keywords: `maintainer haspatch`
|
|
- Attach this file: `Portfile-vcs_blackbox.diff`
|
|
|
|
Step 3: Watch for the update to happen.
|
|
|
|
|
|
Updating MacPorts (manual)
|
|
==========================
|
|
|
|
This is the old, manual, procedure. If the automated procedure fails to work, these notes may or may not be helpful.
|
|
|
|
The ultimate result of the script should be the output of `diff -u Portfile.orig Portfile` which is sent as an attachment to MacPorts. The new `Portfile` should have these changes:
|
|
|
|
1. The `github.setup` line should have a new version number.
|
|
2. The `checksums` line(s) should have updated checksums.
|
|
|
|
How to generate the checksums?
|
|
|
|
The easiest way is to to make a Portfile with incorrect checksums, then run `sudo port -v checksum vcs_blackbox` to see what they should have been. Fix the file, and try again until the checksum command works.
|
|
|
|
Next run `port lint vcs_blackbox` and make sure it has no errors.
|
|
|
|
Some useful commands:
|
|
|
|
Change repos in sources.conf:
|
|
|
|
```
|
|
sudo vi /opt/local/etc/macports/sources.conf
|
|
Add this line early in the file:
|
|
file:///var/tmp/ports
|
|
```
|
|
|
|
Add a local repo:
|
|
|
|
```
|
|
fgrep >/dev/null -x 'file:///var/tmp/ports' /opt/local/etc/macports/sources.conf || sudo sed -i -e '1s@^@file:///var/tmp/ports\'$'\n@' /opt/local/etc/macports/sources.conf
|
|
```
|
|
|
|
Remove the local repo:
|
|
|
|
```
|
|
sudo sed -i -e '\@^file:///var/tmp/ports@d' /opt/local/etc/macports/sources.conf
|
|
```
|
|
|
|
Test a Portfile:
|
|
|
|
```
|
|
sudo port uninstall vcs_blackbox
|
|
sudo port clean --all vcs_blackbox
|
|
rm -rf ~/.macports/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/security/vcs_blackbox/
|
|
rm -rf /var/tmp/ports
|
|
mkdir -p /var/tmp/ports/security/vcs_blackbox
|
|
cp Portfile /var/tmp/ports/security/vcs_blackbox
|
|
cd /var/tmp/ports && portindex
|
|
sudo port -v checksum vcs_blackbox
|
|
sudo port install vcs_blackbox
|
|
```
|