[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#768105: smoke-dev-tools: smokegen does not parse -I options correctly



Package: smoke-dev-tools
Version: 4:4.8.4-1
Severity: normal

I am helping to generate some smoke bindings for the PLplot library.
The command I first used to generate the source code was

/usr/bin/smokegen -config /usr/share/smokegen/qt-config.xml \
-smokeconfig \
/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/smokeconfig.xml
\
-I"/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke" \
-I"/home/software/plplot/HEAD/plplot.git/include" \
-I"/home/software/plplot/HEAD/plplot.git/lib/qsastime" \
-I"/home/software/plplot/HEAD/plplot.git/lib/nistcd" \
-I"/home/software/plplot/HEAD/plplot.git/drivers" \
-I"/home/software/plplot/HEAD/build_dir" \
-I"/home/software/plplot/HEAD/build_dir/include" -- \
/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/plplotqt.h

That generated valid but near empty code.  So I played around a bit
and discovered that smokgen silently drops all -I options that
are not followed by a space, so, e.g.,

/usr/bin/smokegen -config /usr/share/smokegen/qt-config.xml \
-smokeconfig \
/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/smokeconfig.xml
\
-I "/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke" \
-I "/home/software/plplot/HEAD/plplot.git/include" \
-I "/home/software/plplot/HEAD/plplot.git/lib/qsastime" \
-I "/home/software/plplot/HEAD/plplot.git/lib/nistcd" \
-I "/home/software/plplot/HEAD/plplot.git/drivers" \
-I "/home/software/plplot/HEAD/build_dir" \
-I "/home/software/plplot/HEAD/build_dir/include" -- \
/home/software/plplot/HEAD/plplot.git/bindings/qt_gui/smoke/plplotqt.h

generated lots of (valid) code.

Even though smokegen --help documents that a space must
be between the -I option and corresponding directory, I
still view this as an egregous smokegen bug since (a) invalid options
should be noted rather than silently dropped, and (b) smokegen is
trying to mimic how compilers find headers, but (as far as I know)
compilers only honor -I options without a space between "-I" and the
directory name.  (For example, that is the only form documented by 
info g++.) 

So smokegen demanding a blank between the "-I" and the directory name
violates the principle of least surprise and therefore you should
expect most serious smokegen users (who normally must use at least one
-I option) to trip over this issue just like I did.  Violating the
principle of least surprise is just bad human engineering!

N.B. I only have access to Debian stable, but if this issue is not
solved in the latest smokegen you get with debian unstable, I am
virtually positive this is an upstream smokegen bug which I hope you
will propagate there.

-- System Information:
Debian Release: 7.6
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages smoke-dev-tools depends on:
ii  libc6          2.13-38+deb7u4
ii  libgcc1        1:4.7.2-5
ii  libqt4-xml     4:4.8.2+dfsg-11
ii  libqtcore4     4:4.8.2+dfsg-11
ii  libsmokebase3  4:4.8.4-1
ii  libstdc++6     4.7.2-5

smoke-dev-tools recommends no packages.

smoke-dev-tools suggests no packages.

-- no debconf information


Reply to: