Giter VIP home page Giter VIP logo

ginga.ar-diet's Introduction

Dietetic Ginga.ar
-----------------

This is a patched version of Ginga.ar. Currently, the main goals of this project are:

* Strip the CMake build system and replace by plain GNU makefiles.
* Strip Boost library dependency, and replace its functionality by POSIX interfaces.

If you are wondering why anyone would do this
---------------------------------------------

There is nothing wrong with CMake or Boost, they are both great, widely used tools.
However, for embedded platforms it may be of interest to tweak the building process,
changing compile and linker flags, using specific headers and/or linking to specifically 
located libraries. For this, it may be easier to use makefiles.

As for the Boost removal, it simply obeys a matter of size reduction, as Boost libraries
are not small and its funcionality can be achieved by standard Posix interfaces.
This can be compared to Busybox vs. GNU (Busybox replaces standard tools) or
ulibc vs glibc (ulibc is a reduced version of glibc aimed at embedded platforms).

In the end, this is just my own experiment. If you want to report any bugs,
place an issue on github, send me patch or a pull request.

UPDATE: 
Since v1.2.0 boost removal is no longer an important issue. 
The reason is that Ginga no longer depends on boost_serialization,
a large boost component. The remaining Boost dependences are 
not large enough to matter.

Dependencies
------------

* DirectFB 1.4.x
* Boost: system, thread, filesystem
* png, jpeg, tiff, gif libraries
* lua 5.1
* xerces-c (for XML parsing)
* ssl
* curl

Installation
------------

Once you execute 'make' the whole ginga middleware is installed inside build/
directory. There you'll find three different kind of stuff:

* headers inside (build/include/)
* static libraries (build/lib/)
* Ginga binary executable (build/bin/)
* config and data files

The first two, headers and static libs, are only required for development, 
not to run Ginga. So, you won't need this unless you need to link against 
some internal (static) library.

The last two are required if you want to run Ginga, and if you
don't want to run it, why are you wasting your time reading this?

Configuration files
-------------------

The Ginga binary requires config and data files. These are located
under directories according to their subsystem (system, ncl, etc).

So to run Ginga correctly you will have to copy them to a suitable
location. This location is configurable with PREFIX_PATH make variable
in config.mk.

The default value is /home/zeta/ginga. So you'll have to copy files
to this directory. They should look like this:

/home/zeta/ginga/
|-- contextmanager
|-- ncl
|   `-- config
|-- ncl-presenter
|   |-- config
|   |-- epgFactory
|   `-- img
|-- player
|   |-- fonts
|   |-- images
|   `-- scripts
`-- system
    `-- config

When running Ginga if you find any of these messages (or similar)
then you should check you've install these files properly:

  can't open input file:/home/zeta/ginga/system/config/input.cfg
  can't open mimedefs.ini
  can't open config file '/home/zeta/ginga/contextmanager/users.ini'
  can't open cfg file '/home/zeta/ginga/contextmanager/contexts.ini'

Scripts files
-------------

Some Ginga NCL applications also require a few Lua scripts.
They are installed inside build/player/scripts.
There are two ways of handling this:

  1. You can copy them to Lua predefined paths, 
     so Lua can find them. This paths are usually,
     /usr/local/share/lua/5.1/ or usr/share/lua/5.1/.

  2. You can define LUA_PATH in your environment
     (.bashrc, bash_profile, etc) so it looks like this:
     LUA_PATH="$LUA_PATH;/home/zeta/ginga/player/scripts/?.lua;"

If you find a message like:

  PANIC: unprotected error in call to Lua API (module 'tcp_event' not found:

then probably you haven't installed this files properly.

Bloat-o-meter
-------------

For x86 the resulting Ginga executable is 4.8 MB.
The rest of the distributable config/resource files total < 1 MB.

Authors
-------

The Ginga project was originally developed by Telemidia Laboratory at PUC-RIO. 
Further development was carried by LIFIA at UNLP, you can get the original 
Ginga.ar source from here:

http://comunidad.ginga.org.ar/
http://tvd.lifia.info.unlp.edu.ar/ginga.ar/

This project is based in Ginga.ar version 1.2.0.

License
-------

Copyright: 1989-2007 PUC-RIO/LABORATORIO TELEMIDIA, All Rights Reserved.
Copyright: 2010 LIFIA - Facultad de Informatica - Univ. Nacional de La Plata

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License version 2 as published by
the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License version 2 for more
details.

You should have received a copy of the GNU General Public License version 2
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA

For further information contact:
ncl @ telemidia.puc-rio.br
http://www.ncl.org.br
http://www.ginga.org.br
http://www.telemidia.puc-rio.br

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.