Hi,

we like to make some major changes to the buildsystem, therefore we
now using separate branches for every logical change. Trunk is
declared as known to work at the moment and I use it for some
projects right now.

I started with a major change in target/linux in
branches/wbx-target-cleanup. 

I suggest following new directory structure:

tools/          - Host tools
        jffs2
        squashfs
        genext2fs
        mkimage

toolchain/      - Toolchain stuff
        kernel-headers
        binutils
        gcc
        uClibc
        gdb

target/         - Firmware and Kernel stuff
        linux/
                Makefile
                Config.in
                control
                generic-2.4
                        patches
                        files
                generic-2.6
                        patches
                        files
                brcm-2.4
                        Makefile
                        Config.in
                        patches
                        files
                        linksys_wrt54gs_v10/
                                config
                                patches
                                files
                        netgear_wgt634u/
                                config
                                patches
                                files
        image/  
                nfs
                usb
                jffs2
                mkimage
                squashfs
        bootloader/
                u-boot
                lzma-loader

extras/         - Extra stuff
        sdk
        imagebuilder

scripts/        - Helper scripts
mk/             - Makefiles from buildsystem
bin/            - Firmware and Packages directory
dl/             - Download cache directory

============================================================

This allows us to have model specific startup scripts, kernel
configuration and kernel patches. I know it has some overhead to
keep many kernel configs for similar devices in sync, but it gains
better stability, if we change some kernel stuff.

I like to add one example, the flash map driver for brcm-2.4. At the
moment the driver tries to support Linksys WAP54G models with 2 MB
flash and 128Kb bootloader, Linksys WRT54GSv10 with 8 MB flash and
256kb, Linksys WRT54Gv2.2 with 4 MB flash and 256kb bootloader and
Netgear WGT634u with 8 MB flash and 386kb bootloader.  It supports
squashfs and jffs2 versions of the firmware.  

If you change the flash map driver, you would need to test at least
8 combinations on 4 different devices. That is unmaintainable. 
And we do not need to change the driver very often. 

I think the new structure have a lot of advantages.

There is a hierarchy of kernel patches, generic-2.x for Linux
2.4 or 2.6 specific patches, which are useful for all boards and
architectures. Then we have board specific patches, which contain
the board secific patches. The last step are model specific patches. 

Same is possible for startup scripts and any files in general.

What do you think about this? Comments are welcome.

Sunshine!
        Waldemar
 

-- 
don't open your wrt, free it
http://www.freewrt.org

Attachment: pgpYfmlC2CUEP.pgp
Description: PGP signature

_______________________________________________
freewrt-developers mailing list
[email protected]
https://www.freewrt.org/lists/listinfo/freewrt-developers

Reply via email to