User:Timothee Flutre/Notebook/Postdoc/2012/11/27: Difference between revisions

From OpenWetWare
Jump to navigationJump to search
(→‎How to make a GNU package?: add info about documentation)
(→‎How to make a GNU package?: distcheck + license + misc)
Line 8: Line 8:
==How to make a GNU package?==
==How to make a GNU package?==


* find a name for the package
* find a name for the package, for instance "mypkg"


* structure the package directory:
* structure the package directory:
  touch README INSTALL NEWS AUTHORS COPYING ChangeLog
mkdir mypkg; cd mypkg
  mkdir src build-aux doc test #lib
  touch COPYING README INSTALL NEWS AUTHORS ChangeLog
  mkdir src build-aux doc test #lib scripts


* populate the <code>src/</code> directory with your code, e.g. <code>hello.cpp</code>
* populate the <code>src/</code> directory with your code, e.g. <code>hello.cpp</code>
* retrieve the license, for instance [http://www.gnu.org/licenses/gpl.html GPLv3]:
wget -O COPYING http://www.gnu.org/licenses/gpl-3.0.txt
* fill the information files, such as README, INSTALL...


* use [http://en.wikipedia.org/wiki/GNU_build_system Autotools] (see [http://www.lrde.epita.fr/~adl/autotools.html tutorial]):
* use [http://en.wikipedia.org/wiki/GNU_build_system Autotools] (see [http://www.lrde.epita.fr/~adl/autotools.html tutorial]):
  touch configure.ac Makefile.am src/Makefile.am doc/Makefile.am #and edit
  touch configure.ac Makefile.am src/Makefile.am doc/Makefile.am #and edit
  autoreconf --install
  autoreconf --install
  ./configure #can be followed by --prefix=... or LDFLAGS=...
  ./configure #can be followed by --prefix=~/bin, LDFLAGS=-L/usr/local/lib, etc
  make
  make
  make check
  make check
Line 29: Line 35:
ards&content-type=text%2Fplain
ards&content-type=text%2Fplain
  touch manual.texi #and edit
  touch manual.texi #and edit
make pdf
</nowiki>
</nowiki>


* make your package available to anyone:
* make your package available to anyone:
  make install
  make install
  make distclean
  make distcheck #can be followed by DISTCHECK_CONFIGURE_FLAGS=LDFLAGS=-L/usr/local/lib for instance
  make dist
  tar tzvf mypkg-0.1.tar.gz #to check what is in the release


* share your code, for instance on [http://en.wikipedia.org/wiki/GitHub GitHub] (see [http://openwetware.org/wiki/User:Timothee_Flutre/Notebook/Postdoc/2012/08/14 my tips])
* share your code, for instance on [http://en.wikipedia.org/wiki/GitHub GitHub] (see [http://openwetware.org/wiki/User:Timothee_Flutre/Notebook/Postdoc/2012/08/14 my tips])

Revision as of 22:54, 27 November 2012

Project name <html><img src="/images/9/94/Report.png" border="0" /></html> Main project page
<html><img src="/images/c/c3/Resultset_previous.png" border="0" /></html>Previous entry<html>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</html>

How to make a GNU package?

  • find a name for the package, for instance "mypkg"
  • structure the package directory:
mkdir mypkg; cd mypkg
touch COPYING README INSTALL NEWS AUTHORS ChangeLog
mkdir src build-aux doc test #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, INSTALL...
touch configure.ac Makefile.am src/Makefile.am doc/Makefile.am #and edit
autoreconf --install
./configure #can be followed by --prefix=~/bin, LDFLAGS=-L/usr/local/lib, etc
make
make check
  • 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.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