Euphoria
Ticket #206:
Debian source package requires interpreter
-
Reported by
mattlewis
Sep 25, 2010
The debian source package should be able to be built with only gcc, but as reported in message:112486, it requires an interpreter:
~/rpm/SOURCES/euphoria-4.0/source# ./configure --without-euphoria --full --debug
~/rpm/SOURCES/euphoria-4.0/source]# make
eui -i ../include revget.ex -root /home/hostured/rpm/SOURCES/euphoria-4.0
Details
1. Comment by jimcbrown
Sep 25, 2010
The failure to use eui to run revget.ex is ignored.
Most of the time, when this happens to me, the build continues fine onward and I don't have any problems. Because I have an old be_rev.c left over from a previous build.
The debian source package should probably contain a dummy be_rev.c to allow the compile to continue.
A cleaner way to deal with this might be to make a revget.sh and have revget.sh call eui revget.ex and if that fails or returns a non-zero error code then the shell script manually creates a dummy be_rev.c
The whole rev.e / be_rev.c / revget.ex system has gotten very complicated now. All this for something that CVS used to provide with just a single line in your source code!
2. Comment by mattlewis
Sep 27, 2010
I think part of the issue is that the svn_rev target is symbolic, so it's getting run whether you want it or not. There is a generated version of be_rev.c in the source package, however, the makefile isn't set to ignore errors when it runs revget.ex.
The answer, I think, is to craft the svn_rev target a little better so that it respects the without-euphoria configuration option.
3. Comment by jimcbrown
Sep 30, 2010
I hacked Makefile.gnu so the svn_rev target looked like this,
svn_rev :
-hi hi hi $(EXE) -i ../include revget.ex -root $(ROOTDIR)
And ran make. I got this,
hi hi hi eui -i ../include revget.ex -root /home/jbrown105/other/feu6
make[1]: hi: Command not found
make[1]: [svn_rev] Error 127 (ignored)
making eui
So I don't think revget is the issue. I went ahead and make this change,
svn_rev :
-/bin/sh -c "$(EXE) -i ../include revget.ex -root $(ROOTDIR);true"
So svn_rev will always report success to make. Now I get this,
eui -i /home/jbrown105/other/feu6/include coverage.ex /home/jbrown105/other/feu6/source/intobj
make[1]: eui: Command not found
make[1]: *** [/home/jbrown105/other/feu6/source/intobj/back/coverage.h] Error 127
make[1]: Leaving directory `/home/jbrown105/other/feu6/source'
I went ahead and hacked Makefile.gnu further,
$(BUILDDIR)/$(OBJDIR)/back/coverage.h : $(BUILDDIR)/$(OBJDIR)/main-.c $(BUILDDIR)/$(OBJDIR)/back
ifeq "$(EUPHORIA)" "1"
$(EXE) -i $(TRUNKDIR)/include coverage.ex $(BUILDDIR)/$(OBJDIR)
else
echo coverage.bin $(BUILDDIR)/$(OBJDIR)
endif
And now get this,
/bin/sh -c "eui -i ../include revget.ex -root /home/jbrown105/other/feu6;true"
/bin/sh: eui: command not found
echo coverage.bin /home/jbrown105/other/feu6/source/intobj
coverage.bin /home/jbrown105/other/feu6/source/intobj
make[1]: Leaving directory `/home/jbrown105/other/feu6/source'
make /home/jbrown105/other/feu6/source/eui OBJDIR=intobj EBSD= CONFIG=Makefile.eu EDEBUG=1 EPROFILE=
make[1]: Entering directory `/home/jbrown105/other/feu6/source'
echo coverage.bin /home/jbrown105/other/feu6/source/intobj
coverage.bin /home/jbrown105/other/feu6/source/intobj
/bin/sh -c "eui -i ../include revget.ex -root /home/jbrown105/other/feu6;true"
/bin/sh: eui: command not found
making eui
So it looks like coverage might be an issue for WITHOUT EUPHORIA, but that can be worked around. After these 2 changes, the build stops on a completely unrelated mess that I broke earlier in the week, so I think these should be enough to get a complete build working without eui.
4. Comment by mattlewis
Oct 07, 2010
Excluded the svn_rev dependency if without-euphoria was used (or if no eubins, and no eui on the path). Also, fixed configure script to enforce without-euphoria, even if there is an interpreter in the path.