building own package

2005-08-03 Thread Tomas Davidek

Hello,
 I am trying to build my own package (containing only few shell 
scripts) to make easier the system maintainance specific to our 
department. I followed the instruction in the Debian New Maintainer's 
Guide, but I probably misunderstood something, since I have the 
following problems:


* I store all the scripts in a tarball, so all I have to do is to unpack 
them in the respective directory during the "make install" stage (i.e. 
no compilation is needed). I succeeded to do so by introducing  the 
following Makefile:

-
clean:
   rm -fr debian/ucjf-security

install:
   cd $(DESTDIR) ; \
   tar -xvzf ../../../ucjf-security_1.0.1.orig.tar.gz 
--
It works, however I would expect that the path to a tarball can be 
specified in a better way (is there any variable containing the top 
directory name ?). Also, the version should not be hardcoded there, I 
guess. Is there a way to tell the Makefile to use the latest 
version/same version as is the name of the working directory ?


* since the pakcage contains only few shell scripts, it should be 
architecture-independent. Therefore, I specified "Architecture: any" in 
the "control" file and also moved all the action in the "rules" file 
into the binary-indep section (see attachment) However, the 
resulting package still contains in its control file the item 
"Architecture: i386" (which is where the package is produced, but ).


* the script don't have any config file, therefore I didn't introduce 
the "conffiles" in the debian directory. However, the resulting package 
contains in its conffiles the first file of the tarball. Is there a good 
reason for that ? How do I get rid off this feature ?


* the man pages installation works pretty well, the only problem is that 
the mandb is not updated after the package installation. It means user 
can display the new manpage, but "man -k" does not find it. One would 
need to run mandb automatically - should this be done via postinst 
(postrm) scripts or is there a simpler way to do so ?


Thanks a lot for any hint,

best regards
  Tomas

E-mail : [EMAIL PROTECTED],
  [EMAIL PROTECTED]

#!/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




CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif

configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.

touch configure-stamp


build: build-stamp

build-stamp: configure-stamp 
dh_testdir

# Add here commands to compile the package.
$(MAKE)
#docbook-to-man debian/ucjf-security.sgml > ucjf-security.1

touch build-stamp

clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp

# Add here commands to clean up after the build process.
-$(MAKE) clean

dh_clean 

install: build
dh_testdir
dh_testroot
dh_clean -k 
dh_installdirs

# Add here commands to install the package into debian/ucjf-security.
$(MAKE) install DESTDIR=$(CURDIR)/debian/ucjf-security


# Build architecture-independent files here. Everything here, since we have
# just set of scripts:
binary-indep: build install
dh_testdir
dh_testroot
dh_installchangelogs 
dh_installdocs README TODO
dh_installexamples
#   dh_install
#   dh_installmenu
#   dh_installdebconf   
#   dh_installlogrotate
#   dh_installemacsen
#   dh_installpam
#   dh_installmime
#   dh_installinit
#   dh_installcron
#   dh_installinfo
dh_installman ucjf-security.8
dh_link
dh_strip
dh_compress
dh_fixperms
#   dh_perl
#   dh_python
#   dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb

# Build architecture-dependent files here.
binary-arch: build install
# We have nothing to do by default.

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure


Re: building own package

2005-08-03 Thread Tomas Davidek

Hello again,
 thanks to all who replied to my previous mail. Using your advice I 
solved/correct all the problems/bugs, but still there is one thing I 
don't understand:


Lionel Elie Mamane wrote:


On Wed, Aug 03, 2005 at 11:21:35AM +0200, Tomas Davidek wrote:
 


* I store all the scripts in a tarball,

   


If you are using the .orig.tar.gz directly, you have misunderstood the
structure of a Debian source package: The .orig.tar.gz is unpacked,
the tree is patched with the .diff.gz and then one builds / installs
entirely from there.

You may actually want to do a "Debian native" package that has only a
.tar.gz and no .diff.gz.
 

Yes, this is exactly the problem - the *.orig.tar.gz should be unpacked, 
but apparently it is not. When I have in my makefile:

.
install:
 cp -a usr $(DESTDIR)/usr
.
it fails with the error message:
--
# Add here commands to install the package into debian/ucjf-security.
/usr/bin/make install 
DESTDIR=/home/davidek/debian/ucjf-security-1.0.2/debian/ucjf-security

make[1]: Entering directory `/home/davidek/debian/ucjf-security-1.0.2'
cp -a usr /home/davidek/debian/ucjf-security-1.0.2/debian/ucjf-security/usr
cp: cannot stat `usr': No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/home/davidek/debian/ucjf-security-1.0.2'
make: *** [install] Error 2
-
Someone of you mentioned that it should be debian/rules script that 
unpacks the .orig.tar.gz. I tried to issue the commands one-by-one, but 
none of them unpacked the orig tarball. BTW, should it be unpacked into 
/home/davidek/debian/ucjf-security-1.0.2 (see above) or somewhere else ?


I probably miss something in the debian/rules (attached), the full 
output of dpkg-buildpackage -rfakeroot is also attached.


Thanks a lot for help,

best regards

  Tomas

E-mail : [EMAIL PROTECTED],
  [EMAIL PROTECTED]

dpkg-buildpackage: source package is ucjf-security
dpkg-buildpackage: source version is 1.0.2-1
dpkg-buildpackage: source maintainer is Tomas Davidek <[EMAIL PROTECTED]>
dpkg-buildpackage: host architecture is i386
 fakeroot debian/rules clean
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
#-/usr/bin/make clean
dh_clean 
rm -f debian/ucjf-security.substvars
rm -f debian/ucjf-security.*.debhelper
rm -rf debian/ucjf-security
rm -f debian/files
find . -type f -a \( -name \#\*\# -o -name .\*\~ -o -name \*\~ -o -name 
DEADJOE -o -name \*.orig -o -name \*.rej -o -name \*.bak -o -name .\*.orig -o 
-name .\*.rej -o -name .SUMS -o -name TAGS -o -name core -o \( -path 
\*/.deps/\* -a -name \*.P \) \) -exec rm -f {} \;
rm -rf autom4te.cache
 dpkg-source -b ucjf-security-1.0.2
dpkg-source: building ucjf-security using existing 
ucjf-security_1.0.2.orig.tar.gz
dpkg-source: building ucjf-security in ucjf-security_1.0.2-1.diff.gz
dpkg-source: warning: ignoring deletion of directory sbin
dpkg-source: warning: ignoring deletion of file sbin/hledej_skodice
dpkg-source: warning: ignoring deletion of file sbin/ipt-skodici
dpkg-source: building ucjf-security in ucjf-security_1.0.2-1.dsc
 debian/rules build
dh_testdir
# Add here commands to configure the package.
touch configure-stamp
dh_testdir
# Add here commands to compile the package.
#/usr/bin/make
#docbook-to-man debian/ucjf-security.sgml > ucjf-security.1
touch build-stamp
 fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_clean -k 
rm -f debian/ucjf-security.substvars
rm -f debian/ucjf-security.*.debhelper
rm -rf debian/ucjf-security
find . -type f -a \( -name \#\*\# -o -name .\*\~ -o -name \*\~ -o -name 
DEADJOE -o -name \*.orig -o -name \*.rej -o -name \*.bak -o -name .\*.orig -o 
-name .\*.rej -o -name .SUMS -o -name TAGS -o -name core -o \( -path 
\*/.deps/\* -a -name \*.P \) \) -exec rm -f {} \;
rm -rf autom4te.cache
dh_installdirs
install -d debian/ucjf-security
install -d debian/ucjf-security/usr/sbin
# Add here commands to install the package into debian/ucjf-security.
/usr/bin/make install 
DESTDIR=/home/davidek/debian/ucjf-security-1.0.2/debian/ucjf-security
make[1]: Entering directory `/home/davidek/debian/ucjf-security-1.0.2'
cp -a usr /home/davidek/debian/ucjf-security-1.0.2/debian/ucjf-security/usr
cp: cannot stat `usr': No such file or directory
make[1]: *** [install] Error 1
make[1]: Leaving directory `/home/davidek/debian/ucjf-security-1.0.2'
make: *** [install] Error 2
#!/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 v

update of (several) config files

2005-08-23 Thread Tomas Davidek

Hello,
 I am trying to set up a tool for easy update of several computers in 
our institute. For example, I would like to create a package that 
updates several config files, e.g. /etc/apt/sources.list etc.

What is the best way of doing that ?

So far I think about an package that only contains a pre-install, 
post-install, pre-remove and post-remove scripts. These scripts would 
then add/remove certain lines from the config files and run updates. Is 
this the right way or is there better way how to proceed ?


Thanks a lot,

best regards

  Tomas

E-mail : [EMAIL PROTECTED],
  [EMAIL PROTECTED]


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]