1. svn problem with pcre?
- Posted by georgeorr Apr 27, 2009
- 948 views
Jeremy and crew -
When I updated my source code using svn today, I got two messages that may or may not be errors. SVN indicated it did not update pcre.h (in the pcre folder) since "the object already exists". When I changed the name of the existing pcre.h and ran the update again, SVN indicated it did not update config.h (same folder) because the "object already exists". Never deterred, I renamed config.h and tried once more. Everything seemed to work and running "make" (I am using the Linux versions) created eui, euc, eub, and ea as expected. eui shows r1973:1975M as the version.
I have been doing frequent updates using svn for a while now, and this is the first time I have seen this. SVN didn't quite say this was an error, but something didn't look right....
I didn't see anything like this in the Bug Tracker. If you think it is an error, I will be happy to enter it.
Thanks!
George
2. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 27, 2009
- 916 views
George,
This is a problem with the Makefile. We are looking to greatly simplify the makefile or move to a different build system altogether because it's complex and only one person knows how it actually works well enough to fix it. We are waiting on it to be fixed. It was committed to SVN incorrectly.
Jeremy
3. Re: svn problem with pcre?
- Posted by jimcbrown (admin) Apr 27, 2009
- 922 views
George,
This is a problem with the Makefile. We are looking to greatly simplify the makefile or move to a different build system altogether because it's complex and only one person knows how it actually works well enough to fix it. We are waiting on it to be fixed. It was committed to SVN incorrectly.
Jeremy
Why are we depending on that Makefile that only one person understands?
4. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 27, 2009
- 907 views
Why are we depending on that Makefile that only one person understands?
That's why we are exploring a new build system. Building Euphoria is more complex than the average program due to the generated sources and the fact that the sources generated change all the time. This has caused many things to get complex quickly.
Our makefile was simple a while ago, however it was very problematic. As you add a section of code to the interpreter, the makefile would no longer compile things. We would then have to edit the makefile, update the generated file list, then recompile and test our changes. Then the makefile was made much smarter and we no longer had to do that and everyone was happy. However, now when we want to change the makefile, it's quite complex and understood by only one person. So, the new makefile is less troublesome but very complex. That's how we got to where we are.
There are other options out there but many of the build systems have had problems working with our generator because it generates an unknown list of files. We have worked with Watcom Make, GNU Make, CMake and Jam thus far. On all of them we have had to go to the more advanced/complex methods to make things work. The CMake file is the simpliest so far, but it has it's problems as well as much as I like it.
I hope we can get the build tool chosen and working well before we move to beta.
Jeremy
5. Re: svn problem with pcre?
- Posted by mattlewis (admin) Apr 27, 2009
- 907 views
- Last edited Apr 28, 2009
George,
This is a problem with the Makefile. We are looking to greatly simplify the makefile or move to a different build system altogether because it's complex and only one person knows how it actually works well enough to fix it. We are waiting on it to be fixed. It was committed to SVN incorrectly.
Jeremy
Why are we depending on that Makefile that only one person understands?
The problem isn't really the Makefile. And if we move to some other system, most people probably won't bother understanding it, either.
It's that we've changed how pcre is built. Whenever you get a message like that from svn, you can delete the file and svn will check out the new file. The message is svn telling you that it's not going to overwrite a file that you have existing locally with the file from the repository.
Matt
6. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 27, 2009
- 885 views
- Last edited Apr 28, 2009
The problem isn't really the Makefile. And if we move to some other system, most people probably won't bother understanding it, either.
It's that we've changed how pcre is built. Whenever you get a message like that from svn, you can delete the file and svn will check out the new file. The message is svn telling you that it's not going to overwrite a file that you have existing locally with the file from the repository.
I guess I jumped ahead thinking of the problem then building pcre once you get past the svn up. Opps.
Jeremy
7. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 27, 2009
- 878 views
- Last edited Apr 28, 2009
The problem isn't really the Makefile. And if we move to some other system, most people probably won't bother understanding it, either.
It's that we've changed how pcre is built. Whenever you get a message like that from svn, you can delete the file and svn will check out the new file. The message is svn telling you that it's not going to overwrite a file that you have existing locally with the file from the repository.
You can also do svn up --force
Jeremy
8. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 27, 2009
- 954 views
- Last edited Apr 28, 2009
The problem isn't really the Makefile. And if we move to some other system, most people probably won't bother understanding it, either.
Jim just added the building of eutest to the Watcom makefile only. It's a total of 33 lines. We have to translate this to work with GNU Make, then add something similar (but different) to the Unix Makefile so eutest can be built on Unix as well during a normal build install of a source package. Also, the below doesn't include any install or clean targets.
$(BUILDDIR)\eutest.exe: $(BUILDDIR)\eutestdr\main-.c $(BUILDDIR)\eutestdr.wat $(BUILDDIR)\eu.lib $(BUILDDIR)\eutestdr @%create $(BUILDDIR)\eutestdr\eutestdr.lbc @%append $(BUILDDIR)\eutestdr\eutestdr.lbc option quiet @%append $(BUILDDIR)\eutestdr\eutestdr.lbc option caseexact @%append $(BUILDDIR)\eutestdr\eutestdr.lbc library ws2_32 @for %i in ($(EUTEST_OBJECTS)) do @%append $(BUILDDIR)\eutestdr\eutest.lbc file %i wlink $(DEBUGLINK) SYS nt op maxe=25 op q op symf op el @$(BUILDDIR)\eutestdr\eutestdr.lbc name $(BUILDDIR)\eutest.exe $(BUILDDIR)\eutestdr.wat : $(BUILDDIR)\eutestdr\main-.c @if exist $(BUILDDIR)\objtmp rmdir /Q /S $(BUILDDIR)\objtmp @mkdir $(BUILDDIR)\objtmp @copy $(BUILDDIR)\eutestdr\*.c $(BUILDDIR)\objtmp @cd $(BUILDDIR)\objtmp ren *.c *.obj %create eutestdr.wat %append eutestdr.wat $(EU_NAME_OBJECT) = & for %i in (*.obj) do @%append eutestdr.wat $(BUILDDIR)\eutestdr\%i & %append eutestdr.wat del *.obj cd $(TRUNKDIR)\source move $(BUILDDIR)\objtmp\eutestdr.wat $(BUILDDIR) rmdir $(BUILDDIR)\objtmp $(BUILDDIR)\eutestdr\main-.c : $(TRUNKDIR)\source\eutest.ex $(BUILDDIR)\eutestdr -$(RM) $(BUILDDIR)\eutestdr\*.* cd $(BUILDDIR)\eutestdr $(EXE) $(INCDIR) $(EUDEBUG) $(TRUNKDIR)\source\ec.ex -wat -plat $(OS) $(RELEASE_FLAG) $(MANAGED_FLAG) $(DOSEUBIN) $(INCDIR) $(TRUNKDIR)\source\eutest.ex cd $(TRUNKDIR)\source $(BUILDDIR)\eutestdr : mkdir $(BUILDDIR)\eutestdr
In cmake, for example, here is the building what was added to build eutest:
EUC( eutest.ex eutest ) ADD_EXECUTABLE( eutest ${EXECUTABLE_FLAG} ${EUTEST_SOURCES} ) TARGET_LINK_LIBRARIES( eutest eu_back ${EXTRA_LIBS} ) IF( LINK_FLAGS ) SET_TARGET_PROPERTIES( eutest PROPERTIES LINK_FLAGS ${LINK_FLAGS} ) ENDIF()
The above works on Watcom and GNU Make, plus our experiemental MSVC build. I have not yet optimized it either. Really, a few of those lines should move to the EUC call.
Jeremy
9. Re: svn problem with pcre?
- Posted by mattlewis (admin) Apr 28, 2009
- 920 views
The problem isn't really the Makefile. And if we move to some other system, most people probably won't bother understanding it, either.
Jim just added the building of eutest to the Watcom makefile only. It's a total of 33 lines. We have to translate this to work with GNU Make, then add something similar (but different) to the Unix Makefile so eutest can be built on Unix as well during a normal build install of a source package. Also, the below doesn't include any install or clean targets.
<snip>
The above works on Watcom and GNU Make, plus our experiemental MSVC build. I have not yet optimized it either. Really, a few of those lines should move to the EUC call.
Hey, I'm not saying that it wouldn't be a good thing to simplify and have a cross platform solution. I'm just saying that the argument about who all understands the makefiles is a straw man. It's mainly a function of spending time to understand what's in them.
Anyways, here's what I get with cmake 2.6.2as available with Ubuntu 9.04 (I have no idea what any of it means):
$ cmake -G "Unix Makefiles" .. [snip lots of autoconf like stuff...] CMake Error at source/CMakeLists.txt:70 (INCLUDE_DIRECTORIES): include_directories given empty-string as include directory. -- Translating int.ex... CMake Error at source/CMakeMacros.cmake:147 (INCLUDE): include could not find load file: /home/matt/euphoria/dev/rdsclean/build/source/int/int.cmake Call Stack (most recent call first): source/CMakeLists.txt:113 (EUC) CMake Error at source/CMakeLists.txt:116 (ADD_EXECUTABLE): add_executable called with incorrect number of arguments CMake Error at source/CMakeLists.txt:117 (TARGET_LINK_LIBRARIES): Cannot specify link libraries for target "eui" which is not built by this project. -- Configuring incomplete, errors occurred!Matt
10. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 28, 2009
- 967 views
Hey, I'm not saying that it wouldn't be a good thing to simplify and have a cross platform solution. I'm just saying that the argument about who all understands the makefiles is a straw man. It's mainly a function of spending time to understand what's in them.
Anyways, here's what I get with cmake 2.6.2as available with Ubuntu 9.04 (I have no idea what any of it means):
I have not spent time with it recently because of the problem in needing to pre-translate the code, which I didn't like. I was just using the simplicity of CMake as an example.
I am not sure of the answer, but I do know it's quite a drag having to maintain the two build files, and then if in 4.1 we release a MSVC version that's a 3rd makefile that everyone has to learn the syntax of and maintain when making any changes.
Jeremy
11. Re: svn problem with pcre?
- Posted by mattlewis (admin) Apr 28, 2009
- 920 views
I have not spent time with it recently because of the problem in needing to pre-translate the code, which I didn't like.
Yeah, I think the solution is probably to use the new makefile generation from the translator, where the generated makefiles (int.mak, ec.mak, etc) are both targets and includes of the generated makefile. Of course, I have no idea [yet] how to get that to work with a build system like cmake or bakefile.
But then there's not a lot that I do know about them...
Matt
12. Re: svn problem with pcre?
- Posted by jeremy (admin) Apr 28, 2009
- 901 views
Yeah, I think the solution is probably to use the new makefile generation from the translator, where the generated makefiles (int.mak, ec.mak, etc) are both targets and includes of the generated makefile. Of course, I have no idea [yet] how to get that to work with a build system like cmake or bakefile.
Well, the problem with that approach is the need to transfer all sorts of possible configuration flags to the child process. For instance, did the user customize the CFLAGS working on finding the best optimization flags? Or do they have some new platform they are porting to so they added a flag like -DWEIRD_OS... All of those need to be passed on to the child.
Jeremy
13. Re: svn problem with pcre?
- Posted by georgeorr Apr 28, 2009
- 878 views
Thanks Jeremy and team. All is working as expected with release 1987.
George
George,
This is a problem with the Makefile. We are looking to greatly simplify the makefile or move to a different build system altogether because it's complex and only one person knows how it actually works well enough to fix it. We are waiting on it to be fixed. It was committed to SVN incorrectly.
Jeremy
14. Re: svn problem with pcre?
- Posted by jimcbrown (admin) Apr 28, 2009
- 880 views
Well, the problem with that approach is the need to transfer all sorts of possible configuration flags to the child process. For instance, did the user customize the CFLAGS working on finding the best optimization flags? Or do they have some new platform they are porting to so they added a flag like -DWEIRD_OS... All of those need to be passed on to the child.
Jeremy
Actually, that should be the most trivial part....