On 22/12/2013, at 6:20 AM, Shayne Fletcher wrote: > Good experience building Felix from source today.
> The only potentially "worrying" messages I saw during the build process were > > sh: 1: gcc-4.8: not found > Guess --pkg=build_flx_rtl_gcc_linux > > but it seemed not be fatal. The build script attempts to run gcc-4.8. If there's no error, it knows it has gcc-4.8. If there's an error, it assumes gcc < 4.8. It then chooses a toolchain based on this information. This is a "quick fix" to the problem that Felix requires "-fno-aggressive-looop-optimizations" with gcc-4.8 and above. A side effect of the hackery is that it is applied to clang as well. Unlike gcc, clang warns about bad switches but it isn't fatal. Because of poor design decisions by gcc team, it is not possible to use flags for gcc without knowing if they're supported. So if a new flag is used it cannot be "backported" by just using it in a script, you have to calculate if the flag is supported, and the only ways to do that are (a) suck it and see. (b) RTFM + know version number (suck it and see) For warning flags and optimisations, it should be possible to apply unknown flags precisely to allow backporting without requiring dynamic testing. For Felix to deal with this issue better, something a bit better than a hack for a particular version of gcc is required. However for the moment the key thing is to be able to build and install felix because that is required to properly build upgrades: you have to have Felix working to upgrade it from source because the build tools are written in Felix. > On termination I was able to compile and execute a hello_world with no > problems. > > $cat > hello.flx > println$ "Hello world!\n"; > ^D > $flx -o hello hell_world.flx&&./hello > Hello world! This cannot work for multiple reasons, not the least of which is that you created "hello.flx" but then tried to run "hell_world.flx" :) If it had existed you would have created and run a shared library called "hello", and the ./hello command would fail. You need the -c switch to stop flx running the result of a compilation and you need --static to make an executable. > > Issues: > > - The build documentation (initial documentation section) states that after > make install, "the webserver should be running on port 1116" Right. Fixed in repository. "webserver" is just a program, so you can just run it. It has two switches: --port=9999 selects the port. The default is 1234. --root=install-directory is used to set the webserver root. For felix website this has to point at an installation directory, i.e. /usr/local/lib/felix/felix-latest which it does by default. There are some helper scripts in the repository directory "misc". These include Vim and Emacs syntax highlighting and felixweb.conf which is used on Unix systems by placing it in /etc/init I think. This will start the webserver when your machine boots up. You WILL need to edit this file to suit yourself.You can then say: stop felixweb start felixweb I think you have to be root to do that. On OSX you use instead felixweb.plist and the commands which you put in your $HOME directory in the right place for launchctl, again you may need to edit, and you can use launchctl start felixweb launchctl stop felixweb to start and stop the webserver. It's up to you to decide if you want to start the webserver on boot up, or whatever. > - Looks like at the end of the build/install its intended that tests are > executed but that didn't happen because, > > build/release/host/bin/flx --test=build/release --expect > --usage=prototype --indir=test/regress/rt --regex='.*\.flx' > Error opening dir > Processing 0 files > > - FWIW ~/project/felix$ ls build/release/share/src/test/regress/rt/*.flx > shows there not to be an flx files there Well thats correct. The test directory is created by the test script at test/regress/rt in the current directory from a bunch of *.fdoc files in build/release/share/src/test/regress/rt which contain both the *.flx of the test as well as the *.expect of the results. If this didn't work, flx_tangle didn't work. This is most likely because the build didn't succeed. Once you have "flx" in build/release/host/bin you can run make bootstrap and that should do a complete clean rebuild. This is VERY SLOW, but its clean. Most of the other targets are playthings for me as a developer. Because the build is bootstrapped, different processes are required for when I change ordinary bits of Felix and the build tools themselves. -- john skaller skal...@users.sourceforge.net http://felix-lang.org ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language