2254
Comment:
|
3176
|
Deletions are marked like this. | Additions are marked like this. |
Line 24: | Line 24: |
=== Update the {{{debian/changelog}}} === | === Update the debian/changelog === |
Line 32: | Line 32: |
=== Create {{{get-orig-source}}} target for {{{debian/rules}}} === | === Create get-orig-source target for debian/rules === |
Line 34: | Line 34: |
We are almost done, we need to create the {{{get-orig-source}}} target in {{{debian/rules}}} file. |
We are almost done, we need to create the {{{get-orig-source}}} target in {{{debian/rules}}} file: |
Line 38: | Line 37: |
PACKAGE = checkgmail SRC_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | sed 's/^Version: \(.*\)-.*/\1/') |
PACKAGE = <YOUR PACKAGE NAME> SRC_VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p') |
Line 44: | Line 42: |
.PHONY: get-orig-source | |
Line 45: | Line 44: |
TMPDIR = $(shell mktemp -d) svn export -r $(SVN_REVISION) https://checkgmail.svn.sourceforge.net/svnroot/checkgmail $(TMPDIR)/$(PACKAGE)-$(SRC_VERSION) tar czf $TARBALL -C $TMPDIR $(PACKAGE)-$(SRC_VERSION) |
rm -rf get-orig-source $(TARBALL) mkdir get-orig-source svn export -r $(SVN_REVISION) <UPSTREAM SVN REPOSITORY> get-orig-source/$(PACKAGE)-$(SRC_VERSION) tar czf $(TARBALL) -C get-orig-source $(PACKAGE)-$(SRC_VERSION) rm -rf get-orig-source echo " "$(TARBALL)" created; move it to the right destination to build the package" }}} |
Line 49: | Line 52: |
Some explanations: | |
Line 50: | Line 54: |
* {{{SRC_VERSION}}} take the version from the {{{debian/changelog}}} (that's why you need to modify it at first) * {{{SVN_REVISION}}} extracts the revision from the version (TODO: be smart and field separator must be '+' and '~') * {{{TARBALL}}} is the generated tarball name * some cleanup before running the real "core" * export the code from svn in a subdir under {{{get-orig-source}}}, made by name and version (dash separated) |
|
Line 51: | Line 60: |
}}} | === Notes === * With the needed changes, this can be adapted to other VCS; this is for SVN because I needed for it. * If upstream source code is under autotools, once you have downloaded the source code, you got to run all the commands chain (like autogen.sh and so). |
Line 56: | Line 68: |
* godog and kaeso from #debian-it@OFTC |
I want to describe how to write a nice get-orig-source target for debian/rules in presence of an upstream SVN repository.
Let's first consider that <pkg> is currently in sid with version x.y-z (upstream version = x.y, Debian revision = z).
Choose the right version
There are two differents path here, based on what "version" of the upstream code you're packaging
- the code in the svn is the update for the version x.y but you don't know yet how upstream would call it
- the code in the svn is the preliminary version the new upstream release, be it x.(y+1) or x.y.n
A couple of magic characters you can use in version come in our help here: '~' and '+'; here are how they are interpreted
x.(y+1)-1 or > x.y+foo-1 > x.y-z > x.y~bar-1 x.y.n-1
So, here it is how you have to choose the version number for the svn snapshot:
if x.y-z is in sid and you're packaging the new version "without a name", then go with x.y+svn<rev>-1
if x.y-z is in sid and you're packaging the new version x.(y+1) or x.y.n, then go with x.(y+1)~svn<rev>-1 or x.y.n~svn<rev>-1
Update the debian/changelog
now that you have your new package version what you have to do is:
$ dch -v "<new version>" "New upstream SVN snapshot"
Create get-orig-source target for debian/rules
We are almost done, we need to create the get-orig-source target in debian/rules file:
PACKAGE = <YOUR PACKAGE NAME> SRC_VERSION := $(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p') SVN_REVISION := $(shell echo $(SRC_VERSION) | awk -F"+" '{ print $$2 }' | sed 's/svn//' ) TARBALL = $(PACKAGE)_$(SRC_VERSION).orig.tar.gz .PHONY: get-orig-source get-orig-source: rm -rf get-orig-source $(TARBALL) mkdir get-orig-source svn export -r $(SVN_REVISION) <UPSTREAM SVN REPOSITORY> get-orig-source/$(PACKAGE)-$(SRC_VERSION) tar czf $(TARBALL) -C get-orig-source $(PACKAGE)-$(SRC_VERSION) rm -rf get-orig-source echo " "$(TARBALL)" created; move it to the right destination to build the package"
Some explanations:
SRC_VERSION take the version from the debian/changelog (that's why you need to modify it at first)
SVN_REVISION extracts the revision from the version (TODO: be smart and field separator must be '+' and '~')
TARBALL is the generated tarball name
- some cleanup before running the real "core"
export the code from svn in a subdir under get-orig-source, made by name and version (dash separated)
Notes
- With the needed changes, this can be adapted to other VCS; this is for SVN because I needed for it.
- If upstream source code is under autotools, once you have downloaded the source code, you got to run all the commands chain (like autogen.sh and so).
Thanks to
- fatal_ and themill from #debian-mentors@OFTC
- godog and kaeso from #debian-it@OFTC
http://lists.debian.org/debian-mentors/2008/06/msg00364.html
http://lists.alioth.debian.org/pipermail/pkg-multimedia-commits/2008-March/000649.html