maildrop 2.2 doesn't install if makedat doesn't build, by default

View: New views
6 Messages — Rating Filter:   Alert me  

maildrop 2.2 doesn't install if makedat doesn't build, by default

by Josip Rodin-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I hit a bit of a problem trying to install the latest version.
This didn't happen for me with 2.0 because there the USE_GDBM got set
automatically (without any change to the related configure options).

The top-level makefile still expects for makedatprog to get built
unconditionally:

% grep install Makefile.am -A10 | grep makedat -A2 -B2
        $(INSTALL_PROGRAM) rfc2045/reformime $(DESTDIR)$(bindir)/reformime
        $(INSTALL_PROGRAM) rfc2045/makemime $(DESTDIR)$(bindir)/makemime
        $(INSTALL_PROGRAM) makedat/makedatprog $(DESTDIR)$(bindir)/makedatprog
        $(INSTALL_SCRIPT)  makedat/makedat     $(DESTDIR)$(bindir)/makedat
        . maildrop/uidgid ; test -z "$$gid" && exit 0; test -w /etc || exit 0; cd $(DESTDIR)$(bindir) && chgrp $$gid maildrop lockmail
--
uninstall-maildrop:
        for f in maildrop mailbot maildirmake reformail lockmail makemime reformime makedat makedatprog; do \
                rm -f $(DESTDIR)$(bindir)/$$f ; \
        done

However, when you don't touch the db options in configuration phase of 2.2,
it can't get built as this happens:

% diff -U0 dbobj.h{.in,}
--- dbobj.h.in  2000-07-02 01:41:53.000000000 +0200
+++ dbobj.h     2009-11-06 11:04:01.000000000 +0100
@@ -15 +15 @@
-#if    @USE_GDBM@
+#if    0
@@ -34 +34 @@
-#if    @USE_DB@
+#if    0

[maildrop-2.2.0/makedat]% make makedatprog
cc -DHAVE_CONFIG_H -I.     -I./.. -I.. -Wall -g -Wall -O2 -c makedatprog.c
makedatprog.c:19: warning: 'struct dbobj' declared inside parameter list
makedatprog.c:19: warning: its scope is only this definition or declaration, which is probably not what you want
makedatprog.c: In function 'addgdbm':
makedatprog.c:33: warning: implicit declaration of function 'dbobj_store'
makedatprog.c: At top level:
makedatprog.c:42: warning: 'struct dbobj' declared inside parameter list
makedatprog.c: In function 'buildgdbm':
makedatprog.c:76: warning: passing argument 2 of 'addgdbm' from incompatible pointer type
makedatprog.c: In function 'main':
makedatprog.c:83: error: storage size of 'obj' isn't known
makedatprog.c:102: warning: implicit declaration of function 'dbobj_init'
makedatprog.c:104: warning: implicit declaration of function 'dbobj_open'
makedatprog.c:112: warning: implicit declaration of function 'dbobj_close'
makedatprog.c:83: warning: unused variable 'obj'
make: *** [makedatprog.o] Error 1

dbobj.h.in or makedat's Makefile would benefit from the addition of an
explicit error in case neither @USE_GDBM@ nor @USE_DB@ were enabled.

In addition I think it would be useful if the logic to install everything
was simply moved to the right subdirectories, and then those subdirs make
their own local choices as to what they can or cannot do. That way there
would need to be no static dependency between the top-level makefile install
rule and unrelated subdir build rules.

--
     2. That which causes joy or happiness.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

Re: maildrop 2.2 doesn't install if makedat doesn't build, by default

by Josip Rodin-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, Nov 06, 2009 at 11:47:08AM +0100, Josip Rodin wrote:
> I hit a bit of a problem trying to install the latest version.
> This didn't happen for me with 2.0 because there the USE_GDBM got set
> automatically (without any change to the related configure options).

> However, when you don't touch the db options in configuration phase of 2.2,
> it can't get built as this happens:
>
> % diff -U0 dbobj.h{.in,}
> --- dbobj.h.in  2000-07-02 01:41:53.000000000 +0200
> +++ dbobj.h     2009-11-06 11:04:01.000000000 +0100
> @@ -15 +15 @@
> -#if    @USE_GDBM@
> +#if    0
> @@ -34 +34 @@
> -#if    @USE_DB@
> +#if    0

Hm, looking at it again, this doesn't make sense:

% ./configure --help | grep -i db
  --with-db=db            Use DB library instead of GDBM.
  --without-db            Disable GDBM extensions

This implies that GDBM is still supposed to be the default.

--
     2. That which causes joy or happiness.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

Re: maildrop 2.2 doesn't install if makedat doesn't build, by default

by Sam Varshavchik :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Josip Rodin writes:

> The top-level makefile still expects for makedatprog to get built
> unconditionally:

Good point.

diff -U3 -r1.77 Makefile.am
--- Makefile.am 5 Sep 2009 23:12:45 -0000 1.77
+++ Makefile.am 6 Nov 2009 12:01:24 -0000
@@ -113,15 +113,20 @@
  $(INSTALL_PROGRAM) maildir/maildirmake $(DESTDIR)$(bindir)/maildirmake
  $(INSTALL_PROGRAM) rfc2045/reformime $(DESTDIR)$(bindir)/reformime
  $(INSTALL_PROGRAM) rfc2045/makemime $(DESTDIR)$(bindir)/makemime
- $(INSTALL_PROGRAM) makedat/makedatprog $(DESTDIR)$(bindir)/makedatprog
- $(INSTALL_SCRIPT)  makedat/makedat     $(DESTDIR)$(bindir)/makedat
+ test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
+ $(INSTALL_PROGRAM) makedat/makedatprog $(DESTDIR)$(bindir)/makedatprog
+ test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
+ $(INSTALL_SCRIPT)  makedat/makedat     $(DESTDIR)$(bindir)/makedat
  . maildrop/uidgid ; test -z "$$gid" && exit 0; test -w /etc || exit 0; cd $(DESTDIR)$(bindir) && chgrp $$gid maildrop lockmail
  . maildrop/uidgid ; test -z "$$uid" && exit 0; test -w /etc || exit 0; cd $(DESTDIR)$(bindir) && chown $$uid maildrop lockmail && chmod 755 maildrop lockmail
 
 uninstall-maildrop:
- for f in maildrop mailbot maildirmake reformail lockmail makemime reformime makedat makedatprog; do \
+ for f in maildrop mailbot maildirmake reformail lockmail makemime reformime; do \
  rm -f $(DESTDIR)$(bindir)/$$f ; \
  done
+ test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
+ rm -f $(DESTDIR)$(bindir)/makedat ; \
+ rm -f $(DESTDIR)$(bindir)/makedatprog
 
 
 all-recursive: all-make-check



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

attachment0 (204 bytes) Download Attachment

Re: maildrop 2.2 doesn't install if makedat doesn't build, by default

by Josip Rodin-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, Nov 06, 2009 at 07:03:11AM -0500, Sam Varshavchik wrote:

> Josip Rodin writes:
>
>> The top-level makefile still expects for makedatprog to get built
>> unconditionally:
>
> Good point.
>
> diff -U3 -r1.77 Makefile.am
> --- Makefile.am 5 Sep 2009 23:12:45 -0000 1.77
> +++ Makefile.am 6 Nov 2009 12:01:24 -0000
> @@ -113,15 +113,20 @@
> $(INSTALL_PROGRAM) maildir/maildirmake $(DESTDIR)$(bindir)/maildirmake
> $(INSTALL_PROGRAM) rfc2045/reformime $(DESTDIR)$(bindir)/reformime
> $(INSTALL_PROGRAM) rfc2045/makemime $(DESTDIR)$(bindir)/makemime
> - $(INSTALL_PROGRAM) makedat/makedatprog $(DESTDIR)$(bindir)/makedatprog
> - $(INSTALL_SCRIPT)  makedat/makedat     $(DESTDIR)$(bindir)/makedat
> + test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
> + $(INSTALL_PROGRAM) makedat/makedatprog $(DESTDIR)$(bindir)/makedatprog
> + test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
> + $(INSTALL_SCRIPT)  makedat/makedat     $(DESTDIR)$(bindir)/makedat
> . maildrop/uidgid ; test -z "$$gid" && exit 0; test -w /etc || exit 0; cd $(DESTDIR)$(bindir) && chgrp $$gid maildrop lockmail
> . maildrop/uidgid ; test -z "$$uid" && exit 0; test -w /etc || exit 0; cd $(DESTDIR)$(bindir) && chown $$uid maildrop lockmail && chmod 755 maildrop lockmail
>
> uninstall-maildrop:
> - for f in maildrop mailbot maildirmake reformail lockmail makemime reformime makedat makedatprog; do \
> + for f in maildrop mailbot maildirmake reformail lockmail makemime reformime; do \
> rm -f $(DESTDIR)$(bindir)/$$f ; \
> done
> + test "@USE_DB@@USE_GDBM@" = "00" && exit 0; \
> + rm -f $(DESTDIR)$(bindir)/makedat ; \
> + rm -f $(DESTDIR)$(bindir)/makedatprog
>
>
> all-recursive: all-make-check
>
That will work, thanks.

Also there's the issue of its manual page and its html version.

I think something like the attached patch should be okay.
 
--
     2. That which causes joy or happiness.


--- maildrop-2.2.0.orig/configure.in
+++ maildrop-2.2.0/configure.in
@@ -122,6 +122,7 @@
 AC_SUBST(USE_GDBM)
 AC_SUBST(USE_DB)
 AC_SUBST(dblibrary)
+AM_CONDITIONAL(HAVE_DBLIBRARY, test "$dblibrary" != "")
 
 LIBS="$saveLIBS"
 
--- maildrop-2.2.0.orig/Makefile.am
+++ maildrop-2.2.0/Makefile.am
@@ -64,10 +64,18 @@
  maildropfilter.html maildropgdbm.html maildrop.html mailbot.html \
  makemime.html reformail.html reformime.html
 
+if HAVE_DBLIBRARY
+MAILDROPHTML += makedat.html
+endif
+
 MAILDROPMAN=lockmail.1 maildirmake.1 maildrop.1 mailbot.1 maildropex.7 \
  maildir.5 \
  maildropfilter.7 maildropgdbm.7 makemime.1 reformail.1 reformime.1
 
+if HAVE_DBLIBRARY
+MAILDROPMAN += makedat.1
+endif
+
 EXTRA_LTLIBRARIES=librfc822.la librfc2045.la
 
 if DEVEL
@@ -80,7 +88,11 @@
 lib_LTLIBRARIES=@DEVEL_LIBS@
 
 htmldataclean=$(DELIVERQUOTAHTML) \
- $(MAILDROPHTML) rfc822.html rfc2045.html makedat.html
+ $(MAILDROPHTML) rfc822.html rfc2045.html
+
+if !HAVE_DBLIBRARY
+htmldataclean += makedat.html
+endif
 
 html_DATA=$(htmldataclean) manpage.css
 


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

Re: maildrop 2.2 doesn't install if makedat doesn't build, by default

by Josip Rodin-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sat, Nov 07, 2009 at 02:47:02PM +0100, Josip Rodin wrote:
> Also there's the issue of its manual page and its html version.
>
> I think something like the attached patch should be okay.

> --- maildrop-2.2.0.orig/Makefile.am
> +++ maildrop-2.2.0/Makefile.am
> @@ -80,7 +88,11 @@
>  lib_LTLIBRARIES=@DEVEL_LIBS@
>  
>  htmldataclean=$(DELIVERQUOTAHTML) \
> - $(MAILDROPHTML) rfc822.html rfc2045.html makedat.html
> + $(MAILDROPHTML) rfc822.html rfc2045.html
> +
> +if !HAVE_DBLIBRARY
> +htmldataclean += makedat.html
> +endif
>  
>  html_DATA=$(htmldataclean) manpage.css
>  

Hmm, or maybe just lose that last chunk. makedat.html looks safe to clean up
in any case, I got carried away.

--
     2. That which causes joy or happiness.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop

Re: maildrop 2.2 doesn't install if makedat doesn't build, by default

by Josip Rodin-7 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, Nov 08, 2009 at 12:30:16AM +0100, Josip Rodin wrote:

> On Sat, Nov 07, 2009 at 02:47:02PM +0100, Josip Rodin wrote:
> > Also there's the issue of its manual page and its html version.
> >
> > I think something like the attached patch should be okay.
>
> > --- maildrop-2.2.0.orig/Makefile.am
> > +++ maildrop-2.2.0/Makefile.am
> > @@ -80,7 +88,11 @@
> >  lib_LTLIBRARIES=@DEVEL_LIBS@
> >  
> >  htmldataclean=$(DELIVERQUOTAHTML) \
> > - $(MAILDROPHTML) rfc822.html rfc2045.html makedat.html
> > + $(MAILDROPHTML) rfc822.html rfc2045.html
> > +
> > +if !HAVE_DBLIBRARY
> > +htmldataclean += makedat.html
> > +endif
> >  
> >  html_DATA=$(htmldataclean) manpage.css
> >  
>
> Hmm, or maybe just lose that last chunk. makedat.html looks safe to clean up
> in any case, I got carried away.

Oh, bleh, upon another rebuild, I realized why I did that in the first
place. The variable htmldataclean also has a meaning in the install rule -
it tries to install this file into the tree, but with the other patch it
turns out to be a duplicate, so that doesn't work.

We need that third chunk to look like this:

@@ -88,13 +88,17 @@
 lib_LTLIBRARIES=@DEVEL_LIBS@
 
 htmldataclean=$(DELIVERQUOTAHTML) \
- $(MAILDROPHTML) rfc822.html rfc2045.html makedat.html
+ $(MAILDROPHTML) rfc822.html rfc2045.html
 
 html_DATA=$(htmldataclean) manpage.css
 
+if !HAVE_DBLIBRARY
+html_DATA += makedat.html
+endif
+
 man_MANS=$(DELIVERQUOTAMAN) \
  $(MAILDROPMAN) $(DEVEL_MAN)
-DISTCLEANFILES=$(htmldataclean) $(man_MANS)
+DISTCLEANFILES=$(htmldataclean) $(man_MANS) makedat.html
 
 librfc822_la_SOURCES=
 librfc2045_la_SOURCES=

That way we clean it up in any case, but only try to install it once,
if the conditionals work out.

I'm doing another full rebuild to test this now...

--
     2. That which causes joy or happiness.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Courier-maildrop mailing list
Courier-maildrop@...
https://lists.sourceforge.net/lists/listinfo/courier-maildrop