From: William S F. <ws...@fu...> - 2013-09-06 17:52:06
|
On 06/09/13 11:47, Simon Marchetto wrote: > Le 05/09/2013 09:55, William S Fulton a écrit : >> Is SWIG generating the same output file names? It should not, so if >> that is the problem, this needs fixing on the SWIG side. If concurrent >> instances of Scilab can't read the same input files, then I would >> organise to get Scilab fixed as more than one instance of the same >> tool should be able run concurrently if the outputs are different. >> > Yes. As you saw it, Swig generates a same file for all tests > 'builder.sce', script that is executed by Scilab to build the test > library. That could be changed. > But there is another problem after: internally, Scilab will generate > another file 'loader.sce', to load the test library. It is fixed, I've > no way to change it ! I'd file that as a bug in Scilab then. I'd expect that should two people want to run different scripts at the same time in the same directory that it would work. > So I decided to build each test in a separate directory, which seems to > be simple & safe to me : more difficult to introduce a conflict in the > future, it is also easier to clean the test, you delete the directory. Yup, nothing wrong with that as a workaround. > I will take your remark and have a look as how Java and C# did that. >> >> Re the Examples makefile changes, I would prefer it to be a lot more >> like the other languages, because I end up having to maintain this >> stuff and it is so much easier if they are consistent. Can you put >> INCLUDE back to how it was? The scilab and scilab_cpp targets invoke >> scilab, they should only be compiling code, not running anything. Also >> why have the get_swig_scilab_args and get_output_dir macros? As you >> are using separate directories for the test-suite, did you notice that >> Java and C# take this approach and was there something wrong with the >> techniques used in there? If you think the makefiles can be improved, >> I'd like it as a patch across all languages - we havn't used $(eval >> $(call ...)) to date, I'm still trying to work out what exactly it is >> doing. Makefile macros are great obfuscators and generally I try to >> minimise their use as readability is way more important. >> > > I understand the importance of consistency. What do you mean by "put > INCLUDE back" ? Oops, I meant TARGET in 7a81f55ac955672c05df95f8c6f352ff7b1e709b in Examples/scilab/*/Makefile. Sorry for confusion. > Not overriding the test-suite swig & compile command > lines (swig_and_compile_cpp,...) ? > scilab & scilab_cpp targets are used only to compile the code. OK, we > execute Scilab for this, because it has a simple command that does the > job. We could do it by our own, it maybe be better, I don't know at this > moment, but it would take time to change all this. > > I've introduced the get_swig_scilab_args to replace that following code: > scilab: $(SRCS) > if test ! -z "$(SRCS)"; then \ > if test ! -z "$(INCLUDES)"; then \ > $(SWIG) -scilab $(SWIGOPT) $(SCILABOPT) -addsrc $(SRCS) > -addcflag $(INCLUDES) $(INTERFACEPATH); \ > else \ > $(SWIG) -scilab $(SWIGOPT) $(SCILABOPT) -addsrc $(SRCS) > $(INTERFACEPATH); \ > fi \ > else \ > if test ! -z "$(INCLUDES)"; then \ > $(SWIG) -scilab $(SWIGOPT) $(SCILABOPT) -addcflag > $(INCLUDES) $(INTERFACEPATH); \ > else \ > $(SWIG) -scilab $(SWIGOPT) $(SCILABOPT) $(INTERFACEPATH); \ > fi \ > fi > > This code is hard to read, and more hard to maintain, and we have it > twice, in the two targets. > Moreover, I had to add another option 'outdir' (to build in separate > directory, I couldn't make swig work without it, having the message > "Unable to open ...wrap.cxx", maybe you have an idea on this). > So i would have a tree of if, with 8 possible combinations. And we may > add other options in the future. > OK, the $(eval, ...) is not a simple syntax, but globally the result > looked much more readable & maintainable to me. > The macro has a name so we know what it does. And to add an option, it > is just simple as this: > ifdef OUTDIR > SWIG_SCILAB_ARGS += -outdir "$OUTDIR" > #endif > (by the way, ifdef ... looks simpler to me than theseif test ! -z "$... ) > > But I am not an expert in shell. And consistency is important to me. So > what can we do ? > It all seems a lot more complicated than elsewhere. Model it on Java which uses -outdir. And if you need to use -addsrc, add it to the SWIGOPT, eg like this in test-suite/java/Makefile.in: SWIGOPT += $(JAVA_PACKAGEOPT) > I agree, let's make examples more consistent. Some of my example indeed > look like more to tests than examples. I didn't understand fully the > logic of example, tests, and their makefiles. And I thought also it was > important to show the different possibilities in examples, as people > read less often the unit tests or even sometimes the documentation ! But > OK, I will rework this. > Thanks. >> Could you arrange to have Scilab patched for the next version to get >> rid of the completely pointless crud it is output each time it is run: >> >> Shared archive loaded. >> Link done. >> > Done. > Nice. > By the way, thanks for your help and changes. No probs. William |