User:Timothee Flutre/Notebook/Postdoc/2012/11/27

From OpenWetWare

Jump to: navigation, search
Project name Main project page
Previous entry      

How to make a GNU package?

  • find a name for the package, for instance "hello"
  • structure the package directory:
mkdir mypkg; cd mypkg
touch COPYING README INSTALL NEWS AUTHORS ChangeLog
mkdir src build-aux doc tests # you can also add other directories, e.g. lib scripts
  • populate the src/ directory with your code, e.g. hello.cpp
  • retrieve the license, for instance GPLv3:
wget -O COPYING http://www.gnu.org/licenses/gpl-3.0.txt
  • fill the information files, such as README (example), INSTALL (example)...
touch configure.ac Makefile.am src/Makefile.am doc/Makefile.am # and edit these files
autoreconf --install # use autoreconf --force the next times you want re-build configure
./configure # can be followed by --prefix=~/bin, LDFLAGS=-L/usr/local/lib, etc
make
make check # to automatically execute the tests
  • write some documentation in Texinfo:
 cd doc
 wget -O fdl.texi http://cvs.savannah.gnu.org/viewvc/*checkout*/gnustandards/fdl.texi?root=gnustand
ards&content-type=text%2Fplain
 touch manual_hellp.texi # and edit
 make pdf

  • make your package available to anyone:
make install
make distcheck # can be followed by DISTCHECK_CONFIGURE_FLAGS=LDFLAGS=-L/usr/local/lib for instance
tar tzvf mypkg-0.1.tar.gz # to check what is in the release
git init
git add AUTHORS COPYING ChangeLog INSTALL Makefile.am NEWS README TODO build-aux/* configure.ac 
git add src/Makefile.am # etc
git add doc/fdl.texi doc/Makefile.am # etc
git add tests/Makefile.am # etc
git commit -m "first commit"


Personal tools