Thread

  1. REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Todd R. Eigenschink <todd@tekinteractive.com> — 2001-05-08T15:15:19Z

    When Postgres is configured and decides to use libncurses and
    libreadline, the backend gets linked against those two libs, too, even
    though it really doesn't use them.  This is just extra wasted size and
    (if they're shared libs) dependencies you don't need.
    
    I made this ultra-cheesy change to src/backend/Makefile to take care
    of that.
    
    postgres: $(OBJS)
            $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ $(LIBS) -o $@
    
    to
    
    postgres: $(OBJS)
            $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ `echo $(LIBS) | sed -e 's/ -lncurses//' -e 's/ -lreadline//'` -o $@
    
    
    
    I realize this is a sort of special-purpose request.  It's not a big
    deal to build the whole thing, then just relink src/backend/postgres
    without those libs.  It just feels dirty to have them there when they
    aren't needed.
    
    
    Todd
    
    
    
  2. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Bruce Momjian <pgman@candle.pha.pa.us> — 2001-05-12T21:11:17Z

    > When Postgres is configured and decides to use libncurses and
    > libreadline, the backend gets linked against those two libs, too, even
    > though it really doesn't use them.  This is just extra wasted size and
    > (if they're shared libs) dependencies you don't need.
    > 
    > I made this ultra-cheesy change to src/backend/Makefile to take care
    > of that.
    > 
    > postgres: $(OBJS)
    >         $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ $(LIBS) -o $@
    > 
    > to
    > 
    > postgres: $(OBJS)
    >         $(CC) $(CFLAGS) $(LDFLAGS) $(export_dynamic) $^ `echo $(LIBS) | sed -e 's/ -lncurses//' -e 's/ -lreadline//'` -o $@
    > 
    > 
    > 
    > I realize this is a sort of special-purpose request.  It's not a big
    > deal to build the whole thing, then just relink src/backend/postgres
    > without those libs.  It just feels dirty to have them there when they
    > aren't needed.
    > 
    
    It is my understanding that having them there causes no bloat in the
    binary.  No symbols are resolved in those libs.
    
    -- 
      Bruce Momjian                        |  http://candle.pha.pa.us
      pgman@candle.pha.pa.us               |  (610) 853-3000
      +  If your life is a hard drive,     |  830 Blythe Avenue
      +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
    
    
  3. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Todd R. Eigenschink <todd@tekinteractive.com> — 2001-05-14T02:32:49Z

    Bruce Momjian writes:
    >> I realize this is a sort of special-purpose request.  It's not a big
    >> deal to build the whole thing, then just relink src/backend/postgres
    >> without those libs.  It just feels dirty to have them there when they
    >> aren't needed.
    >> 
    >
    >It is my understanding that having them there causes no bloat in the
    >binary.  No symbols are resolved in those libs.
    
    Perhaps not, but the postgres binary then becomes dependent on those
    libs being available (if they're shared).
    
    
    Todd
    
    
    
  4. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Bruce Momjian <pgman@candle.pha.pa.us> — 2001-05-14T18:43:03Z

    > Bruce Momjian writes:
    > >> I realize this is a sort of special-purpose request.  It's not a big
    > >> deal to build the whole thing, then just relink src/backend/postgres
    > >> without those libs.  It just feels dirty to have them there when they
    > >> aren't needed.
    > >> 
    > >
    > >It is my understanding that having them there causes no bloat in the
    > >binary.  No symbols are resolved in those libs.
    > 
    > Perhaps not, but the postgres binary then becomes dependent on those
    > libs being available (if they're shared).
    
    Good point.
    
    -- 
      Bruce Momjian                        |  http://candle.pha.pa.us
      pgman@candle.pha.pa.us               |  (610) 853-3000
      +  If your life is a hard drive,     |  830 Blythe Avenue
      +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
    
    
  5. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Tom Lane <tgl@sss.pgh.pa.us> — 2001-05-15T02:43:12Z

    > It is my understanding that having them there causes no bloat in the
    > binary.  No symbols are resolved in those libs.
    >> 
    >> Perhaps not, but the postgres binary then becomes dependent on those
    >> libs being available (if they're shared).
    
    > Good point.
    
    Autoconf has a bad habit of putting all libraries that it's asked to
    check for into a single LIBS list, which makes it quite painful to avoid
    linking all those libs to *every* binary built by the distribution.
    
    I don't see much value in fixing this just for libreadline (and even
    less in fixing it by disabling readline support entirely).  I think I
    recall Peter E. having mentioned that there'd be a better answer in
    autoconf 2.50 ... so I'm inclined not to touch the problem until that
    comes out.
    
    			regards, tom lane
    
    
  6. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Peter Eisentraut <peter_e@gmx.net> — 2001-05-16T15:39:09Z

    Tom Lane writes:
    
    > Autoconf has a bad habit of putting all libraries that it's asked to
    > check for into a single LIBS list, which makes it quite painful to avoid
    > linking all those libs to *every* binary built by the distribution.
    
    PostgreSQL, on the other hand, has the bad habit of using a single
    configure script to configure rather separate binaries.  ;-)
    
    > I don't see much value in fixing this just for libreadline (and even
    > less in fixing it by disabling readline support entirely).  I think I
    > recall Peter E. having mentioned that there'd be a better answer in
    > autoconf 2.50 ... so I'm inclined not to touch the problem until that
    > comes out.
    
    I don't see how autoconf 2.50 ("any day now") would change anything here.
    We could make up new variables like READLINE_LIBS, but where do we stop?
    I don't have a good answer.
    
    -- 
    Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter
    
    
    
  7. Re: REQ: build src/backend/postgres w/o -lncurses or -lreadline

    Todd R. Eigenschink <todd@tekinteractive.com> — 2001-05-16T16:26:53Z

    Peter Eisentraut writes:
    >> I don't see much value in fixing this just for libreadline (and even
    >> less in fixing it by disabling readline support entirely).  I think I
    >> recall Peter E. having mentioned that there'd be a better answer in
    >> autoconf 2.50 ... so I'm inclined not to touch the problem until that
    >> comes out.
    >
    >I don't see how autoconf 2.50 ("any day now") would change anything here.
    >We could make up new variables like READLINE_LIBS, but where do we stop?
    >I don't have a good answer.
    
    Short of a separate configure script, there probably isn't one.
    
    If you feel like doing *something*, my patch to "sed" out the
    libraries would be really simple.  Otherwise, it's not a big deal for
    me to just rebuild src/backend/postgres with a slightly altered
    command line.  Once the initial "make" finishes, it only takes about
    15 seconds.
    
    And of course, most people don't/won't care or notice.  The extra
    unneeded dependencies just make me feel dirty. :-)
    
    
    Todd