From: Felix Fietkau Date: Fri, 13 Oct 2006 20:51:49 +0000 (+0200) Subject: finally move buildroot-ng to trunk X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=60c1f0f64d23;p=openwrt%2Fstaging%2Fansuel.git finally move buildroot-ng to trunk --- 60c1f0f64d23003a19a07d6b9638542130f6641d diff --cc BSDmakefile index 0000000000,0000000000..f6f0cadf46 new file mode 100644 --- /dev/null +++ b/BSDmakefile @@@ -1,0 -1,0 +1,2 @@@ ++world ${.TARGETS}: ++ @gmake $@ diff --cc Config.in index 0000000000,0000000000..74b3696242 new file mode 100644 --- /dev/null +++ b/Config.in @@@ -1,0 -1,0 +1,101 @@@ ++# ++ ++mainmenu "OpenWrt Configuration" ++ ++config HAVE_DOT_CONFIG ++ bool ++ default y ++ ++source "target/Config.in" ++ ++config ALL ++ bool "Select all packages by default" ++ default n ++ ++menuconfig DEVEL ++ bool "Advanced configuration options (for developers)" ++ default n ++ select BUILDOPTS ++ select TOOLCHAINOPTS if !NATIVE_TOOLCHAIN ++ ++config BROKEN ++ bool "Show broken platforms / packages" if DEVEL ++ default n ++ ++menuconfig BUILDOPTS ++ bool "Build Options" if DEVEL ++ ++config AUTOREBUILD ++ bool ++ prompt "Automatic rebuild of packages" if BUILDOPTS ++ default y ++ help ++ Automatically rebuild packages when their files change ++ ++config TAR_VERBOSITY ++ bool ++ prompt "Tar verbose" if BUILDOPTS ++ default n ++ ++config JLEVEL ++ int ++ prompt "Number of jobs to run simultaneously" if BUILDOPTS ++ default "1" ++ help ++ Number of jobs to run simultanesouly ++ ++config CCACHE ++ bool ++ prompt "Use ccache" if BUILDOPTS ++ default n ++ help ++ Compiler cache; see http://ccache.samba.org/ ++ ++source "toolchain/Config.in" ++source "target/sdk/Config.in" ++ ++menu "Target Images" ++ config TARGET_ROOTFS_INITRAMFS ++ bool "ramdisk" ++ default n ++ depends LINUX_2_6 ++ help ++ Embed the rootfs into the kernel (initramfs) ++ ++ config TARGET_ROOTFS_JFFS2 ++ bool "jffs2" ++ default y if USES_JFFS2 ++ depends !TARGET_ROOTFS_INITRAMFS ++ help ++ Build a jffs2 root filesystem ++ ++ config TARGET_ROOTFS_SQUASHFS ++ bool "squashfs" ++ default y if USES_SQUASHFS ++ depends !TARGET_ROOTFS_INITRAMFS ++ help ++ Build a squashfs-lzma root filesystem ++ ++ config TARGET_ROOTFS_TGZ ++ bool "tgz" ++ default y if !USES_SQUASHFS && !USES_JFFS2 ++ depends !TARGET_ROOTFS_INITRAMFS ++ help ++ Build a compressed tar archive of the the root filesystem ++ ++ config TARGET_ROOTFS_EXT2FS ++ bool "ext2" ++ default y if !USES_SQUASHFS && !USES_JFFS2 ++ depends !TARGET_ROOTFS_INITRAMFS ++ help ++ Ext2 file system with some free space for uml images ++ ++comment "Image Options" ++ ++source "target/image/*/Config.in" ++ ++endmenu ++ ++source "target/linux/Config.in" ++source ".config.in" ++ diff --cc LICENSE index 0000000000,0000000000..d60c31a97a new file mode 100644 --- /dev/null +++ b/LICENSE @@@ -1,0 -1,0 +1,340 @@@ ++ GNU GENERAL PUBLIC LICENSE ++ Version 2, June 1991 ++ ++ Copyright (C) 1989, 1991 Free Software Foundation, Inc. ++ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ Preamble ++ ++ The licenses for most software are designed to take away your ++freedom to share and change it. By contrast, the GNU General Public ++License is intended to guarantee your freedom to share and change free ++software--to make sure the software is free for all its users. This ++General Public License applies to most of the Free Software ++Foundation's software and to any other program whose authors commit to ++using it. (Some other Free Software Foundation software is covered by ++the GNU Library General Public License instead.) You can apply it to ++your programs, too. ++ ++ When we speak of free software, we are referring to freedom, not ++price. Our General Public Licenses are designed to make sure that you ++have the freedom to distribute copies of free software (and charge for ++this service if you wish), that you receive source code or can get it ++if you want it, that you can change the software or use pieces of it ++in new free programs; and that you know you can do these things. ++ ++ To protect your rights, we need to make restrictions that forbid ++anyone to deny you these rights or to ask you to surrender the rights. ++These restrictions translate to certain responsibilities for you if you ++distribute copies of the software, or if you modify it. ++ ++ For example, if you distribute copies of such a program, whether ++gratis or for a fee, you must give the recipients all the rights that ++you have. You must make sure that they, too, receive or can get the ++source code. And you must show them these terms so they know their ++rights. ++ ++ We protect your rights with two steps: (1) copyright the software, and ++(2) offer you this license which gives you legal permission to copy, ++distribute and/or modify the software. ++ ++ Also, for each author's protection and ours, we want to make certain ++that everyone understands that there is no warranty for this free ++software. If the software is modified by someone else and passed on, we ++want its recipients to know that what they have is not the original, so ++that any problems introduced by others will not reflect on the original ++authors' reputations. ++ ++ Finally, any free program is threatened constantly by software ++patents. We wish to avoid the danger that redistributors of a free ++program will individually obtain patent licenses, in effect making the ++program proprietary. To prevent this, we have made it clear that any ++patent must be licensed for everyone's free use or not licensed at all. ++ ++ The precise terms and conditions for copying, distribution and ++modification follow. ++ ++ GNU GENERAL PUBLIC LICENSE ++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ++ ++ 0. This License applies to any program or other work which contains ++a notice placed by the copyright holder saying it may be distributed ++under the terms of this General Public License. The "Program", below, ++refers to any such program or work, and a "work based on the Program" ++means either the Program or any derivative work under copyright law: ++that is to say, a work containing the Program or a portion of it, ++either verbatim or with modifications and/or translated into another ++language. (Hereinafter, translation is included without limitation in ++the term "modification".) Each licensee is addressed as "you". ++ ++Activities other than copying, distribution and modification are not ++covered by this License; they are outside its scope. The act of ++running the Program is not restricted, and the output from the Program ++is covered only if its contents constitute a work based on the ++Program (independent of having been made by running the Program). ++Whether that is true depends on what the Program does. ++ ++ 1. You may copy and distribute verbatim copies of the Program's ++source code as you receive it, in any medium, provided that you ++conspicuously and appropriately publish on each copy an appropriate ++copyright notice and disclaimer of warranty; keep intact all the ++notices that refer to this License and to the absence of any warranty; ++and give any other recipients of the Program a copy of this License ++along with the Program. ++ ++You may charge a fee for the physical act of transferring a copy, and ++you may at your option offer warranty protection in exchange for a fee. ++ ++ 2. You may modify your copy or copies of the Program or any portion ++of it, thus forming a work based on the Program, and copy and ++distribute such modifications or work under the terms of Section 1 ++above, provided that you also meet all of these conditions: ++ ++ a) You must cause the modified files to carry prominent notices ++ stating that you changed the files and the date of any change. ++ ++ b) You must cause any work that you distribute or publish, that in ++ whole or in part contains or is derived from the Program or any ++ part thereof, to be licensed as a whole at no charge to all third ++ parties under the terms of this License. ++ ++ c) If the modified program normally reads commands interactively ++ when run, you must cause it, when started running for such ++ interactive use in the most ordinary way, to print or display an ++ announcement including an appropriate copyright notice and a ++ notice that there is no warranty (or else, saying that you provide ++ a warranty) and that users may redistribute the program under ++ these conditions, and telling the user how to view a copy of this ++ License. (Exception: if the Program itself is interactive but ++ does not normally print such an announcement, your work based on ++ the Program is not required to print an announcement.) ++ ++These requirements apply to the modified work as a whole. If ++identifiable sections of that work are not derived from the Program, ++and can be reasonably considered independent and separate works in ++themselves, then this License, and its terms, do not apply to those ++sections when you distribute them as separate works. But when you ++distribute the same sections as part of a whole which is a work based ++on the Program, the distribution of the whole must be on the terms of ++this License, whose permissions for other licensees extend to the ++entire whole, and thus to each and every part regardless of who wrote it. ++ ++Thus, it is not the intent of this section to claim rights or contest ++your rights to work written entirely by you; rather, the intent is to ++exercise the right to control the distribution of derivative or ++collective works based on the Program. ++ ++In addition, mere aggregation of another work not based on the Program ++with the Program (or with a work based on the Program) on a volume of ++a storage or distribution medium does not bring the other work under ++the scope of this License. ++ ++ 3. You may copy and distribute the Program (or a work based on it, ++under Section 2) in object code or executable form under the terms of ++Sections 1 and 2 above provided that you also do one of the following: ++ ++ a) Accompany it with the complete corresponding machine-readable ++ source code, which must be distributed under the terms of Sections ++ 1 and 2 above on a medium customarily used for software interchange; or, ++ ++ b) Accompany it with a written offer, valid for at least three ++ years, to give any third party, for a charge no more than your ++ cost of physically performing source distribution, a complete ++ machine-readable copy of the corresponding source code, to be ++ distributed under the terms of Sections 1 and 2 above on a medium ++ customarily used for software interchange; or, ++ ++ c) Accompany it with the information you received as to the offer ++ to distribute corresponding source code. (This alternative is ++ allowed only for noncommercial distribution and only if you ++ received the program in object code or executable form with such ++ an offer, in accord with Subsection b above.) ++ ++The source code for a work means the preferred form of the work for ++making modifications to it. For an executable work, complete source ++code means all the source code for all modules it contains, plus any ++associated interface definition files, plus the scripts used to ++control compilation and installation of the executable. However, as a ++special exception, the source code distributed need not include ++anything that is normally distributed (in either source or binary ++form) with the major components (compiler, kernel, and so on) of the ++operating system on which the executable runs, unless that component ++itself accompanies the executable. ++ ++If distribution of executable or object code is made by offering ++access to copy from a designated place, then offering equivalent ++access to copy the source code from the same place counts as ++distribution of the source code, even though third parties are not ++compelled to copy the source along with the object code. ++ ++ 4. You may not copy, modify, sublicense, or distribute the Program ++except as expressly provided under this License. Any attempt ++otherwise to copy, modify, sublicense or distribute the Program is ++void, and will automatically terminate your rights under this License. ++However, parties who have received copies, or rights, from you under ++this License will not have their licenses terminated so long as such ++parties remain in full compliance. ++ ++ 5. You are not required to accept this License, since you have not ++signed it. However, nothing else grants you permission to modify or ++distribute the Program or its derivative works. These actions are ++prohibited by law if you do not accept this License. Therefore, by ++modifying or distributing the Program (or any work based on the ++Program), you indicate your acceptance of this License to do so, and ++all its terms and conditions for copying, distributing or modifying ++the Program or works based on it. ++ ++ 6. Each time you redistribute the Program (or any work based on the ++Program), the recipient automatically receives a license from the ++original licensor to copy, distribute or modify the Program subject to ++these terms and conditions. You may not impose any further ++restrictions on the recipients' exercise of the rights granted herein. ++You are not responsible for enforcing compliance by third parties to ++this License. ++ ++ 7. If, as a consequence of a court judgment or allegation of patent ++infringement or for any other reason (not limited to patent issues), ++conditions are imposed on you (whether by court order, agreement or ++otherwise) that contradict the conditions of this License, they do not ++excuse you from the conditions of this License. If you cannot ++distribute so as to satisfy simultaneously your obligations under this ++License and any other pertinent obligations, then as a consequence you ++may not distribute the Program at all. For example, if a patent ++license would not permit royalty-free redistribution of the Program by ++all those who receive copies directly or indirectly through you, then ++the only way you could satisfy both it and this License would be to ++refrain entirely from distribution of the Program. ++ ++If any portion of this section is held invalid or unenforceable under ++any particular circumstance, the balance of the section is intended to ++apply and the section as a whole is intended to apply in other ++circumstances. ++ ++It is not the purpose of this section to induce you to infringe any ++patents or other property right claims or to contest validity of any ++such claims; this section has the sole purpose of protecting the ++integrity of the free software distribution system, which is ++implemented by public license practices. Many people have made ++generous contributions to the wide range of software distributed ++through that system in reliance on consistent application of that ++system; it is up to the author/donor to decide if he or she is willing ++to distribute software through any other system and a licensee cannot ++impose that choice. ++ ++This section is intended to make thoroughly clear what is believed to ++be a consequence of the rest of this License. ++ ++ 8. If the distribution and/or use of the Program is restricted in ++certain countries either by patents or by copyrighted interfaces, the ++original copyright holder who places the Program under this License ++may add an explicit geographical distribution limitation excluding ++those countries, so that distribution is permitted only in or among ++countries not thus excluded. In such case, this License incorporates ++the limitation as if written in the body of this License. ++ ++ 9. The Free Software Foundation may publish revised and/or new versions ++of the General Public License from time to time. Such new versions will ++be similar in spirit to the present version, but may differ in detail to ++address new problems or concerns. ++ ++Each version is given a distinguishing version number. If the Program ++specifies a version number of this License which applies to it and "any ++later version", you have the option of following the terms and conditions ++either of that version or of any later version published by the Free ++Software Foundation. If the Program does not specify a version number of ++this License, you may choose any version ever published by the Free Software ++Foundation. ++ ++ 10. If you wish to incorporate parts of the Program into other free ++programs whose distribution conditions are different, write to the author ++to ask for permission. For software which is copyrighted by the Free ++Software Foundation, write to the Free Software Foundation; we sometimes ++make exceptions for this. Our decision will be guided by the two goals ++of preserving the free status of all derivatives of our free software and ++of promoting the sharing and reuse of software generally. ++ ++ NO WARRANTY ++ ++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY ++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN ++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES ++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED ++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS ++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, ++REPAIR OR CORRECTION. ++ ++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, ++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING ++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED ++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY ++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER ++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGES. ++ ++ END OF TERMS AND CONDITIONS ++ ++ How to Apply These Terms to Your New Programs ++ ++ If you develop a new program, and you want it to be of the greatest ++possible use to the public, the best way to achieve this is to make it ++free software which everyone can redistribute and change under these terms. ++ ++ To do so, attach the following notices to the program. It is safest ++to attach them to the start of each source file to most effectively ++convey the exclusion of warranty; and each file should have at least ++the "copyright" line and a pointer to where the full notice is found. ++ ++ ++ Copyright (C) ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ 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 for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ ++ ++Also add information on how to contact you by electronic and paper mail. ++ ++If the program is interactive, make it output a short notice like this ++when it starts in an interactive mode: ++ ++ Gnomovision version 69, Copyright (C) year name of author ++ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. ++ This is free software, and you are welcome to redistribute it ++ under certain conditions; type `show c' for details. ++ ++The hypothetical commands `show w' and `show c' should show the appropriate ++parts of the General Public License. Of course, the commands you use may ++be called something other than `show w' and `show c'; they could even be ++mouse-clicks or menu items--whatever suits your program. ++ ++You should also get your employer (if you work as a programmer) or your ++school, if any, to sign a "copyright disclaimer" for the program, if ++necessary. Here is a sample; alter the names: ++ ++ Yoyodyne, Inc., hereby disclaims all copyright interest in the program ++ `Gnomovision' (which makes passes at compilers) written by James Hacker. ++ ++ , 1 April 1989 ++ Ty Coon, President of Vice ++ ++This General Public License does not permit incorporating your program into ++proprietary programs. If your program is a subroutine library, you may ++consider it more useful to permit linking proprietary applications with the ++library. If this is what you want to do, use the GNU Library General ++Public License instead of this License. diff --cc Makefile index 0000000000,0000000000..39ffb17fb5 new file mode 100644 --- /dev/null +++ b/Makefile @@@ -1,0 -1,0 +1,141 @@@ ++# Makefile for OpenWrt ++# ++# Copyright (C) 2006 OpenWrt.org ++# Copyright (C) 2006 by Felix Fietkau ++# ++# This is free software, licensed under the GNU General Public License v2. ++# See /LICENSE for more information. ++# ++ ++RELEASE:=Kamikaze ++#VERSION:=2.0 # uncomment for final release ++ ++#-------------------------------------------------------------- ++# Just run 'make menuconfig', configure stuff, then run 'make'. ++# You shouldn't need to mess with anything beyond this point... ++#-------------------------------------------------------------- ++ ++all: world ++ ++SHELL:=/usr/bin/env bash ++export TOPDIR=${shell pwd} ++include $(TOPDIR)/include/verbose.mk ++ ++OPENWRTVERSION:=$(RELEASE) ++ifneq ($(VERSION),) ++ OPENWRTVERSION:=$(VERSION) ($(OPENWRTVERSION)) ++else ++ REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' ) ++ ifneq ($(REV),) ++ OPENWRTVERSION:=$(OPENWRTVERSION)/r$(REV) ++ endif ++endif ++export OPENWRTVERSION ++ ++ifneq ($(shell ./scripts/timestamp.pl -p .pkginfo package Makefile),.pkginfo) ++ .pkginfo .config: FORCE ++endif ++ ++ifeq ($(FORCE),) ++ .config scripts/config/conf scripts/config/mconf: .prereq-build ++ world: .prereq-packages ++endif ++ ++.pkginfo: ++ @echo Collecting package info... ++ @-for dir in package/*/; do \ ++ echo Source-Makefile: $${dir}Makefile; \ ++ $(NO_TRACE_MAKE) --no-print-dir DUMP=1 -C $$dir || echo "ERROR: please fix $${dir}Makefile" >&2; \ ++ done > $@ ++ ++pkginfo-clean: FORCE ++ -rm -f .pkginfo .config.in ++ ++.config.in: .pkginfo ++ @./scripts/gen_menuconfig.pl < $< > $@ || rm -f $@ ++ ++.config: ./scripts/config/conf .config.in ++ @[ -f .config ] || $(NO_TRACE_MAKE) menuconfig ++ @$< -D .config Config.in &> /dev/null ++ ++scripts/config/mconf: ++ @$(MAKE) -C scripts/config all ++ ++scripts/config/conf: ++ @$(MAKE) -C scripts/config conf ++ ++config: scripts/config/conf .config.in FORCE ++ $< Config.in ++ ++config-clean: FORCE ++ $(NO_TRACE_MAKE) -C scripts/config clean ++ ++defconfig: scripts/config/conf .config.in FORCE ++ touch .config ++ $< -D .config Config.in ++ ++oldconfig: scripts/config/conf .config.in FORCE ++ $< -o Config.in ++ ++menuconfig: scripts/config/mconf .config.in FORCE ++ $< Config.in ++ ++package/%: .pkginfo FORCE ++ $(MAKE) -C package $(patsubst package/%,%,$@) ++ ++target/%: .pkginfo FORCE ++ $(MAKE) -C target $(patsubst target/%,%,$@) ++ ++tools/%: FORCE ++ $(MAKE) -C tools $(patsubst tools/%,%,$@) ++ ++toolchain/%: FORCE ++ $(MAKE) -C toolchain $(patsubst toolchain/%,%,$@) ++ ++.prereq-build: include/prereq-build.mk ++ @$(NO_TRACE_MAKE) -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \ ++ echo "Prerequisite check failed. Use FORCE=1 to override."; \ ++ rm -rf $(TOPDIR)/tmp; \ ++ false; \ ++ } ++ @rm -rf $(TOPDIR)/tmp ++ @touch $@ ++ ++.prereq-packages: include/prereq.mk .pkginfo .config ++ @$(NO_TRACE_MAKE) -s -C package prereq 2>/dev/null || { \ ++ echo "Prerequisite check failed. Use FORCE=1 to override."; \ ++ false; \ ++ } ++ @rm -rf "$(TOPDIR)/tmp" ++ @touch $@ ++ ++prereq: .prereq-build .prereq-packages FORCE ++ ++download: .config FORCE ++ $(MAKE) tools/download ++ $(MAKE) toolchain/download ++ $(MAKE) package/download ++ $(MAKE) target/download ++ ++world: .config FORCE ++ $(MAKE) tools/install ++ $(MAKE) toolchain/install ++ $(MAKE) target/compile ++ $(MAKE) package/compile ++ $(MAKE) package/install ++ $(MAKE) target/install ++ $(MAKE) package/index ++ ++clean: FORCE ++ rm -rf build_* bin ++ ++dirclean: clean ++ rm -rf staging_dir_* toolchain_build_* tool_build ++ ++distclean: dirclean config-clean ++ rm -rf dl .*config* .pkg* .prereq ++ ++.SILENT: clean dirclean distclean config-clean download world ++FORCE: ; ++.PHONY: FORCE ++%: ; diff --cc README index 0000000000,0000000000..2bba6fa6f6 new file mode 100644 --- /dev/null +++ b/README @@@ -1,0 -1,0 +1,24 @@@ ++This is the buildsystem for the OpenWrt Linux distribution ++ ++Please use "make menuconfig" to configure your appreciated ++configuration for the toolchain and firmware. ++ ++You need to have installed gcc, binutils, patch, bzip2, flex, bison, ++make, gettext, pkg-config, unzip, libz-dev and libc headers. ++ ++Simply running 'make' will build your firmware. ++It will download all sources, build the cross-compile toolchain, ++the kernel and all choosen applications. ++ ++You can use scripts/flash.sh for remotely updating your embedded system ++via tftp. ++ ++The buildroot system is documented in docs/buildroot-documentation.html. ++ ++Building your own firmware you need to have access to a Linux system. ++ ++Sunshine! ++ Your OpenWrt Project ++ http://openwrt.org ++ ++ diff --cc docs/config.txt index 0000000000,0000000000..59881580b4 new file mode 100644 --- /dev/null +++ b/docs/config.txt @@@ -1,0 -1,0 +1,72 @@@ ++ == Structure of the configuration files == ++ ++The config files are divided into sections and options/values. ++ ++Every section has a type, but does not necessarily have a name. ++Every option has a name and a value and is assigned to the section ++it was written under. ++ ++Syntax: ++ ++config [] # Section ++ option # Option ++ ++ ++Every parameter needs to be a single string and is formatted exactly ++like a parameter for a shell function. The same rules for Quoting and ++special characters also apply, as it is parsed by the shell. ++ ++ ++ ++ == Parsing configuration files in custom scripts == ++ ++To be able to load configuration files, you need to include the common ++functions with: ++ ++. /etc/functions.sh ++ ++Then you can use config_load to load config files. The function ++first checks for as absolute filename and falls back to loading ++it from /etc/config (which is the most common way of using it). ++ ++If you want to use special callbacks for sections and/or options, you ++need to define the following shell functions before running config_load ++(after including /etc/functions.sh): ++ ++config_cb() { ++ local type="$1" ++ local name="$2" ++ # commands to be run for every section ++} ++ ++option_cb() { ++ # commands to be run for every option ++} ++ ++You can also alter option_cb from config_cb based on the section type. ++This allows you to process every single config section based on its type ++individually. ++ ++config_cb is run every time a new section starts (before options are being ++processed). You can access the last section through the CONFIG_SECTION ++variable. Also an extra call to config_cb (without a new section) is generated ++after config_load is done. ++That allows you to process sections both before and after all options were ++processed. ++ ++You can access already processed options with the config_get command ++Syntax: ++ ++config_get