[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: undefined symbol: REP_CACHE_DB_SQL

From: Alexander Skwar <alexanders.mailinglists+nospam_at_gmail.com>
Date: Wed, 4 Aug 2010 21:23:50 +0200

Hi.

2010/8/4 Daniel Shahaf <d.s_at_daniel.shahaf.name>

> No.  That file is auto-generated from libsvn_fs_fs/*.sql (IIRC, by
> build/transform_sql.py).
>
> (And, apparently, the autogeneration mechanism has changed, since in trunk I get
>
> % grep REP_CACHE_DB_SQL .../subversion/libsvn_fs_fs/*h
> src/svn/trunk.d/subversion/libsvn_fs_fs/rep-cache-db.h:#define REP_CACHE_DB_SQL_DECLARE_STATEMENTS(varname) \
>
> .)

Hm. I ran transform_sql.py manually like so:

cd build
./transform_sql.py ../subversion/libsvn_fs_fs/rep-cache-db.sql foo.h2

or
~/.software/Python-2.5.2/bin/python2.5 transform_sql.py
../subversion/libsvn_fs_fs/rep-cache-db.sql foo.h3

or
/opt/csw/bin/python2.5 transform_sql.py
../subversion/libsvn_fs_fs/rep-cache-db.sql foo.h4

or
/usr/bin/python2.4 transform_sql.py
../subversion/libsvn_fs_fs/rep-cache-db.sql foo.h4

In all these cases, the generated "foo.*" file is fine.

Ah!

--($ ~/Source/subversion-1.6.12/build)-- grep -r transform_sql ..
../build/transform_sql.py:# transform_sql.py -- create a header file
with the appropriate SQL variables
../build/generator/gen_win.py: import transform_sql
../build/generator/gen_win.py: transform_sql.main(open(sql + '.sql', 'r'),
../Makefile.in: $(top_srcdir)/build/transform_sql.sh $< < $< >
$(top_srcdir)/$@
../Makefile: $(top_srcdir)/build/transform_sql.sh $< < $< >
$(top_srcdir)/$@

It's *NOT* the Python .py file which is run, but the .sh Shell
script!

And it's this script, which doesn't work!

--($ ~/Source/subversion-1.6.12/build)-- /bin/sh -x ./transform_sql.sh
 ../subversion/libsvn_fs_fs/rep-cache-db.sql
+ basename ../subversion/libsvn_fs_fs/rep-cache-db.sql
+ + trtr [a-z]. _+
[A-Z]
tr - _
varname=rep_cZche_db_sql
[…]

What you can see here, is that varname is already wrong!

From the sh file:

varname=`basename $1 | tr "[a-z]" "[A-Z]" | tr "-" "_" | tr "." "_"`

Okay. It's using "tr", which is:
--($ ~/Source/subversion-1.6.12/build)-- which tr
/usr/xpg6/bin/tr

And now pay attention:

--($ ~/Source/subversion-1.6.12/build)--
E=../subversion/libsvn_fs_fs/rep-cache-db.sql

--($ ~/Source/subversion-1.6.12/build)-- basename $E
rep-cache-db.sql

--($ ~/Source/subversion-1.6.12/build)-- basename $E | tr "[a-z]" "[A-Z]"
rep-cZche-db.sql

And now I use GNU tr:

--($ ~/Source/subversion-1.6.12/build)-- basename $E | gtr "[a-z]" "[A-Z]"
REP-CACHE-DB.SQL

Hmmmm.....

It's not a GNUism. If I use /usr/bin/tr instead of /usr/xpg6/bin/tr or
/usr/xpg4/bin/tr, then it also works.

Seeing that "tr" doesn't always work the same way, maybe it would
be useful to use something else? Eg. perl, which seems to be the most
"portable"?

--($ ~/Source/subversion-1.6.12/build)-- date | sed 'y/[a-z]/[A-Z]/'
Mittwoch, 4. August 2010 21:10 Uhr CEST

-> sed didn't work

--($ ~/Source/subversion-1.6.12/build)-- date | /usr/bin/awk '{print
toupper($0)}'
Mittwoch, 4. August 2010 21:09 Uhr CEST

-> awk also didn't work

But perl works.

--($ ~/Source/subversion-1.6.12/build)-- date | perl -pe 'tr/a-z/A-Z/; '
MITTWOCH, 4. AUGUST 2010 21:21 UHR CEST

And it would allow to combine the seperate tr commands, eg.:

varname=`basename $1 | perl -pe 'tr/a-z/A-Z/; tr/-/_/; tr/./_/;'`

Does it make sense to file this as a bug?

cheers,

Alexander

--
↯    Lifestream (Twitter, Blog, …) ↣ http://alexs77.soup.io/%c2     ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar_at_gmail.com , AIM: alexws77  ↯
Received on 2010-08-04 21:24:51 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.