subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Skwar <alexanders.mailinglists+nos...@gmail.com>
Subject Re: undefined symbol: REP_CACHE_DB_SQL
Date Wed, 04 Aug 2010 19:23:50 GMT
Hi.

2010/8/4 Daniel Shahaf <d.s@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/     ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar@gmail.com , AIM: alexws77  ↯

Mime
View raw message