On Tue, 2003-01-21 at 19:37, Micah Dowty wrote:
> Hi Everybody,
> 
> I just wanted to give an outline of the source tree reorganization I'm planning after
> the 0.44 release. This is necessary in my opinion for several reasons:
> 
>  - The current build system is hard to port to non-linux platforms
>  - A lot of the code in CVS is arranged in a less than logical way
>  - The configuration system is hard to cross-compile with for people who
>    aren't familiar with all the GNUisms involved
>  - The configuration system doesn't handle dependencies
>  - The configuration system only configures pgserver
> 
> The reorganization I have planned would involve two major changes: moving the source
> tree to a Subversion server outside of sourceforge, and switching the build system,
> probably to something based on SCons. This subversion server has about 40GB of 
>redundant
> storage, a 256kbps internet connection, and I'll be able to make offsite backups
> regularly. Releases will still be done through sourceforge.
> 
> The big concepts I want to emphasize with the new system are portability, and
> configuration of picogui as a complete system. The directory tree will look something
> like this:
> 
> ------8<------
>  - picogui
>     - README, COPYING, INSTALL...
>     - build (Intermediate files in compilation)
>        - x86-dev
>        - arm-zaurus
>        - ppc-dev
>          ...
>     - bin (final compiled binaries)
>        - theme
>        - x86-dev
>        - arm-zaurus
>        - ppc-dev
>          ...
>     - config (files for the configuration system)
>     - fonts
>     - src (clean source tree)
>        - pgserver
>        - appserver
>        - lib
>           - c
>              - client
>              - media
>           - python
>              - PicoGUI
>           - cpp
>             ...
>        - tools
>           - themec
>           - themedc
>           - future app packaging tools
>        - apps
>           - Only relatively usable apps (pgedit, pterm, scribble, working games...)
>        - devapps
>           - Apps that are only useful for developers
>        - themes
>           - Relatively usable themes, in their own directories
>        - devthemes
>           - Themes only interesting to developers
> ------>8------
> 
> This new source tree layout emphasizes PicoGUI as a complete system. It removes a lot
> of the confusing things about the old tree:
> 
>   - the cli_* naming convention for libraries will be gone, since it can be 
>confusing.
>     The new source tree uses directories to organize libraries by language, and the
>     library should be called the "C client" rather than "cli_c"
> 
>   - Clean up the awful mess in themetools/examples. Themes will separated into 
>generally
>     useful and developers-only, and each theme's source will be in a separate 
>directory.
>     Since svn allows moving source trees easily, themes could be very simply migrated
>     between the categories.
> 
>   - Separate applications into mostly usable, and for developers only
> 
> The new configuration system will still be similar to the current one, but with a few
> key differences:
> 
>   - It will configure the entire source tree, not just pgserver. Every component will
>     be conditionally compiled depending on this configuration
> 
>   - Dependencies will be managed for the whole system. Outside libraries (libpng, 
>zlib,
>     SDL, etc.) will be represented as targets in the config system, as will 'tasks'
>     that select common options for different situations. The operating environment
>     (OS and available libraries) for the target platform will be automatically 
>detected.
> 
>   - Cross compilation can be managed by selecting a different target platform in the
>     config system. It would still support specifying the compiler and paths manually,
>     but this would remove the pain from cross-compiling to common platforms.
> 
>   - Once picogui has app packaging, it will integrate with the config system to 
>provide
>     automatic installation of the completed picogui system into a distro.
> 
>   - There will be many frontends. If you're only selecting a task or two, you could 
>use
>     the command line. There could be graphical configuration frontends for ncurses, 
>gtk,
>     or PicoGUI. You could even have frontends that would glue this system to other
>     config systems, like the ones OpenZaurus or Smartdata use.
> 
>   - The config system will make it clear which options you selected manually, and 
>which
>     are implicitly selected by a dependency. This will make it easy to avoid using
>     compile-time options that aren't necessary, so you can make the smallest binary
>     possible.
> 
> For example, you could start with a blank configuration, then add a "OpenGL game UI"
> task, which would include all the widgets, drivers, and vidlibs you would need for 
>that.
> Or you could include a "Zaurus" task that would build the drivers the Zaurus needs, 
>plus
> a "PDA environment" task that would build common applications. It would automatically
> resolve what vidlibs those drivers need, and what libraries those applications need.
> 
> --Micah


It is a good idea to rearrang a bit the whole project. A few remarks:

      * Some projects people live from (I do not speak only about us...)
        rely on the current structure, so we must first meet a consensus
        on the transition deadline. For instance, switching from CVS to
        Subversion is not a blocker, but would have certainly an impact
        on our schedules.
      * We also have a dependency system (reason why we bother everybody
        with our mdl files ;-) ) which is one layer above autoconf and
        co. Our dependency system deals with a lot of various components
        (kernel, drivers, libs, 3rd party software, etc. etc.) and
        pgserver and some pg apps are among. Your proposed dependency
        system should be an alternative parallel system. I advise to
        build it also on top of autoconf, so that one still can access
        the autoconf level, like before (which may be just sufficient
        for some people).
      * We can give a lot of hints about difficult
        ^H^H^H^H^H^H^H^H^Hinteresting points we faced when dealing with
        dependency issues. We for instance separated the platform from
        the product aspects.
      * The new dependency/platform/product management system should
        certainly not only deal with dependencies, but hide some
        platform-specific options related to cross-compilation. One
        would have to bother about these options only when introducing a
        new platform. All this above autoconf !
      * I find very good to be able to quickly build a (nearly) complete
        system, e.g. for several embedded platforms, or for demo
        purpose. We should however still be able to just pick necessary
        pieces separately.
      * You said:
        > - The current build system is hard to port to non-linux platforms
        Do you mean target platforms or build platforms ?

Regards,

  Pascal


-- 
Pascal Bauermeister
Head of Software Development

SMARTDATA
PSE-B / EPFL
CH-1015 Lausanne

http://www.smartdata.ch
mailto:[EMAIL PROTECTED]
Phone: +41 (21) 693 84 98
fax:   +41 (21) 693 84 91
mobile:+41 (79) 456 82 05


-------------------------------------------------------
This SF.net email is sponsored by: Scholarships for Techies!
Can't afford IT training? All 2003 ictp students receive scholarships.
Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
www.ictp.com/training/sourceforge.asp
_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/pgui-devel

Reply via email to