Package: libpq5
Version: 9.1.2-1
Severity: wishlist

Hi,

I piped the available libpq5 packages from snapshot.debian.org through
some shellscripts and got a symbols file that goes back to 8.2 when
libpq changed SONAME from 4 to 5. This was i386-only but I believe the
situation is the same on other architectures.

A sideeffect is that we can replace "8.2~" by "0" in symbols files
which makes dpkg-shlibdeps omit the version part if there's no
particular version needed.

Some comments on the new file:
* PQconnectionNeedsPassword@Base appeared in 8.3~rc1-1, i.e. past the
  beta version.s
* I changed PQlibVersion@Base 9.1~beta1 to PQlibVersion@Base 9.1~ just
  like the other entries (same for PGping*)
* pg_valid_server_encoding_id@Base appeared in 8.3~beta1-2 (I didn't
  check why it was -2, probably a packaging error)

I did the same for the other libraries which all changed SONAME in
8.3:

libecpg6:

* ECPGget_PGconn@Base appeared in 8.3.1-2
* ECPGtransactionStatus@Base was wrongly listed as 8.4~ while it
  appeared in 9.0

* libecpg-compat3 has only 1 symbol left (at 9.0~)

* libpgtypes3 has no minimum version left (but the file should be kept
since this could change)

It would be nice if these files could make it into the 3 PG server
packages in unstable. (With the obvious changes for 8.4 and 9.0.)

The shellscript to create the files is attached, used like this:
$ debsnap -a i386 libpq5
$ ls binary-libpq5 > files.libpq5
(manually sort the file by version and kick bpo out)
$ ./walk-symbols $(cat files.libpq5)

Christoph
-- 
[email protected] | http://www.df7cb.de/
libecpg_compat.so.3 libecpg-compat3 #MINVER#
 ECPG_informix_get_var@Base 0
 ECPG_informix_reset_sqlca@Base 9.0~
 ECPG_informix_set_var@Base 0
 byleng@Base 0
 decadd@Base 0
 deccmp@Base 0
 deccopy@Base 0
 deccvasc@Base 0
 deccvdbl@Base 0
 deccvint@Base 0
 deccvlong@Base 0
 decdiv@Base 0
 decmul@Base 0
 decsub@Base 0
 dectoasc@Base 0
 dectodbl@Base 0
 dectoint@Base 0
 dectolong@Base 0
 dtcurrent@Base 0
 dtcvasc@Base 0
 dtcvfmtasc@Base 0
 dtsub@Base 0
 dttoasc@Base 0
 dttofmtasc@Base 0
 intoasc@Base 0
 ldchar@Base 0
 rdatestr@Base 0
 rdayofweek@Base 0
 rdefmtdate@Base 0
 rfmtdate@Base 0
 rfmtlong@Base 0
 rgetmsg@Base 0
 risnull@Base 0
 rjulmdy@Base 0
 rmdyjul@Base 0
 rsetnull@Base 0
 rstrdate@Base 0
 rtoday@Base 0
 rtypalign@Base 0
 rtypmsize@Base 0
 rtypwidth@Base 0
 rupshift@Base 0
libecpg.so.6 libecpg6 #MINVER#
 ECPGallocate_desc@Base 0
 ECPGconnect@Base 0
 ECPGdeallocate@Base 0
 ECPGdeallocate_all@Base 0
 ECPGdeallocate_desc@Base 0
 ECPGdebug@Base 0
 ECPGdescribe@Base 0
 ECPGdisconnect@Base 0
 ECPGdo@Base 0
 ECPGdo_descriptor@Base 0
 ECPGfree_auto_mem@Base 0
 ECPGget_PGconn@Base 8.3.1-2~
 ECPGget_desc@Base 0
 ECPGget_desc_header@Base 0
 ECPGget_sqlca@Base 0
 ECPGget_var@Base 9.0~
 ECPGis_noind_null@Base 0
 ECPGprepare@Base 0
 ECPGprepared_statement@Base 0
 ECPGset_desc@Base 0
 ECPGset_desc_header@Base 0
 ECPGset_noind_null@Base 0
 ECPGset_var@Base 9.0~
 ECPGsetcommit@Base 0
 ECPGsetconn@Base 0
 ECPGstatus@Base 0
 ECPGtrans@Base 0
 ECPGtransactionStatus@Base 9.0~
 sqlprint@Base 0
libpgtypes.so.3 libpgtypes3 #MINVER#
 PGTYPESdate_dayofweek@Base 0
 PGTYPESdate_defmt_asc@Base 0
 PGTYPESdate_fmt_asc@Base 0
 PGTYPESdate_free@Base 0
 PGTYPESdate_from_asc@Base 0
 PGTYPESdate_from_timestamp@Base 0
 PGTYPESdate_julmdy@Base 0
 PGTYPESdate_mdyjul@Base 0
 PGTYPESdate_new@Base 0
 PGTYPESdate_to_asc@Base 0
 PGTYPESdate_today@Base 0
 PGTYPESdecimal_free@Base 0
 PGTYPESdecimal_new@Base 0
 PGTYPESinterval_copy@Base 0
 PGTYPESinterval_free@Base 0
 PGTYPESinterval_from_asc@Base 0
 PGTYPESinterval_new@Base 0
 PGTYPESinterval_to_asc@Base 0
 PGTYPESnumeric_add@Base 0
 PGTYPESnumeric_cmp@Base 0
 PGTYPESnumeric_copy@Base 0
 PGTYPESnumeric_div@Base 0
 PGTYPESnumeric_free@Base 0
 PGTYPESnumeric_from_asc@Base 0
 PGTYPESnumeric_from_decimal@Base 0
 PGTYPESnumeric_from_double@Base 0
 PGTYPESnumeric_from_int@Base 0
 PGTYPESnumeric_from_long@Base 0
 PGTYPESnumeric_mul@Base 0
 PGTYPESnumeric_new@Base 0
 PGTYPESnumeric_sub@Base 0
 PGTYPESnumeric_to_asc@Base 0
 PGTYPESnumeric_to_decimal@Base 0
 PGTYPESnumeric_to_double@Base 0
 PGTYPESnumeric_to_int@Base 0
 PGTYPESnumeric_to_long@Base 0
 PGTYPEStimestamp_add_interval@Base 0
 PGTYPEStimestamp_current@Base 0
 PGTYPEStimestamp_defmt_asc@Base 0
 PGTYPEStimestamp_defmt_scan@Base 0
 PGTYPEStimestamp_fmt_asc@Base 0
 PGTYPEStimestamp_from_asc@Base 0
 PGTYPEStimestamp_sub@Base 0
 PGTYPEStimestamp_sub_interval@Base 0
 PGTYPEStimestamp_to_asc@Base 0
libpq.so.5 libpq5 #MINVER#
 PQbackendPID@Base 0
 PQbinaryTuples@Base 0
 PQcancel@Base 0
 PQclear@Base 0
 PQclientEncoding@Base 0
 PQcmdStatus@Base 0
 PQcmdTuples@Base 0
 PQconndefaults@Base 0
 PQconnectPoll@Base 0
 PQconnectStart@Base 0
 PQconnectStartParams@Base 9.0~
 PQconnectdb@Base 0
 PQconnectdbParams@Base 9.0~
 PQconnectionNeedsPassword@Base 8.3~rc1-1~
 PQconnectionUsedPassword@Base 8.3~
 PQconninfoFree@Base 0
 PQconninfoParse@Base 8.4~
 PQconsumeInput@Base 0
 PQcopyResult@Base 8.4~
 PQdb@Base 0
 PQdescribePortal@Base 0
 PQdescribePrepared@Base 0
 PQdisplayTuples@Base 0
 PQdsplen@Base 0
 PQencryptPassword@Base 0
 PQendcopy@Base 0
 PQenv2encoding@Base 0
 PQerrorMessage@Base 0
 PQescapeBytea@Base 0
 PQescapeByteaConn@Base 0
 PQescapeIdentifier@Base 9.0~
 PQescapeLiteral@Base 9.0~
 PQescapeString@Base 0
 PQescapeStringConn@Base 0
 PQexec@Base 0
 PQexecParams@Base 0
 PQexecPrepared@Base 0
 PQfformat@Base 0
 PQfinish@Base 0
 PQfireResultCreateEvents@Base 8.4~
 PQflush@Base 0
 PQfmod@Base 0
 PQfn@Base 0
 PQfname@Base 0
 PQfnumber@Base 0
 PQfreeCancel@Base 0
 PQfreeNotify@Base 0
 PQfreemem@Base 0
 PQfsize@Base 0
 PQftable@Base 0
 PQftablecol@Base 0
 PQftype@Base 0
 PQgetCancel@Base 0
 PQgetCopyData@Base 0
 PQgetResult@Base 0
 PQgetisnull@Base 0
 PQgetlength@Base 0
 PQgetline@Base 0
 PQgetlineAsync@Base 0
 PQgetssl@Base 0
 PQgetvalue@Base 0
 PQhost@Base 0
 PQinitOpenSSL@Base 8.4~
 PQinitSSL@Base 0
 PQinstanceData@Base 8.4~
 PQisBusy@Base 0
 PQisnonblocking@Base 0
 PQisthreadsafe@Base 0
 PQlibVersion@Base 9.1~
 PQmakeEmptyPGresult@Base 0
 PQmblen@Base 0
 PQnfields@Base 0
 PQnotifies@Base 0
 PQnparams@Base 0
 PQntuples@Base 0
 PQoidStatus@Base 0
 PQoidValue@Base 0
 PQoptions@Base 0
 PQparameterStatus@Base 0
 PQparamtype@Base 0
 PQpass@Base 0
 PQping@Base 9.1~
 PQpingParams@Base 9.1~
 PQport@Base 0
 PQprepare@Base 0
 PQprint@Base 0
 PQprintTuples@Base 0
 PQprotocolVersion@Base 0
 PQputCopyData@Base 0
 PQputCopyEnd@Base 0
 PQputline@Base 0
 PQputnbytes@Base 0
 PQregisterEventProc@Base 8.4~
 PQregisterThreadLock@Base 0
 PQrequestCancel@Base 0
 PQresStatus@Base 0
 PQreset@Base 0
 PQresetPoll@Base 0
 PQresetStart@Base 0
 PQresultAlloc@Base 8.4~
 PQresultErrorField@Base 0
 PQresultErrorMessage@Base 0
 PQresultInstanceData@Base 8.4~
 PQresultSetInstanceData@Base 8.4~
 PQresultStatus@Base 0
 PQsendDescribePortal@Base 0
 PQsendDescribePrepared@Base 0
 PQsendPrepare@Base 0
 PQsendQuery@Base 0
 PQsendQueryParams@Base 0
 PQsendQueryPrepared@Base 0
 PQserverVersion@Base 0
 PQsetClientEncoding@Base 0
 PQsetErrorVerbosity@Base 0
 PQsetInstanceData@Base 8.4~
 PQsetNoticeProcessor@Base 0
 PQsetNoticeReceiver@Base 0
 PQsetResultAttrs@Base 8.4~
 PQsetdbLogin@Base 0
 PQsetnonblocking@Base 0
 PQsetvalue@Base 8.4~
 PQsocket@Base 0
 PQstatus@Base 0
 PQtrace@Base 0
 PQtransactionStatus@Base 0
 PQtty@Base 0
 PQunescapeBytea@Base 0
 PQuntrace@Base 0
 PQuser@Base 0
 appendBinaryPQExpBuffer@Base 0
 appendPQExpBuffer@Base 0
 appendPQExpBufferChar@Base 0
 appendPQExpBufferStr@Base 0
 createPQExpBuffer@Base 0
 destroyPQExpBuffer@Base 0
 enlargePQExpBuffer@Base 0
 initPQExpBuffer@Base 0
 lo_close@Base 0
 lo_creat@Base 0
 lo_create@Base 0
 lo_export@Base 0
 lo_import@Base 0
 lo_import_with_oid@Base 8.4~
 lo_lseek@Base 0
 lo_open@Base 0
 lo_read@Base 0
 lo_tell@Base 0
 lo_truncate@Base 8.3~
 lo_unlink@Base 0
 lo_write@Base 0
 pg_char_to_encoding@Base 0
 pg_encoding_to_char@Base 0
 pg_utf_mblen@Base 0
 pg_valid_server_encoding@Base 0
 pg_valid_server_encoding_id@Base 8.3~beta1-2~
 pgresStatus@Base 0
 pqsignal@Base 0
 printfPQExpBuffer@Base 0
 resetPQExpBuffer@Base 0
 termPQExpBuffer@Base 0
#!/bin/sh

set -eu

[ -d tmp ] || mkdir tmp

i=1

for pkg in "$@" ; do
        echo "$pkg"
        test -e "$pkg"
        name=$(dpkg-deb -I "$pkg" | perl -lne 'print $1 if /^ Package: (.+)/')
        version=$(dpkg-deb -I "$pkg" | perl -lne 'print $1 if /^ Version: 
(.+)/')
        out=$(printf "tmp/%03d_%s" $i "$version")
        dpkg-deb -x "$pkg" "$out"
        dpkg-gensymbols -P"$out" -p"$name" -v"$version" \
                ${oldsymbols:+-I"$oldsymbols"} -O"$out.symbols" | \
                tee "$out.symbols.diff"
        test -s "$out.symbols.diff" || rm "$out.symbols.diff"
        oldsymbols="$out.symbols"
        rm -rf "$out"
        i=$(expr $i + 1)
done

Attachment: signature.asc
Description: Digital signature

Reply via email to