Hi. 2010/8/4 Daniel Shahaf <d...@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.sk...@gmail.com , AIM: alexws77 ↯