diff options
| author | Paul Buetow <paul@buetow.org> | 2013-03-22 03:45:09 +0100 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2013-03-22 03:45:09 +0100 |
| commit | bdd180bb7b3eca8622016067058c023cd11c0b5e (patch) | |
| tree | 19c3da37e523066cf53e68da34e393bda52fa822 | |
initial version of the template0.0.0.0
| -rw-r--r-- | .version | 1 | ||||
| -rw-r--r-- | Makefile | 56 | ||||
| -rw-r--r-- | bin/.gitignore | 4 | ||||
| -rw-r--r-- | debian/README | 7 | ||||
| -rw-r--r-- | debian/changelog | 5 | ||||
| -rw-r--r-- | debian/compat | 1 | ||||
| -rw-r--r-- | debian/control | 15 | ||||
| -rw-r--r-- | debian/copyright | 30 | ||||
| -rw-r--r-- | debian/files | 1 | ||||
| -rw-r--r-- | debian/foo.manpages | 1 | ||||
| -rw-r--r-- | debian/foo.substvars | 1 | ||||
| -rwxr-xr-x | debian/rules | 13 | ||||
| -rw-r--r-- | docs/foo.1 | 265 | ||||
| -rw-r--r-- | docs/foo.pod | 113 | ||||
| -rw-r--r-- | docs/foo.txt | 113 | ||||
| -rwxr-xr-x | src/foo | 3 |
16 files changed, 629 insertions, 0 deletions
diff --git a/.version b/.version new file mode 100644 index 0000000..feac6c6 --- /dev/null +++ b/.version @@ -0,0 +1 @@ +1.0.0.4+nmu2 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..42b4fd6 --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ +NAME=foo +all: version documentation build + +# THIS IS NEEDED BY THE DEBIAN TOOLS + +# Builds the project. Since this is only a fake project, it just copies a script. +build: + cp -p ./src/$(NAME) bin/$(NAME) + echo "echo This is version $$(cat .version)" >> bin/$(NAME) + +# 'install' installes a fake-root, which will be used to build the Debian package +# $DESTDIR is actually set by the Debian tools. +install: + test ! -d $(DESTDIR)/usr/bin && mkdir -p $(DESTDIR)/usr/bin || exit 0 + test ! -d $(DESTDIR)/usr/share/$(NAME) && mkdir -p $(DESTDIR)/usr/share/$(NAME) || exit 0 + cp ./bin/* $(DESTDIR)/usr/bin + #cp -r ./lib $(DESTDIR)/usr/share/$(NAME)/lib + +deinstall: + test ! -z "$(DESTDIR)" && test -f $(DESTDIR)/usr/bin/$(NAME) && rm $(DESTDIR)/usr/bin/$(NAME) || exit 0 + test ! -z "$(DESTDIR)/usr/share/$(NAME)" && -d $(DESTDIR)/usr/share/$(NAME) && rm -r $(DESTDIR)/usr/share/$(NAME) || exit 0 + +clean: + rm bin/* + +# ADDITIONAL RULES: + +# Parses the version out of the Debian changelog +version: + cut -d' ' -f2 debian/changelog | head -n 1 | sed 's/(//;s/)//' > .version + +# Builds the documentation into a manpage +documentation: + pod2man --release="$(NAME) $$(cat .version)" \ + --center="User Commands" ./docs/$(NAME).pod > ./docs/$(NAME).1 + pod2text ./docs/$(NAME).pod > ./docs/$(NAME).txt + +# Build a debian package (don't sign it, modify the arguments if you want to sign it) +deb: all + dpkg-buildpackage -uc -us + +dch: + dch -i + +release: dch deb + bash -c "git tag $$(cat .version)" + git push --tags + git commit -a -m 'New release' + git push origin master + +clean-top: + rm ../$(NAME)_*.tar.gz + rm ../$(NAME)_*.dsc + rm ../$(NAME)_*.changes + rm ../$(NAME)_*.deb + diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..5e7d273 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore diff --git a/debian/README b/debian/README new file mode 100644 index 0000000..8edd461 --- /dev/null +++ b/debian/README @@ -0,0 +1,7 @@ +The Debian Package foo +---------------------------- + +This is just a humble go project. Not sure if everything meets the debian +policy though. Alt least the resulting debian package passes a pedantic lintian + + -- Paul Buetow <paul@buetow.org> Wed, 02 Jan 2013 15:23:53 +0200 diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..0521464 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +foo (0.0.0.0) stable; urgency=low + + * Initial version of the template + + -- Paul Buetow <paul@buetow.org> Fri, 04 Jan 2013 07:53:32 +0100 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..45a4fb7 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +8 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..1a33eb7 --- /dev/null +++ b/debian/control @@ -0,0 +1,15 @@ +Source: foo +Section: utils +Priority: optional +Maintainer: Paul Buetow <paul@buetow.org> +Build-Depends: +Standards-Version: 3.9.2 +Homepage: https://template.buetow.org +Vcs-Git: git://git.buetow.org/template +Vcs-Browser: http://web.buetow.org/git/?p=template.git;a=summary + +Package: foo +Architecture: all +Depends: +Description: Small template package + This is just a template package, which cann print Hello World. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..081a25d --- /dev/null +++ b/debian/copyright @@ -0,0 +1,30 @@ +Format: http://dep.debian.net/deps/dep5 +Upstream-Name: foo +Source: http://template.buetow.org + +Files: * +Copyright: 2012 Paul Buetow <paul@buetow.org> +License: GPL-3.0+ + +Files: debian/* +Copyright: 2012 Paul Buetow <paul@buetow.org> +License: GPL-3.0+ + +License: GPL-3.0+ + This program 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. + . + This package 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/>. + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + + diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..37cd565 --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +foo_1.0.0.4+nmu2_all.deb utils optional diff --git a/debian/foo.manpages b/debian/foo.manpages new file mode 100644 index 0000000..3925962 --- /dev/null +++ b/debian/foo.manpages @@ -0,0 +1 @@ +docs/foo.1 diff --git a/debian/foo.substvars b/debian/foo.substvars new file mode 100644 index 0000000..abd3ebe --- /dev/null +++ b/debian/foo.substvars @@ -0,0 +1 @@ +misc:Depends= diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..b760bee --- /dev/null +++ b/debian/rules @@ -0,0 +1,13 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ diff --git a/docs/foo.1 b/docs/foo.1 new file mode 100644 index 0000000..2f50e67 --- /dev/null +++ b/docs/foo.1 @@ -0,0 +1,265 @@ +.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.ie \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.el \{\ +. de IX +.. +.\} +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "FOO 1" +.TH FOO 1 "2013-01-04" "foo 1.0.0.4+nmu2" "User Commands" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +foo \- A template project +.SH "WTF?" +.IX Header "WTF?" +You may use this project in order to build your own Debian package for your own project. This has been tested with Debian GNU/Linux Squeeze and Debian GNU/Linux Wheezy. +.PP +Feel free to modify any aspects. This project is just an empty example foo. +.PP +Follow these steps: +.SS "Install required packages" +.IX Subsection "Install required packages" +Run the following: +.PP +.Vb 1 +\& sudo aptitude install lintian devscripts dpkg\-dev make perl +.Ve +.PP +Todo: Ensure this are the correct packages. In order to test that I would have to setup a blank Debian system. +.SS "Compile the project" +.IX Subsection "Compile the project" +Go to the to level directory and run +.PP +.Vb 1 +\& make +.Ve +.PP +To test run +.PP +.Vb 1 +\& ./bin/foo +.Ve +.PP +It should print out the version number of the project. +.SS "Create a Debian package" +.IX Subsection "Create a Debian package" +Go to the to level directory and run +.PP +.Vb 1 +\& make deb +.Ve +.PP +It will create the files like: +.PP +.Vb 4 +\& ../foo_0.0.0.0_all.deb +\& ../foo_0.0.0.0.dsc +\& ../foo_0.0.0.0_amd64.changes +\& ../foo_0.0.0.0.tar.gz +.Ve +.PP +It should create a debian package in ../. Check and install it, e.g: +.PP +.Vb 2 +\& lintian \-\-pedantic ../foo_0.0.0.0_all.deb +\& sudo dpkg \-i ../foo_0.0.0.0_all.deb +.Ve +.PP +Run +.PP +.Vb 1 +\& dpkg \-L foo +.Ve +.PP +to see whats in there. You can now run +.PP +.Vb 1 +\& /usr/bin/foo +.Ve +.PP +or for example +.PP +.Vb 1 +\& man foo +.Ve +.SS "Read the Makefile" +.IX Subsection "Read the Makefile" +Read the Makefile in order to understand what's going on. +.SH "Customize" +.IX Header "Customize" +Now, since you understood everything feel free to customize everything the way you want it. E.g.: +.PP +.Vb 1 +\& Don\*(Aqt use POD for documentation but LaTeX +\& +\& Compile a C program +\& +\& Include a ./lib dir, add it to the \*(Aqinstall\*(Aq Makefile rule +\& +\& etc etc. +.Ve +.PP +You should also consider the following: +.SS "Manual page" +.IX Subsection "Manual page" +This template is using \s-1POD\s0 for creating manual pages. Edit ./docs/foo.pod and run +.PP +.Vb 1 +\& make documentation +.Ve +.PP +in order to build ./docs/foo.1. The page will be included in the resulting debian package automatically. You can review the page with +.PP +.Vb 1 +\& man ./docs/foo.1 +.Ve +.SS "Renaming foo into your project name" +.IX Subsection "Renaming foo into your project name" +Rename all files which have *foo* included into your own new package name. You can find them with +.PP +.Vb 1 +\& find . \-name \e*foo\e* +.Ve +.PP +Search all content and rename *foo* into your own new package name. You can find all files with +.PP +.Vb 1 +\& grep \-R foo . | grep \-v .git +.Ve +.SS "Updating ./debian" +.IX Subsection "Updating ./debian" +Edit the following files accordingly to your new project (e.g. with vim): +.PP +.Vb 3 +\& ./debian/control +\& ./debian/copyright +\& ./debian/README +.Ve +.SS "Update changelog" +.IX Subsection "Update changelog" +Go to the to level directory and run +.PP +.Vb 1 +\& dch \-i +.Ve diff --git a/docs/foo.pod b/docs/foo.pod new file mode 100644 index 0000000..c4cadb9 --- /dev/null +++ b/docs/foo.pod @@ -0,0 +1,113 @@ +=head1 NAME + +foo - A template project + +=head1 WTF? + +You may use this project in order to build your own Debian package for your own project. This has been tested with Debian GNU/Linux Squeeze and Debian GNU/Linux Wheezy. + +Feel free to modify any aspects. This project is just an empty example foo. + +Follow these steps: + +=head2 Install required packages + +Run the following: + + sudo aptitude install lintian devscripts dpkg-dev make perl + +Todo: Ensure this are the correct packages. In order to test that I would have to setup a blank Debian system. + +=head2 Compile the project + +Go to the to level directory and run + + make + +To test run + + ./bin/foo + +It should print out the version number of the project. + +=head2 Create a Debian package + +Go to the to level directory and run + + make deb + +It will create the files like: + + ../foo_0.0.0.0_all.deb + ../foo_0.0.0.0.dsc + ../foo_0.0.0.0_amd64.changes + ../foo_0.0.0.0.tar.gz + +It should create a debian package in ../. Check and install it, e.g: + + lintian --pedantic ../foo_0.0.0.0_all.deb + sudo dpkg -i ../foo_0.0.0.0_all.deb + +Run + + dpkg -L foo + +to see whats in there. You can now run + + /usr/bin/foo + +or for example + + man foo + +=head2 Read the Makefile + +Read the Makefile in order to understand what's going on. + +=head1 Customize + +Now, since you understood everything feel free to customize everything the way you want it. E.g.: + + Don't use POD for documentation but LaTeX + + Compile a C program + + Include a ./lib dir, add it to the 'install' Makefile rule + + etc etc. + +You should also consider the following: + +=head2 Manual page + +This template is using POD for creating manual pages. Edit ./docs/foo.pod and run + + make documentation + +in order to build ./docs/foo.1. The page will be included in the resulting debian package automatically. You can review the page with + + man ./docs/foo.1 + +=head2 Renaming foo into your project name + +Rename all files which have *foo* included into your own new package name. You can find them with + + find . -name \*foo\* + +Search all content and rename *foo* into your own new package name. You can find all files with + + grep -R foo . | grep -v .git + +=head2 Updating ./debian + +Edit the following files accordingly to your new project (e.g. with vim): + + ./debian/control + ./debian/copyright + ./debian/README + +=head2 Update changelog + +Go to the to level directory and run + + dch -i diff --git a/docs/foo.txt b/docs/foo.txt new file mode 100644 index 0000000..7f01494 --- /dev/null +++ b/docs/foo.txt @@ -0,0 +1,113 @@ +NAME + foo - A template project + +WTF? + You may use this project in order to build your own Debian package for + your own project. This has been tested with Debian GNU/Linux Squeeze and + Debian GNU/Linux Wheezy. + + Feel free to modify any aspects. This project is just an empty example + foo. + + Follow these steps: + + Install required packages + Run the following: + + sudo aptitude install lintian devscripts dpkg-dev make perl + + Todo: Ensure this are the correct packages. In order to test that I + would have to setup a blank Debian system. + + Compile the project + Go to the to level directory and run + + make + + To test run + + ./bin/foo + + It should print out the version number of the project. + + Create a Debian package + Go to the to level directory and run + + make deb + + It will create the files like: + + ../foo_0.0.0.0_all.deb + ../foo_0.0.0.0.dsc + ../foo_0.0.0.0_amd64.changes + ../foo_0.0.0.0.tar.gz + + It should create a debian package in ../. Check and install it, e.g: + + lintian --pedantic ../foo_0.0.0.0_all.deb + sudo dpkg -i ../foo_0.0.0.0_all.deb + + Run + + dpkg -L foo + + to see whats in there. You can now run + + /usr/bin/foo + + or for example + + man foo + + Read the Makefile + Read the Makefile in order to understand what's going on. + +Customize + Now, since you understood everything feel free to customize everything + the way you want it. E.g.: + + Don't use POD for documentation but LaTeX + + Compile a C program + + Include a ./lib dir, add it to the 'install' Makefile rule + + etc etc. + + You should also consider the following: + + Manual page + This template is using POD for creating manual pages. Edit + ./docs/foo.pod and run + + make documentation + + in order to build ./docs/foo.1. The page will be included in the + resulting debian package automatically. You can review the page with + + man ./docs/foo.1 + + Renaming foo into your project name + Rename all files which have *foo* included into your own new package + name. You can find them with + + find . -name \*foo\* + + Search all content and rename *foo* into your own new package name. You + can find all files with + + grep -R foo . | grep -v .git + + Updating ./debian + Edit the following files accordingly to your new project (e.g. with + vim): + + ./debian/control + ./debian/copyright + ./debian/README + + Update changelog + Go to the to level directory and run + + dch -i + @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "Hello World, I am a fake project" |
