Home  /  RSS  /  RSS Comments  /  Enter

CppCMS Going Embedded... or I need your help!

Sunday, February 15, 2009, by artyom ; Posted in: Progress, Framework; 2 comments

Recently I start understanding that embedded market may be very important market for CppCMS. So I did several tweaks to the code in order to support embedded systems:

  1. When the library is compiled for embedded system, caching system is totally removed, removed dependency on boost::iostreams and compression library.
  2. Mod-prefork is removed as much more memory consuming.
  3. Removed dynamic loading of templates.
  4. Option for cgi-only library given --- no scgi and and fastcgi APIs are compiled in, all remaining worker "mods" are removed.
  5. Session storage backend is simplified and optimized for cgi when it is compiled in embedded mode.

Everything was cross compiled for arm and tested with qemu-arm, but unfortunately I do not have an access to real ARM hardware with installed Linux system, so...

I need your help:

  1. Download following test_arm_embed.tar.gz
  2. Copy it to your ARM system and extract files.
  3. Try to run cgi script from command line:

     ./hello.dynamic -c config.txt
    

    This is "Hello World" that is dynamically linked with libstdc++. If it does not work try

     ./hello.static -c config.txt
    

    This is full statically compiled version of "Hello World" cgi script.

    You should get as output CGI headers and HTML output.

  4. Please, try to run it several times with:

     time ./hello.dynamic -c config.txt
    

    And tell the average run time.

  5. If you have a web server in your system I'd be very glad if you could test cgi script -- please edit it --- test.cgi to reflect correct executable and path.

I all works fine I'd be glad (if it is possible) to prepare a set of scripts that would test various aspects of cppcms as templates, various session backends and so on.

Thanks

Release Announcement - CppCMS 0.0.3

Monday, February 9, 2009, by artyom ; Posted in: Progress; 0 comments

CppCMS 0.0.3 Released

Changelog:

DbiXX 0.0.3 Released

Changelog:

WikiPP 0.0.2 Released

Changelog:

Examples 0.0.3 Released

No changes, but package location on sourceforge release system had changed

Documentation

User Documentation is complete. It covers most of aspects required for developing with CppCMS.

Still, documentation of internals is missing.

Mirror for CppCMS Documentation

Tuesday, February 3, 2009, by artyom ; 0 comments

I had received lots of complains about low uptime of the CppCMS project site. I had discovered, that the connection my server is uses is terribly slow outside of Israel.

So I decided to create a mirror of all CppCMS documentation on the main SourceForge site: cppcms.sourceforge.net. It should provide reasonable fast access for all visitors outside Israel.

This mirror is updated via rsync every 6 hours. It has only copy of pages that are generated by CppCMS. It is not editable site.

I hope I will solve the problem of ISP and would be able to give high bandwidth access to all visitors soon.

Please: Refer to Sourceforge Site (i.e.: cppcms.sourceforge.net) if you want to refer to CppCMS.

CppCMS 0.0.2 Released!

Friday, January 16, 2009, by artyom ; Posted in: Progress; 0 comments

After long period of development CppCMS 0.0.2 was released!

It includes following components:

Policy Changes

There are important release policy changes:

Major Changes

CppCMS on OpenSolaris...

Saturday, January 10, 2009, by artyom ; Posted in: Progress, Framework; 0 comments

After long fight between Me, Virtual Box and OpenSolaris I was finally be able to build CppCMS under OpenSolaris.

Fighting with OpenSolaris

After I installed OpenSolaris first time, network wasn't recognized, I started to tinker with its interfaces and drivers, and looks like I had ruined something.

At some point I had figured out that I should reboot OS twice in order to make network work. Indeed, it worked, but... after next reboot it stopped. After long period of fighting and googling, I decided to reinstall it.

The next step was even bigger nightmare. I decided to install both Sun Studio and GNU Build system... Total download of 700Mb from very slow OS mirrors.

I let the installation to run at night and at the morning I had found that VirtualBox had crashed my computer... Arrggggggg.

At next step I installed only gnu tool chain, meaning I'll continue to work with GCC and I will not test Sun Studio C++ compiler (anyway most Solaris developers work with gcc). It was done little bit faster.

The next step was building Boost. Unfortunately, OS do not provide package for it. It was very strange, because it comes at core part of any Linux distribution and it is even a part of Cygwin.

So I had taken Boost 1.36 and started build. The build had took forever -- and at the end I had found that only headers where installed! Then I figured out how to build libraries I need. However, there was some build error for shared libraries and I got static libraries only...

After some googling, I had found a patch for boost-jam that fixes linking issues for 1.36 under Solaris. But the patch was unreadable. So at this point I gave up. Static libraries for testing are good enough.

Then I installed most important dependencies: CgiCC, FastCGI. I had build and installed Lighttpd. These steps were very simple and straightforward (Ok... Who still thinks that autotools are bad?)

At the end I checked out latest development version and tried to run autogen.sh. I had figured out that there is no default "automake" and "aclocal". You should specify exact version: automake-1.9 (Have they hear about alternatives?) I did a little fix and configured the system.

Fixing the code

There where 3 build problems:

  1. For some reason gcc didn't like map<> in two headers in code, even with using namespace std. So I need to add std::map explicitly --- I still have no idea why.
  2. I had found a little bug I made it TCP server. I test CppCMS mostly with Boost 1.33.1 and external Asio library.

    Starting from Boost 1.35 Asio is part of it, however in different namespace and with several other little differences. So I had a little bug in using Boost.Asio instead of plain Asio. (Not connected to OpenSolaris at all).

  3. The only real platform specific problem was missing -lsocket and -lnsl libraries. These were easily fixed with 2 lines in confiugre.in script.

Finally I was able to run my simple hello world programs and see that CppCMS becomes truly cross platform --- in addition to Linux and Cygwin, OpenSolaris should be supported as well.

I wonder: "How much time would it take to build CppCMS under FreeBSD?"

previous page

next page

Pages

Categories