Check Install
From Emergent
Contents |
Creating packages using CheckInstall
This is probably the simplest way to create packages as of this writing. CheckInstall works by shadowing the install tool. It runs `make install' for you, watches what files are being installed, and sticks them inside a package. It has some support for package metadata, but the packages that it creates largely violate all of the nitpicky standards found in the .rpm and .deb specifications. But really, who cares? :) So go ahead and follow the building instructions, but use the commands below instead of make install.
Dependencies
To figure out what other packages Qt, Coin and SoQt depend on (for a .deb), go to http://packages.ubuntu.com and find a similar package. Then scroll down to the bottom and look for a link that says "[dsc]". This is the control file for that package. Copy/paste the packages on the "Depends:" line after "--requires=" on the command line. Unfortunately checkinstall does not support (,) or |, so you need to remove this information from the list. You also have to remove the whitespace after commas (see below). Also make sure that SoQt depends on emergent-coin and emergent-qt, and not other versions.
When you issue these commands, our apt repository is automatically updated. See http://grey.colorado.edu/apt/binary/
Creating a .deb package
- --install=no tells it not to install the .deb package, but it DOES install the package using make install.
- --pakdir should be /usr/local/apt/binary/
- --help reveals a smörgåsbord of options. Use the ones you want.
Qt
checkinstall -D -y --install=no \
--fstrans \
--pkgname=emergent-qt \
--pkgversion=4.3.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/apt/binary \
--requires=debhelper,libxext-dev,libxrandr-dev,x11proto-core-dev,\
libsm-dev,libxmu-dev,libice-dev,libx11-dev,\
libxt-dev,libjpeg62-dev,libjpeg62-dev,zlib1g-dev,libmng-dev,\
libpng12-dev,libfreetype6-dev,libmysqlclient15-dev,flex,libpq-dev,\
libaudio-dev,libcupsys2-dev,xlibmesa-gl-dev,libgl-dev,\
libglu1-xorg-dev,libglu1-mesa-dev,libglu-dev,libxft-dev,\
libxrender-dev,libxcursor-dev,cdbs,dpatch,libxinerama-dev,\
libsqlite0-dev,libsqlite3-dev,libdbus-1-dev,libglib2.0-dev
Coin
For this package we need to include /usr/local/include/Inventor, so first create a file named inventor.list with this path on the first line, and no other contents.
checkinstall -D -y --install=no \
--fstrans \
--pkgname=emergent-coin \
--pkgversion=2.4.5 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/apt/binary \
--include=inventor.list \
--requires=debhelper,libx11-dev,libxext-dev,libxi-dev,\
libxmu-dev,libxp-dev,libxpm-dev,libxt-dev,\
x-dev,libgl1-mesa-dev,libgl-dev,doxygen
SoQt
SoQt installs a few headers to /usr/local/include/Inventor, but since we are including this entire directory in emergent-coin, we remove them here. Two packages cannot provide the same file - apt-get chokes on that (rightly so!)
checkinstall -D -y --install=no \
--fstrans \
--pkgname=emergent-soqt \
--pkgversion=1.4.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/apt/binary \
--exclude=/usr/local/include/Inventor \
--requires=debhelper,doxygen,libx11-dev,libxext-dev,\
libxi-dev,libxmu-dev,libxp-dev,libxpm-dev,libxt-dev,\
x-dev,libgl1-mesa-dev,libgl-dev,emergent-coin,emergent-qt
Simage
checkinstall -D -y --install=no \
--fstrans \
--pkgname=emergent-simage \
--pkgversion=1.6.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/apt/binary \
--requires=libogg-dev,libvorbis-dev,libtiff-dev,libungif4-dev,libreadline5-dev
ODE
--requires=emergent-soqt is a false dependency to keep things working
checkinstall -D -y --install=no \
--fstrans \
--pkgname=emergent-ode \
--pkgversion=.8 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/apt/binary \
--requires=emergent-soqt
Emergent
sudo make deb
Update the debian repository
sudo make deb-update-repo
Creating a .rpm
Qt
- --install=no tells it not to install the .deb package, but it DOES install the package using make install.
- --pakdir should be /usr/local/yum
- --help reveals a smörgåsbord of options. Use the ones you want.
checkinstall -R -y --install=no \
--fstrans \
--pkgname=emergent-qt \
--pkgversion=4.3.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/yum
Coin
For this package we need to include /usr/local/include/Inventor, so first create a file named inventor.list with this path on the first line, and no other contents.
checkinstall -R -y --install=no \
--fstrans \
--pkgname=emergent-coin \
--pkgversion=2.4.5 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes --pakdir=/usr/local/yum \
--include=inventor.list \
--requires=bash,mesa-libGL,mesa-libGLU,bzip2-libs,freetype,fontconfig
SoQt
checkinstall -R -y --install=no \
--fstrans \
--pkgname=emergent-soqt \
--pkgversion=1.4.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/yum \
--requires=libXi,bash,mesa-libGL,mesa-libGLU,bzip2-libs,freetype,fontconfig,emergent-qt,emergent-soqt
Simage
checkinstall -R -y --install=no \
--fstrans \
--pkgname=emergent-simage \
--pkgversion=1.6.1 \
--arch=i386 \
--pkglicense=GPL \
--maintainer=brian.mingus@colorado.edu \
--reset-uids=yes \
--pakdir=/usr/local/yum \
--requires=libogg,libvorbis,libtiff,libpng
Update the yum repository
sudo yum-update-repo
