Hello, I'm trying to package a very simple hello world library, before I move to more complex things. The problem is that dpkg will not include the most important files in the finished package. Here's what I did, step by step (on a Kubuntu 7.10 system):
1. I start with the following source files: nonsense.h ---------- void nonsense(); ---------- nonsense.c ---------- #include <stdio.h> void nonsense() { printf("Nonsense!\n"); } ---------- configure.ac ------------ AC_PREREQ(2.61) AC_INIT([libnonsense], [1.0], [EMAIL PROTECTED]) AM_INIT_AUTOMAKE([-Wall -Werror]) AC_PROG_LIBTOOL AC_CONFIG_SRCDIR([nonsense.h]) AC_CONFIG_HEADER([config.h]) AC_PROG_CC AC_CONFIG_FILES([Makefile]) AC_OUTPUT ------------ Makefile.am ----------- lib_LTLIBRARIES = libnonsense.la include_HEADERS = nonsense.h libnonsense_la_SOURCES = nonsense.c libnonsense_ladir = $LIBDIR$ ----------- 2. I issue the following commands: touch AUTHORS ChangeLog NEWS README aclocal autoheader libtoolize automake --add-missing autoconf ./configure make make dist At this point I have a simple autotools distribution. ./configure && make && make install works perfectly from the directory resulting when the .tar.gz file is extracted. 3. From within the extracted libnonsense-1.0 directory, I run: dh_make -c gpl -e [EMAIL PROTECTED] -l -f ../libnonsense-1.0.tar.gz which outputs: ---------------------------------------------------------------------------- 822-date: warning: This program is deprecated. Please use 'date -R' instead. Maintainer name : Georgi Chulkov Email-Address : [EMAIL PROTECTED] Date : Thu, 27 Mar 2008 22:57:29 +0100 Package Name : libnonsense Version : 1.0 License : gpl Type of Package : Library Hit <enter> to confirm: Done. Please edit the files in the debian/ subdirectory now. libnonsense uses a configure script, so you probably don't have to edit the Makefiles. Make sure you change the package name from libnonsenseBROKEN to something else, such as libnonsense1 in the debian/control file. ---------------------------------------------------------------------------- 4. From the debian/ directory, I delete the files AFAIK I don't need: cron.d.ex emacsen* init.d.ex libnonsense-default.ex libnonsense.doc-base.EX manpage* menu.ex post*.ex pre*.ex README.Debian shlibs.local.ex watch.ex 5. I fill in the placeholders in changelog, control and copyright, just to make sure. I don't touch anything else. So I end up with these, among others: control ------- Source: libnonsense Priority: extra Maintainer: Georgi Chulkov <[EMAIL PROTECTED]> Build-Depends: debhelper (>= 5), autotools-dev Standards-Version: 3.7.2 Section: libs Package: libnonsense-dev Section: libdevel Architecture: any Depends: libnonsense1 (= ${Source-Version}) Description: TODO TO BE DONE Package: libnonsense1 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: TODO TO BE DONE ------ dirs ---- usr/bin usr/sbin ---- docs ---- NEWS README ---- libnonsense1.dirs ----------------- usr/lib ----------------- libnonsense1.install ----------------- usr/lib/lib*.so.* ----------------- libnonsense-dev.dirs -------------------- usr/lib usr/include -------------------- libnonsense-dev.install ----------------------- usr/include/* usr/lib/lib*.a usr/lib/lib*.so usr/lib/pkgconfig/* usr/lib/*.la usr/share/pkgconfig/* ----------------------- 6. I run dpkg-buildpackage -rfakeroot The result is two deb files, among other things. The problem is that they do not contain the library! dpkg -c ../libnonsense1_1.0-1_i386.deb -------------------------------------- drwxr-xr-x root/root 0 2008-03-27 23:10 ./ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/lib/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/share/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/share/doc/ drwxr-xr-x root/root 0 2008-03-27 23:10 ./usr/share/doc/libnonsense1/ -rw-r--r-- root/root 30 2008-03-27 22:43 ./usr/share/doc/libnonsense1/changelog.gz -rw-r--r-- root/root 1391 2008-03-27 23:01 ./usr/share/doc/libnonsense1/copyright -rw-r--r-- root/root 169 2008-03-27 23:01 ./usr/share/doc/libnonsense1/changelog.Debian.gz -------------------------------------- dpkg -c ../libnonsense-dev_1.0-1_i386.deb ----------------------------------------- drwxr-xr-x root/root 0 2008-03-27 23:10 ./ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/lib/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/include/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/share/ drwxr-xr-x root/root 0 2008-03-27 23:09 ./usr/share/doc/ drwxr-xr-x root/root 0 2008-03-27 23:10 ./usr/share/doc/libnonsense-dev/ -rw-r--r-- root/root 30 2008-03-27 22:43 ./usr/share/doc/libnonsense-dev/changelog.gz -rw-r--r-- root/root 1391 2008-03-27 23:01 ./usr/share/doc/libnonsense-dev/copyright -rw-r--r-- root/root 169 2008-03-27 23:01 ./usr/share/doc/libnonsense-dev/changelog.Debian.gz ----------------------------------------- As you can see, none of the important files are included in the packages. Why is that? Also note: ls -R debian/tmp/ ----------------- debian/tmp/: usr debian/tmp/usr: include lib debian/tmp/usr/include: nonsense.h debian/tmp/usr/lib: libnonsense.a libnonsense.la libnonsense.so libnonsense.so.0 libnonsense.so.0.0.0 ----------------- How can I include these files in the .deb packages? Thanks in advance for any assistance!
signature.asc
Description: This is a digitally signed message part.