mirror of
https://github.com/godotengine/buildroot.git
synced 2026-01-08 02:09:48 +03:00
Compare commits
271 Commits
2009.05_rc
...
2009.08_rc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3190d5bf06 | ||
|
|
9be449ff55 | ||
|
|
9a6d6cf52b | ||
|
|
56fcdc9b6e | ||
|
|
81f9990e02 | ||
|
|
4840c451d9 | ||
|
|
a7b50b94bf | ||
|
|
ca5b75f7ff | ||
|
|
b062925376 | ||
|
|
44663da45b | ||
|
|
dcb752b165 | ||
|
|
ec386cbcdf | ||
|
|
bb14fc4019 | ||
|
|
37cea19340 | ||
|
|
e15c0d07e1 | ||
|
|
385e9e4ea5 | ||
|
|
0ef93af1e4 | ||
|
|
8d880c3e5c | ||
|
|
d4a8eebf59 | ||
|
|
4ff9489412 | ||
|
|
1a2433b58e | ||
|
|
33f13e393f | ||
|
|
00c8bdd561 | ||
|
|
5079d7a0b9 | ||
|
|
ff69aeea40 | ||
|
|
18865f7f2d | ||
|
|
4e9807a645 | ||
|
|
8162f3977a | ||
|
|
2a966bcd3b | ||
|
|
7a1a334c42 | ||
|
|
90a459ce4d | ||
|
|
930f3db167 | ||
|
|
2831a05d03 | ||
|
|
5d41383920 | ||
|
|
e63fd15e20 | ||
|
|
52dbe07119 | ||
|
|
d9a9501771 | ||
|
|
7e7576c3d8 | ||
|
|
f26acf61eb | ||
|
|
76dade1788 | ||
|
|
6fecd53e99 | ||
|
|
33a3e7ba2e | ||
|
|
6cd6353ff9 | ||
|
|
69f982cdad | ||
|
|
b0df9df39a | ||
|
|
4b3e11b3e7 | ||
|
|
074d73a919 | ||
|
|
314cdcbd25 | ||
|
|
53fd73611c | ||
|
|
072d89a883 | ||
|
|
660952565e | ||
|
|
27ce942e65 | ||
|
|
a248954890 | ||
|
|
c63d5d24b3 | ||
|
|
f4311822b1 | ||
|
|
b471c096d1 | ||
|
|
ba4fbdc948 | ||
|
|
c2dbefd86f | ||
|
|
57c2e79b27 | ||
|
|
c972a086e5 | ||
|
|
1f359c2fe0 | ||
|
|
eed7d8737a | ||
|
|
0cb591eb55 | ||
|
|
d639e0efee | ||
|
|
b6192fb975 | ||
|
|
261b3fc0f4 | ||
|
|
c1b3b6cab0 | ||
|
|
f91315e171 | ||
|
|
48abfcf5f0 | ||
|
|
441c122606 | ||
|
|
8c1fc169ab | ||
|
|
8cf20245a1 | ||
|
|
2845fa66ce | ||
|
|
20d2c70fbd | ||
|
|
74ecbaa23d | ||
|
|
b36a589480 | ||
|
|
6beeb755fa | ||
|
|
f2d8a44f26 | ||
|
|
ae8bbdf891 | ||
|
|
2d8153655c | ||
|
|
d776138bff | ||
|
|
1d5228acae | ||
|
|
958f2d5fa3 | ||
|
|
1a6f22d2a3 | ||
|
|
1aeeebc19b | ||
|
|
5d79f6caf0 | ||
|
|
0aa7062407 | ||
|
|
edb5ca9c52 | ||
|
|
adb9e905da | ||
|
|
ebb0495936 | ||
|
|
58050c286b | ||
|
|
715ab98169 | ||
|
|
5ddb904a86 | ||
|
|
cd0b1ce3b7 | ||
|
|
6b27f42180 | ||
|
|
56938f1873 | ||
|
|
f917e6b21b | ||
|
|
7bb5ce002c | ||
|
|
8232850c51 | ||
|
|
3e6a0a80d2 | ||
|
|
e3298fdae9 | ||
|
|
0fec1b5ce3 | ||
|
|
0adeeddb25 | ||
|
|
d4d7c7911a | ||
|
|
95b1d004f6 | ||
|
|
11eb084fc7 | ||
|
|
9e2bdce02c | ||
|
|
2fee20c837 | ||
|
|
da6f67d8f2 | ||
|
|
321c254be5 | ||
|
|
214da03d14 | ||
|
|
a2e93a0ab6 | ||
|
|
10e9b7ed08 | ||
|
|
b09d8a72d2 | ||
|
|
f08e9412ce | ||
|
|
2de62ac5ad | ||
|
|
d0f902e82e | ||
|
|
adfd17b0bc | ||
|
|
71c810ff93 | ||
|
|
ad0ccbcf30 | ||
|
|
e0debb7821 | ||
|
|
4adcb23673 | ||
|
|
b5d6f341c5 | ||
|
|
cc76043bd4 | ||
|
|
8c00f43904 | ||
|
|
2c502491f6 | ||
|
|
1956d0f6d6 | ||
|
|
5cfe019120 | ||
|
|
901b468e24 | ||
|
|
82bf777ed7 | ||
|
|
28aa0b47fb | ||
|
|
3026e9930e | ||
|
|
0afd2103f0 | ||
|
|
fd5570970e | ||
|
|
57692e2535 | ||
|
|
bd26b5821c | ||
|
|
00eddf0ee6 | ||
|
|
6c243d12d9 | ||
|
|
ea53650333 | ||
|
|
8703912fa0 | ||
|
|
e5afc25114 | ||
|
|
0167462218 | ||
|
|
1516aacdbe | ||
|
|
3a966abb62 | ||
|
|
2e71cd88e7 | ||
|
|
c1a5772aeb | ||
|
|
2c3a3af86e | ||
|
|
ddd0db77ab | ||
|
|
a1125b31af | ||
|
|
1bbceff78a | ||
|
|
d4dab10d0b | ||
|
|
8ae604912b | ||
|
|
b98de697b0 | ||
|
|
234fb283ed | ||
|
|
90c5d156f5 | ||
|
|
0a74a04e98 | ||
|
|
32154996a8 | ||
|
|
0468be6e07 | ||
|
|
264b9c115d | ||
|
|
51ef5b8122 | ||
|
|
b7d98b2d42 | ||
|
|
5818010f92 | ||
|
|
a928430ff7 | ||
|
|
99da30bf5d | ||
|
|
2945b06610 | ||
|
|
85df29b9fc | ||
|
|
e616c68acc | ||
|
|
e61606ad39 | ||
|
|
b26520ba90 | ||
|
|
e22a39fb44 | ||
|
|
533718a832 | ||
|
|
7af9cd3ac5 | ||
|
|
93308ccba3 | ||
|
|
ab5208886e | ||
|
|
263c8dc7b8 | ||
|
|
691cf5eb42 | ||
|
|
33f7d7929f | ||
|
|
ddb260707a | ||
|
|
9cf1786bf0 | ||
|
|
03bcf76223 | ||
|
|
a8fbfdff29 | ||
|
|
21da141911 | ||
|
|
95076c1ac4 | ||
|
|
0a5039dfaf | ||
|
|
627fc43262 | ||
|
|
b2c4191066 | ||
|
|
157d1c4639 | ||
|
|
11e7857989 | ||
|
|
da99a9eede | ||
|
|
6a5b9cebfe | ||
|
|
9310e12d5b | ||
|
|
40a5691f8f | ||
|
|
676032036b | ||
|
|
9456b58a8b | ||
|
|
643aa232f0 | ||
|
|
c239c1944b | ||
|
|
220dca451e | ||
|
|
56d63b6193 | ||
|
|
0b6b2e3470 | ||
|
|
1029ec82df | ||
|
|
e491611316 | ||
|
|
6fac68300e | ||
|
|
223750fba2 | ||
|
|
ee0ebdfd59 | ||
|
|
5198e6642c | ||
|
|
42eca21d2c | ||
|
|
d41f360565 | ||
|
|
82182c3e27 | ||
|
|
f6fa84f5ff | ||
|
|
871435fdb5 | ||
|
|
0ebab19479 | ||
|
|
e9bf6aac83 | ||
|
|
0b76735b47 | ||
|
|
a69b3d61fb | ||
|
|
a1a2e905d8 | ||
|
|
4ee69b6b64 | ||
|
|
4088a5294d | ||
|
|
77fad2fd74 | ||
|
|
952bf43fd5 | ||
|
|
3d89b8d64e | ||
|
|
45e11e2960 | ||
|
|
3c85ab716f | ||
|
|
3169b04725 | ||
|
|
f9af543a25 | ||
|
|
8afc339757 | ||
|
|
0f157e0cb9 | ||
|
|
8843ded099 | ||
|
|
ff01f2d29b | ||
|
|
e9782eb23b | ||
|
|
421f05c913 | ||
|
|
c9faf999f4 | ||
|
|
b46819df22 | ||
|
|
13328d223e | ||
|
|
4237b5c87f | ||
|
|
555e933bb0 | ||
|
|
3c1d6d8fc7 | ||
|
|
ab59a44160 | ||
|
|
a7ed91a957 | ||
|
|
c219988fdf | ||
|
|
316c03ed06 | ||
|
|
b94998f2cd | ||
|
|
3026c29a37 | ||
|
|
4de5e17579 | ||
|
|
60a1b8af4c | ||
|
|
6b2ba1efb1 | ||
|
|
4d010ec6b9 | ||
|
|
9820f8b80a | ||
|
|
8516b05774 | ||
|
|
8aad6604b0 | ||
|
|
b15d524afe | ||
|
|
6b4ae38d12 | ||
|
|
a9c909c51d | ||
|
|
bfcfcc1ca8 | ||
|
|
21c5e5d0d0 | ||
|
|
0a761ca8aa | ||
|
|
419257b191 | ||
|
|
8b8d3ff6c1 | ||
|
|
9e114500d5 | ||
|
|
7204488170 | ||
|
|
bb1f42e442 | ||
|
|
04bb5c6004 | ||
|
|
b124f62e23 | ||
|
|
4ba6f070e5 | ||
|
|
b85c3d628e | ||
|
|
d343d35972 | ||
|
|
3ba521fe94 | ||
|
|
1aeaae4990 | ||
|
|
30b9a6ae5b | ||
|
|
61aeb6e484 | ||
|
|
dbe3ec181f | ||
|
|
2501917e41 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,10 +1,13 @@
|
||||
/build_*
|
||||
/project_*
|
||||
/toolchain_*
|
||||
/binaries/*
|
||||
/binaries
|
||||
/dl
|
||||
/.auto.deps
|
||||
/.config.cmd
|
||||
/.config.old
|
||||
/.config
|
||||
*.depend
|
||||
*.o
|
||||
*.orig
|
||||
*~
|
||||
|
||||
110
CHANGES
110
CHANGES
@@ -1,3 +1,113 @@
|
||||
2009.08-rc1, Released August 2nd, 2009:
|
||||
|
||||
Fixes all over the tree and new features.
|
||||
|
||||
Improvement of external toolchain support:
|
||||
- Support for glibc toolchains.
|
||||
- The toolchain configuration announced to Buildroot is
|
||||
verified against the real toolchain configuration.
|
||||
- Fixes, documentation.
|
||||
|
||||
Cleanup X.org support: clarified configuration options, and
|
||||
removed mandatory dependency on useless libraries such as
|
||||
libXt or libXaw.
|
||||
|
||||
New QT-based configurator, usable using 'make xconfig'.
|
||||
|
||||
Support for the Xtensa architecture.
|
||||
|
||||
Toolchain: GCC 4.4.1, 2.6.30 kernel headers, removed < 2.6.26
|
||||
headers.
|
||||
|
||||
New packages: bmon, ctorrent, dosfstools, enchant,
|
||||
gst-plugins-bad, iw, libmms, libnl, netstat-nat, ntfsprogs,
|
||||
sdl_gfx, spawn-fcgi.
|
||||
|
||||
Updated packages: bind, busybox, coreutils, sqlite, directfb,
|
||||
expat, gamin, gnuconfig, haserl, ipsec-tools, classpath,
|
||||
libcurl, libglib2, liblockfile, libpng, libsoup, libxml2,
|
||||
lighttpd, ltp-testsuite, lvm2, matchbox, memstat,
|
||||
gst-plugins-good, gstreamer, libogg, libvorbis, mplayer,
|
||||
neon, openssl, pciutils, php, qt, ruby, sawman, webkit,
|
||||
wpa-supplicant, xdriver_xf86-input-synaptics,
|
||||
xdriver_xf86-video-intel, xlib_libXfont, xlib_libXft,
|
||||
xlib_libXt, xproto_xproto, xserver-xorg, xutil_makedepend,
|
||||
xutil_util-macros.
|
||||
|
||||
Issues resolved (http://bugs.uclibc.org):
|
||||
|
||||
#83: liblockfile fails to compile due to eaccess redefinition
|
||||
#163: Xtensa architecture port
|
||||
#171: xorg-server / kernel headers 2.6.26 - vm86.c compilation issue
|
||||
#241: device mapper + lvm2: build together
|
||||
#243: ctorrent: new package
|
||||
#247: ntfsprogs: new package
|
||||
#271: Library 'libgcc_s.so.1' not installed in search path
|
||||
#287: New package libnl
|
||||
#289: New package iw
|
||||
#331: Update MPlayer to version 1.0rc2
|
||||
#333: Bump sqlite package to 3.6.15
|
||||
#349: update libsoup to version 2.26.2
|
||||
#357: New package netstat-nat
|
||||
#359,#413: Upgrade openvpn to Makefile.autotools.in
|
||||
#367: linux kernel compile error for arm926t
|
||||
#369: Add SDL_gfx package
|
||||
#373: Support for building gstreamer without libxml
|
||||
#379: update DirectFB to version 1.4.0
|
||||
#383: gst-plugins-good: Allow soup plugin to be configured
|
||||
#385: neon: Fix pkgconfig dependency
|
||||
#387: Tremor not installed to toolchain
|
||||
#389: New package bmon
|
||||
#391: gstreamer: Bump version to 0.10.23
|
||||
#393: gst-plugins-base: Bump version to 0.10.23
|
||||
#395: gst-plugins-bad: New package
|
||||
#403: Error while building iso9660 image
|
||||
#409: Bump php package to 5.2.10
|
||||
#411: ipsec-tools: Bump version to 0.7.2
|
||||
#417: New package spawn-fcgi
|
||||
#419: Bump lighttpd package to 1.4.23
|
||||
#421: toolchain: Clean up toolchain locale support menu
|
||||
#427: webkit: Update to WebKit svn r44552
|
||||
#437: ltp-testsuite: Bump version to 20090630
|
||||
#451: Upgrade from unmaintained dosfstools-2.11 to dosfstools-3.0.3
|
||||
#467: DirectFB 1.4.1
|
||||
#473: memstat_0.5.tar.gz has install with -D and that fails "make"
|
||||
#491: libxml2: Bump version to 0.7.3
|
||||
#495: Bump bind package to 9.5.1-P3 (security)
|
||||
#497: OpenSSL RSA key generation hangs on x86_64
|
||||
#509: Bump sqlite package to 3.6.16
|
||||
#523: pciutils broken with external toolchain
|
||||
#533: Update gamin to 0.1.10 to fix compilation
|
||||
|
||||
2009.05, Released June 1st, 2009:
|
||||
|
||||
Fixes for dropbear & diffutils, bump linux-advanced 2.6.29.x
|
||||
version and marked ubifsroot as broken.
|
||||
|
||||
2009.05-rc3, Released May 27th, 2009:
|
||||
|
||||
Fixes for toolchain (gcc arm pr37436), stable kernel versions,
|
||||
busybox, curl, libusb, readline, python and strace.
|
||||
|
||||
Issues resolved (http://bugs.uclibc.org):
|
||||
|
||||
#345: libcurl package needs a urandom fix
|
||||
|
||||
2009.05-rc2, Released May 19th, 2009:
|
||||
|
||||
Fixes for toolchain (gcc w/softfloat on ppc, 3.4.6 buildfix
|
||||
for newer hosts), stable kernel versions, busybox, cups,
|
||||
dmraid, docker, mesa3d, rsync and updated defconfigs.
|
||||
|
||||
xserver marked as broken on AVR32 and atngw100-expanded
|
||||
config removed.
|
||||
|
||||
Issues resolved (http://bugs.uclibc.org):
|
||||
|
||||
#167: metacity does not build
|
||||
#295: gamin installs python support even if python is disabled
|
||||
#323: gen_matypes fails to execute during build of Mesa when us...
|
||||
|
||||
2009.05-rc1, Released May 5th, 2009:
|
||||
|
||||
Fixes all over the tree, further conversion of packages to
|
||||
|
||||
339
COPYING
Normal file
339
COPYING
Normal file
@@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.
|
||||
|
||||
<signature of Ty Coon>, 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 Lesser General
|
||||
Public License instead of this License.
|
||||
@@ -8,7 +8,7 @@ config BR2_HAVE_DOT_CONFIG
|
||||
|
||||
config BR2_VERSION
|
||||
string
|
||||
default "2009.05-rc1"
|
||||
default "2009.08-git"
|
||||
|
||||
source "target/Config.in.arch"
|
||||
source "target/device/Config.in"
|
||||
|
||||
30
Makefile
30
Makefile
@@ -28,7 +28,7 @@ CONFIG_DEFCONFIG=.defconfig
|
||||
CONFIG=package/config
|
||||
DATE:=$(shell date +%Y%m%d)
|
||||
|
||||
noconfig_targets:=menuconfig config oldconfig randconfig \
|
||||
noconfig_targets:=menuconfig xconfig config oldconfig randconfig \
|
||||
defconfig allyesconfig allnoconfig release tags \
|
||||
source-check help
|
||||
|
||||
@@ -332,6 +332,9 @@ $(PROJECT_BUILD_DIR)/.root:
|
||||
if [ -d "$(TARGET_SKELETON)" ]; then \
|
||||
cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
|
||||
fi; \
|
||||
if [ -d "$(TARGET_SKELETON_PATCH)" ]; then \
|
||||
toolchain/patch-kernel.sh $(TARGET_DIR) $(TARGET_SKELETON_PATCH)/ \*patch\*; \
|
||||
fi; \
|
||||
touch $(STAGING_DIR)/.fakeroot.00000; \
|
||||
fi
|
||||
-find $(TARGET_DIR) -type d -name CVS -o -name .svn -print0 | xargs -0 rm -rf
|
||||
@@ -360,6 +363,10 @@ endif
|
||||
find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIPCMD) 2>/dev/null || true
|
||||
$(TARGET_LDCONFIG) -r $(TARGET_DIR) 2>/dev/null
|
||||
|
||||
ifneq ($(BR2_ROOTFS_POST_BUILD_SCRIPT),"")
|
||||
$(BR2_ROOTFS_POST_BUILD_SCRIPT) $(TARGET_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_ENABLE_LOCALE_PURGE),y)
|
||||
LOCALE_WHITELIST=$(PROJECT_BUILD_DIR)/locales.nopurge
|
||||
LOCALE_NOPURGE=$(strip $(subst ",,$(BR2_ENABLE_LOCALE_WHITELIST)))
|
||||
@@ -431,13 +438,29 @@ $(CONFIG)/conf:
|
||||
-@if [ ! -f .config ]; then \
|
||||
cp $(CONFIG_DEFCONFIG) .config; \
|
||||
fi
|
||||
|
||||
$(CONFIG)/mconf:
|
||||
@mkdir -p $(CONFIG)/buildroot-config
|
||||
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) conf mconf
|
||||
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) mconf
|
||||
-@if [ ! -f .config ]; then \
|
||||
cp $(CONFIG_DEFCONFIG) .config; \
|
||||
fi
|
||||
|
||||
$(CONFIG)/qconf:
|
||||
@mkdir -p $(CONFIG)/buildroot-config
|
||||
$(MAKE) CC="$(HOSTCC)" -C $(CONFIG) qconf
|
||||
-@if [ ! -f .config ]; then \
|
||||
cp $(CONFIG_DEFCONFIG) .config; \
|
||||
fi
|
||||
|
||||
xconfig: $(CONFIG)/qconf
|
||||
@mkdir -p $(CONFIG)/buildroot-config
|
||||
@if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
|
||||
KCONFIG_AUTOHEADER=$(CONFIG)/buildroot-config/autoconf.h \
|
||||
$(CONFIG)/qconf $(CONFIG_CONFIG_IN); then \
|
||||
test -f .config.cmd || rm -f .config; \
|
||||
fi
|
||||
|
||||
menuconfig: $(CONFIG)/mconf
|
||||
@mkdir -p $(CONFIG)/buildroot-config
|
||||
@if ! KCONFIG_AUTOCONFIG=$(CONFIG)/buildroot-config/auto.conf \
|
||||
@@ -538,6 +561,7 @@ help:
|
||||
@echo
|
||||
@echo 'Configuration:'
|
||||
@echo ' menuconfig - interactive curses-based configurator'
|
||||
@echo ' xconfig - interactive Qt-based configurator'
|
||||
@echo ' oldconfig - resolve any unresolved symbols in .config'
|
||||
@echo ' configured - make {uclibc/busybox/linux26}-config'
|
||||
@echo ' saveconfig - save current configuration under local/<project>'
|
||||
@@ -559,5 +583,5 @@ release: distclean
|
||||
rm -rf $$OUT
|
||||
|
||||
.PHONY: dummy subdirs release distclean clean config oldconfig \
|
||||
menuconfig tags check test depend defconfig help
|
||||
menuconfig xconfig tags check test depend defconfig help
|
||||
|
||||
|
||||
15
TODO
15
TODO
@@ -6,9 +6,12 @@ Buildroot2 TODOs
|
||||
packages/Makefile.autotools.in
|
||||
- fix setting of flags for packages
|
||||
|
||||
- stabilize for a 0.10.0 release
|
||||
|
||||
- think about using a common --config-cache for configure
|
||||
Should take care of expanding TARGET_CONFIGURE_ARGS for cross compiles
|
||||
to working presets.
|
||||
|
||||
- coreutils: use make install-strip to install the packages. For now,
|
||||
it fails beause even if we pass STRIP="/path/to/$(ARCH)-strip", the
|
||||
coreutils build system uses the host strip to strip target
|
||||
binaries. The ./configure execution done by Buildroot properly
|
||||
detects the cross-strip, but when running make, build-aux/missing
|
||||
gets run, complains about aclocal-1.10c and atuomake-1.10c not being
|
||||
present, and rerun the configuration... with the wrong environment
|
||||
variables (STRIP= is missing). An autoreconf on this package is
|
||||
probably necessary.
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
usage and documentation by Ulf Samuelsson.
|
||||
</p>
|
||||
|
||||
<p><small>$LastChangedDate: 2008-12-16 10:00:11 +0100 (tis, 16 dec 2008) $</small></p>
|
||||
<ul>
|
||||
<li><a href="#about">About U-Boot</a></li>
|
||||
<li><a href="#at91rm9200dk">Board Support for AT91RM9200DK</a></li>
|
||||
|
||||
@@ -26,7 +26,8 @@ you do not need to be root to build or run Buildroot.
|
||||
Buildroot is maintained by <a href=
|
||||
"mailto:jacmet@uclibc.org">Peter Korsgaard</a>, and
|
||||
licensed under the
|
||||
<a href="http://www.gnu.org/copyleft/lgpl.html">GNU LIBRARY GENERAL PUBLIC LICENSE</a>.
|
||||
<a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU
|
||||
GENERAL PUBLIC LICENSE V2 (Or later)</a>.
|
||||
|
||||
|
||||
<!--#include file="footer.html" -->
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
usage and documentation by Thomas Petazzoni. Contributions from
|
||||
Karsten Kruse, Ned Ludd, Martin Herren and others. </p>
|
||||
|
||||
<p><small>$LastChangedDate$</small></p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><a href="#about">About Buildroot</a></li>
|
||||
@@ -39,6 +37,7 @@
|
||||
<li><a href="#external_toolchain">Use an external toolchain</a></li>
|
||||
<li><a href="#downloaded_packages">Location of downloaded packages</a>
|
||||
</li>
|
||||
<li><a href="#adapting_rootfs">Adapting the rootfs for own binaries</a></li>
|
||||
<li><a href="#add_software">Extending Buildroot with more
|
||||
Software</a></li>
|
||||
<li><a href="#links">Resources</a></li>
|
||||
@@ -156,6 +155,17 @@
|
||||
$ make menuconfig
|
||||
</pre>
|
||||
|
||||
<p>to run the curses-based configurator, or</p>
|
||||
|
||||
<pre>
|
||||
$ make xconfig
|
||||
</pre>
|
||||
|
||||
<p>to run the Qt3-based configurator. On Debian-like systems, the
|
||||
<code>libncurses5-dev</code> package is required to use the
|
||||
<i>menuconfig</i> interface, and the <code>libqt3-mt-dev</code> is
|
||||
required to use the <i>xconfig</i> interface.</p>
|
||||
|
||||
<p>For each entry of the configuration tool, you can find associated help
|
||||
that describes the purpose of the entry. </p>
|
||||
|
||||
@@ -220,9 +230,9 @@
|
||||
<h3><a name="offline_builds" id="offline_builds"></a>
|
||||
Offline builds</h3>
|
||||
|
||||
<p>If you intend to do an offline-build and just want to download all
|
||||
sources that you previously selected in "make menuconfig" then
|
||||
issue:</p>
|
||||
<p>If you intend to do an offline-build and just want to download
|
||||
all sources that you previously selected in the configurator
|
||||
(<i>menuconfig</i> or <i>xconfig</i>) then issue:</p>
|
||||
<pre>
|
||||
$ make source
|
||||
</pre>
|
||||
@@ -341,9 +351,10 @@ $ make me<TAB>
|
||||
is made. So simply rebuilding the image by running
|
||||
make should propagate any new changes to the image. </li>
|
||||
|
||||
<li>When configuring the build system, using <code>make menuconfig</code>,
|
||||
you can specify the contents of the /etc/hostname and /etc/issue
|
||||
(the welcome banner) in the <code>PROJECT</code> section</li>
|
||||
<li>When configuring the build system, using <code>make
|
||||
menuconfig</code> or <code>make xconfig</code>, you can specify
|
||||
the contents of the /etc/hostname and /etc/issue (the welcome
|
||||
banner) in the <code>PROJECT</code> section</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="custom_busybox" id="custom_busybox"></a>Customizing the
|
||||
@@ -879,6 +890,22 @@ It allows to generate toolchains based on <i>uClibc</i>, <i>glibc</i>
|
||||
and <i>eglibc</i> for a wide range of architectures, and has good
|
||||
community support.</p>
|
||||
|
||||
<h2><a name="adapting_rootfs" id="adapting_rootfs">Adapting the rootfs
|
||||
for own binaries</h2>
|
||||
|
||||
<p>When using BR2 in an environment where own software binaries or
|
||||
static data should be part of the generated rootfs package, the
|
||||
<code>BR2_ROOTFS_POST_BUILD_SCRIPT</code> feature might interest
|
||||
you. You can specify a command here which is called <i>after</i> BR2
|
||||
built all the selected software, but <i>before</i> the the rootfs
|
||||
packages are assembled. The destination rootfs folder is given as
|
||||
first argument. You can add own components here, change
|
||||
default configurations and remove unwanted files.</p>
|
||||
<p>You should, however, use that feature with care. Whenever you
|
||||
find that a certain package generates wrong or unneeded files, you
|
||||
should rather fix than package than working around it with a
|
||||
cleanup script.</p>
|
||||
|
||||
<h2><a name="add_software" id="add_software"></a>Extending Buildroot with
|
||||
more software</h2>
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Current documentation for buildroot includes:
|
||||
|
||||
<li>
|
||||
If you find that you need help with buildroot, you can ask for help on the
|
||||
<a href= "lists/uClibc/">buildroot mailing list</a> at buildroot at mail.uclibc.org.
|
||||
<a href= "/lists/buildroot/">buildroot mailing list</a> at buildroot at mail.uclibc.org.
|
||||
In addition the BusyBox, uClibc, and buildroot developers are also known to
|
||||
hang out on the uClibc IRC channel: #uclibc on irc.freenode.net.
|
||||
</li>
|
||||
|
||||
@@ -6,7 +6,15 @@
|
||||
|
||||
<p>
|
||||
|
||||
The latest release can always be dowloaded from
|
||||
The latest stable release is <b>2009.05</b>, which can be downloaded
|
||||
here:<p>
|
||||
|
||||
<a href="/downloads/buildroot-2009.05.tar.gz">buildroot-2009.05.tar.gz</a>
|
||||
or
|
||||
<a href="/downloads/buildroot-2009.05.tar.bz2">buildroot-2009.05.tar.bz2</a>.
|
||||
<p>
|
||||
|
||||
This and earlier releases can always be dowloaded from
|
||||
<a href="/downloads/">http://buildroot.net/downloads/</a>.
|
||||
|
||||
<p>
|
||||
@@ -19,7 +27,7 @@ follow development, but cannot or do not wish to use Git.
|
||||
<li> Click here to <a href="downloads/snapshots/">Daily Snapshots</a>.
|
||||
</li>
|
||||
|
||||
<li> Click here to <a href="http://sources.busybox.net/index.py/trunk/buildroot/">browse the source tree</a>.
|
||||
<li> Click here to <a href="http://git.buildroot.net/buildroot">browse the source tree</a>.
|
||||
</li>
|
||||
|
||||
<li>Anonymous <a href="git.html">Git access</a> is available.
|
||||
|
||||
@@ -27,12 +27,13 @@ tree at any time so it is in sync with the latest and greatest by entering your
|
||||
buildroot directory and running the command:
|
||||
|
||||
<pre>
|
||||
git pull</pre>
|
||||
git pull
|
||||
</pre>
|
||||
|
||||
Because you've only been granted anonymous access to the tree, you won't be
|
||||
able to commit any changes. Changes can be submitted for inclusion by posting
|
||||
them to the buildroot mailing list or to the <a
|
||||
href="http://bugs.uclibc.org/">Bug and Patch Tracking System</a>.
|
||||
href="https://bugs.uclibc.org/">Bug and Patch Tracking System</a>.
|
||||
|
||||
<!--#include file="footer.html" -->
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<br><a href="/download.html">Download</a>
|
||||
<br><a href="http://git.buildroot.net/buildroot">Browse Source</a>
|
||||
<br><a href="/git.html">Accessing Source</a>
|
||||
<br><a href="http://bugs.uclibc.org/">Bug Tracking</a>
|
||||
<br><a href="https://bugs.uclibc.org/">Bug Tracking</a>
|
||||
<br><a href="/docs.html">Documentation</a>
|
||||
<br><a href="/lists.html">Mailing Lists</a>
|
||||
|
||||
|
||||
@@ -5,6 +5,63 @@
|
||||
<p>
|
||||
|
||||
<ul>
|
||||
<li><b>1 June 2009 -- 2009.05 released</b>
|
||||
|
||||
<p>The stable 2009.05 release is out - Thanks to everyone
|
||||
contributing and testing the release candidates. See the
|
||||
<a href="http://lists.busybox.net/pipermail/buildroot/2009-June/027640.html">announcement</a>
|
||||
or <a href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05">CHANGES</a>
|
||||
for more details, and go to the <a href="/downloads/">downloads page</a>
|
||||
to pick up the <a href="/downloads/buildroot-2009.05.tar.bz2">2009.05
|
||||
release</a>.</p>
|
||||
|
||||
<li><b>27 May 2009 -- 2009.05-rc3 released</b>
|
||||
|
||||
<p>We had a number of fixes post-RC2, so RC3 is out (see <a
|
||||
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc3">CHANGES</a>
|
||||
for details). Now is the moment to test and verify that everything
|
||||
is working for your favorite config - Expect a final 2009.05 very soon.</p>
|
||||
|
||||
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
|
||||
<a href="/downloads/buildroot-2009.05-rc3.tar.bz2">2009.05-rc3
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>19 May 2009 -- 2009.05-rc2 released</b>
|
||||
|
||||
<p>RC2 is out with more cleanups and bug fixes (see <a
|
||||
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc2">CHANGES</a>).
|
||||
Unless big issues are found, expect this to be the last release
|
||||
candidate before the release - So give it a good test.</p>
|
||||
|
||||
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
|
||||
<a href="/downloads/buildroot-2009.05-rc2.tar.bz2">2009.05-rc2
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>14 May 2009 -- Buildroot.org</b>
|
||||
|
||||
<p>Earl Levine has been so kind to donate the <b>buildroot.org</b>
|
||||
domain to us, so the website can now also be reached at <a
|
||||
href="http://www.buildroot.org">www.buildroot.org</a> (and git at
|
||||
<a href="http://git.buildroot.org/buildroot">git.buildroot.org</a>).
|
||||
|
||||
Thanks a lot Earl!</p>
|
||||
|
||||
<li><b>5 May 2009 -- 2009.05-rc1 released</b>
|
||||
|
||||
<p>We have a new release candidate! Lots of changes all over the
|
||||
tree, see the <a
|
||||
href="http://git.buildroot.net/buildroot/plain/CHANGES?id=2009.05_rc1">CHANGES</a>
|
||||
file for details.
|
||||
|
||||
<p>Head to the <a href="/downloads/">downloads page</a> to pick up the
|
||||
<a href="/downloads/buildroot-2009.05-rc1.tar.bz2">2009.05-rc1
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>3 May 2009 -- Moved to git</b>
|
||||
|
||||
@@ -44,7 +101,7 @@
|
||||
<a href="/downloads/buildroot-2009.02-rc4.tar.bz2">2009.02-rc4
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="http://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>31 January 2009 -- 2009.02-rc3 released</b>
|
||||
<p>RC3 is out with more cleanups and bug fixes. Unless big issues
|
||||
@@ -55,7 +112,7 @@
|
||||
<a href="/downloads/buildroot-2009.02-rc3.tar.bz2">2009.02-rc3
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="http://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>23 January 2009 -- 2009.02-rc2 released</b>
|
||||
<p>Another week, another release candidate with a bunch of
|
||||
@@ -65,7 +122,7 @@
|
||||
<a href="/downloads/buildroot-2009.02-rc2.tar.bz2">2009.02-rc2
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="http://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
href="https://bugs.uclibc.org">bug tracker</a>.</p>
|
||||
|
||||
<li><b>16 January 2009 -- Release candidate and new maintainer</b>
|
||||
<p>It has been a long time coming, but we finally have a new
|
||||
@@ -75,7 +132,7 @@
|
||||
<a href="/downloads/buildroot-2009.02-rc1.tar.bz2">2009.02-rc1
|
||||
release candidate</a>, and report any problems found to the <a
|
||||
href="lists.html">mailing list</a> or <a
|
||||
href="http://bugs.uclibc.org">bug tracker</a>. The plan is to
|
||||
href="https://bugs.uclibc.org">bug tracker</a>. The plan is to
|
||||
release 2009.02 in time for <a
|
||||
href="http://www.fosdem.org/2009/">FOSDEM</a>.</p>
|
||||
|
||||
@@ -103,7 +160,7 @@
|
||||
|
||||
If you find a bug in buildroot, or wish to submit a patch to fix a problem
|
||||
or add a shiny new feature, please use the <a
|
||||
href="http://bugs.uclibc.org/">Bug and Patch Tracking System</a> to post
|
||||
href="https://bugs.uclibc.org/">Bug and Patch Tracking System</a> to post
|
||||
the details, to make certain your work is not lost.
|
||||
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ source "package/customize/Config.in"
|
||||
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
|
||||
source "package/dash/Config.in"
|
||||
endif
|
||||
source "package/enchant/Config.in"
|
||||
source "package/file/Config.in"
|
||||
source "package/gamin/Config.in"
|
||||
source "package/icu/Config.in"
|
||||
@@ -132,7 +133,9 @@ if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
|
||||
source "package/boa/Config.in"
|
||||
endif
|
||||
source "package/bind/Config.in"
|
||||
source "package/bmon/Config.in"
|
||||
source "package/bridge-utils/Config.in"
|
||||
source "package/ctorrent/Config.in"
|
||||
if !BR2_PACKAGE_BUSYBOX_HIDE_OTHERS
|
||||
source "package/dhcp/Config.in"
|
||||
endif
|
||||
@@ -147,6 +150,7 @@ source "package/iperf/Config.in"
|
||||
source "package/iproute2/Config.in"
|
||||
source "package/ipsec-tools/Config.in"
|
||||
source "package/iptables/Config.in"
|
||||
source "package/iw/Config.in"
|
||||
source "package/kismet/Config.in"
|
||||
source "package/l2tp/Config.in"
|
||||
source "package/libcgi/Config.in"
|
||||
@@ -154,6 +158,7 @@ source "package/libcgicc/Config.in"
|
||||
source "package/libcurl/Config.in"
|
||||
source "package/libdnet/Config.in"
|
||||
source "package/libeXosip2/Config.in"
|
||||
source "package/libnl/Config.in"
|
||||
source "package/libosip2/Config.in"
|
||||
source "package/libpcap/Config.in"
|
||||
source "package/libsoup/Config.in"
|
||||
@@ -180,6 +185,7 @@ source "package/netkitbase/Config.in"
|
||||
source "package/netkittelnet/Config.in"
|
||||
source "package/netplug/Config.in"
|
||||
source "package/netsnmp/Config.in"
|
||||
source "package/netstat-nat/Config.in"
|
||||
source "package/nfs-utils/Config.in"
|
||||
source "package/ntp/Config.in"
|
||||
source "package/olsr/Config.in"
|
||||
@@ -198,6 +204,7 @@ source "package/quagga/Config.in"
|
||||
source "package/rsync/Config.in"
|
||||
source "package/samba/Config.in"
|
||||
source "package/socat/Config.in"
|
||||
source "package/spawn-fcgi/Config.in"
|
||||
source "package/stunnel/Config.in"
|
||||
source "package/tcpdump/Config.in"
|
||||
source "package/tftpd/Config.in"
|
||||
@@ -230,8 +237,8 @@ source "package/dbus/Config.in"
|
||||
source "package/dbus-glib/Config.in"
|
||||
source "package/dbus-python/Config.in"
|
||||
source "package/devmem2/Config.in"
|
||||
source "package/dm/Config.in"
|
||||
source "package/dmraid/Config.in"
|
||||
source "package/dosfstools/Config.in"
|
||||
source "package/e2fsprogs/Config.in"
|
||||
source "package/eeprog/Config.in"
|
||||
source "package/fconfig/Config.in"
|
||||
@@ -254,9 +261,9 @@ source "package/lm-sensors/Config.in"
|
||||
source "package/lvm2/Config.in"
|
||||
source "package/mdadm/Config.in"
|
||||
source "package/memtester/Config.in"
|
||||
source "package/mkdosfs/Config.in"
|
||||
source "package/mtd/Config.in"
|
||||
source "package/ntfs-3g/Config.in"
|
||||
source "package/ntfsprogs/Config.in"
|
||||
source "package/pciutils/Config.in"
|
||||
source "package/pcmcia/Config.in"
|
||||
source "package/setserial/Config.in"
|
||||
@@ -305,6 +312,7 @@ source "package/sdl_image/Config.in"
|
||||
source "package/sdl_mixer/Config.in"
|
||||
source "package/sdl_net/Config.in"
|
||||
source "package/sdl_ttf/Config.in"
|
||||
source "package/sdl_gfx/Config.in"
|
||||
source "package/tiff/Config.in"
|
||||
|
||||
comment "busybox graphic applications"
|
||||
@@ -313,46 +321,13 @@ source "package/fbv/Config.in"
|
||||
source "package/fbset/Config.in"
|
||||
|
||||
comment "other GUIs"
|
||||
source "package/qtopia4/Config.in"
|
||||
source "package/qt/Config.in"
|
||||
|
||||
#source "package/microwin/Config.in"
|
||||
|
||||
|
||||
choice
|
||||
prompt "X Window System server"
|
||||
default BR2_PACKAGE_XSERVER_none
|
||||
help
|
||||
Select the X Window System server to use
|
||||
|
||||
config BR2_PACKAGE_XSERVER_none
|
||||
bool "none"
|
||||
config BR2_PACKAGE_XSERVER_xorg
|
||||
bool "modular xorg"
|
||||
depends on BR2_USE_WCHAR && BR2_LARGEFILE # && BR2_ENABLE_LOCALE
|
||||
# depending on BR2_ENABLE_LOCALE gives a recursion error with dbus
|
||||
config BR2_PACKAGE_XSERVER_tinyx
|
||||
bool "tinyx"
|
||||
depends on BR2_USE_WCHAR
|
||||
endchoice
|
||||
|
||||
comment "xorg requires a toolchain with LOCALE, LARGEFILE and WCHAR support"
|
||||
depends on !(BR2_USE_WCHAR && BR2_LARGEFILE && BR2_ENABLE_LOCALE)
|
||||
comment "tinyx requires a toolchain with WCHAR support"
|
||||
depends on !BR2_USE_WCHAR
|
||||
|
||||
config BR2_X11_PREFIX
|
||||
string
|
||||
default "/usr/X11R6" if BR2_PACKAGE_XSERVER_xorg
|
||||
default "/usr" if BR2_PACKAGE_XSERVER_tinyx
|
||||
help
|
||||
X11 apps root location
|
||||
|
||||
if !BR2_PACKAGE_XSERVER_none
|
||||
source "package/x11r7/Config.in"
|
||||
endif
|
||||
|
||||
comment "X libraries and helper libraries"
|
||||
#XXX: maybe some of these should depend on !BR2_PACKAGE_XSERVER_none
|
||||
source "package/atk/Config.in"
|
||||
source "package/cairo/Config.in"
|
||||
source "package/pango/Config.in"
|
||||
|
||||
@@ -130,7 +130,7 @@ TOOLCHAIN_EXTERNAL_PATH:=$(strip $(subst ",, $(BR2_TOOLCHAIN_EXTERNAL_PATH)))
|
||||
#"))
|
||||
#TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(TOOLCHAIN_EXTERNAL_PREFIX)
|
||||
TOOL_BUILD_DIR=$(BASE_DIR)/$(TOPDIR_PREFIX)toolchain_build_$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(TOPDIR_SUFFIX)
|
||||
TARGET_PATH="$(STAGING_DIR)/bin:$(STAGING_DIR)/usr/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
|
||||
TARGET_PATH="$(HOST_DIR)/bin:$(HOST_DIR)/usr/bin:$(TOOL_BUILD_DIR)/bin:$(TOOLCHAIN_EXTERNAL_PATH)/bin:$(PATH)"
|
||||
#IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(TOOLCHAIN_EXTERNAL_PREFIX)$(ROOTFS_SUFFIX)
|
||||
IMAGE:=$(BINARIES_DIR)/$(BR2_ROOTFS_PREFIX).$(ARCH)$(COND_ARCH_FPU_SUFFIX)$(ROOTFS_SUFFIX)
|
||||
|
||||
@@ -181,7 +181,7 @@ ifeq ($(BR2_STRIP_none),y)
|
||||
TARGET_STRIP=true -Not_stripping
|
||||
STRIPCMD=$(TARGET_STRIP)
|
||||
endif
|
||||
INSTALL=/usr/bin/install
|
||||
INSTALL=$(shell which install || type -p install)
|
||||
FLEX:=$(shell which flex || type -p flex)
|
||||
BISON:=$(shell which bison || type -p bison)
|
||||
|
||||
@@ -205,20 +205,11 @@ HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
|
||||
-e 's/mipsel-.*/mipsel/' \
|
||||
-e 's/cris.*/cris/' \
|
||||
-e 's/i[3-9]86/i386/' \
|
||||
-e 's/xtensa.*/xtensa/' \
|
||||
)
|
||||
GNU_HOST_NAME:=$(HOST_ARCH)-$(subst ",,$(BR2_GNU_BUILD_SUFFIX))
|
||||
#")
|
||||
|
||||
AUTO_CONFIGURE_TARGET=\
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
$(TARGET_CONFIGURE_ARGS) \
|
||||
$(TARGET_CONFIGURE_ENV) \
|
||||
$(if $(THIS_SRCDIR),$(THIS_SRCDIR)/,./)configure \
|
||||
$(if $(BR2_CONFIG_CACHE),--cache-file="$(PROJECT_BUILD_DIR)/tgt-config.cache",) \
|
||||
--target=$(GNU_TARGET_NAME) \
|
||||
--host=$(GNU_TARGET_NAME) \
|
||||
--build=$(GNU_HOST_NAME)
|
||||
|
||||
TARGET_CONFIGURE_OPTS=PATH=$(TARGET_PATH) \
|
||||
AR="$(TARGET_AR)" \
|
||||
AS="$(TARGET_AS)" \
|
||||
@@ -380,23 +371,8 @@ else
|
||||
ENABLE_DEBUG:=
|
||||
endif
|
||||
|
||||
|
||||
# X Windowing system
|
||||
|
||||
XSERVER:=
|
||||
ifeq ($(BR2_PACKAGE_TINYX),y)
|
||||
XSERVER+=tinyx
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_XORG),y)
|
||||
XSERVER+=xorg
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_XORG7),y)
|
||||
XSERVER+=xserver_xorg-server
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_XGGI),y)
|
||||
XSERVER+=xggi
|
||||
endif
|
||||
|
||||
X11_PREFIX:=$(strip $(subst ",, $(BR2_X11_PREFIX)))
|
||||
#"))
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ ATK_CONF_OPT = --enable-shared \
|
||||
--disable-glibtest --enable-explicit-deps=no \
|
||||
--disable-debug
|
||||
|
||||
ifneq ($(BR2_PACKAGE_XSERVER_none),y)
|
||||
ifeq ($(BR2_PACKAGE_XORG7),y)
|
||||
ATK_CONF_OPT += --with-x \
|
||||
--x-includes=$(STAGING_DIR)/usr/include/X11 \
|
||||
--x-libraries=$(STAGING_DIR)/usr/lib --disable-glibtest
|
||||
|
||||
@@ -18,6 +18,12 @@ case "$1" in
|
||||
if [ $? -eq 0 ]; then
|
||||
/sbin/ifconfig $interface 0.0.0.0
|
||||
fi
|
||||
if [ -x /usr/sbin/avahi-autoipd ]; then
|
||||
/usr/sbin/avahi-autoipd -k $interface
|
||||
fi
|
||||
;;
|
||||
|
||||
leasefail|nak)
|
||||
if [ -x /usr/sbin/avahi-autoipd ]; then
|
||||
/usr/sbin/avahi-autoipd -wD $interface --no-chroot
|
||||
fi
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# bind
|
||||
#
|
||||
#############################################################
|
||||
BIND_VERSION = 9.5.1-P2
|
||||
BIND_VERSION = 9.5.1-P3
|
||||
BIND_SOURCE = bind-$(BIND_VERSION).tar.gz
|
||||
BIND_SITE = ftp://ftp.isc.org/isc/bind9/$(BIND_VERSION)
|
||||
BIND_LIBTOOL_PATCH = NO
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
config BR2_PACKAGE_BLACKBOX
|
||||
bool "blackbox"
|
||||
depends on BR2_PACKAGE_XORG||BR2_PACKAGE_XORG7
|
||||
depends on BR2_PACKAGE_XORG7
|
||||
depends on BR2_INSTALL_LIBSTDCPP
|
||||
help
|
||||
Blackbox is a fast, lightweight window manager for the X
|
||||
|
||||
@@ -14,6 +14,6 @@ BLACKBOX_INSTALL_TARGET:=YES
|
||||
BLACKBOX_CONF_OPT:=--x-includes=$(STAGING_DIR)/usr/include/X11 \
|
||||
--x-libraries=$(STAGING_DIR)/usr/lib
|
||||
|
||||
BLACKBOX_DEPENDENCIES:=uclibc $(XSERVER)
|
||||
BLACKBOX_DEPENDENCIES:=uclibc xserver_xorg-server
|
||||
|
||||
$(eval $(call AUTOTARGETS,package,blackbox))
|
||||
|
||||
5
package/bmon/Config.in
Normal file
5
package/bmon/Config.in
Normal file
@@ -0,0 +1,5 @@
|
||||
config BR2_PACKAGE_BMON
|
||||
bool "bmon"
|
||||
select BR2_PACKAGE_NCURSES
|
||||
help
|
||||
Linux bandwidth monitor
|
||||
36
package/bmon/bmon-gcc4.patch
Normal file
36
package/bmon/bmon-gcc4.patch
Normal file
@@ -0,0 +1,36 @@
|
||||
diff -ru bmon-2.1.0~/src/out_audio.c bmon-2.1.0/src/out_audio.c
|
||||
--- bmon-2.1.0~/src/out_audio.c 2008-07-26 20:06:24.000000000 +0200
|
||||
+++ bmon-2.1.0/src/out_audio.c 2008-07-26 20:09:42.000000000 +0200
|
||||
@@ -141,7 +141,7 @@
|
||||
.om_draw = audio_draw,
|
||||
.om_set_opts = audio_set_opts,
|
||||
.om_probe = audio_probe,
|
||||
- .om_shutdown audio_shutdown,
|
||||
+ .om_shutdown = audio_shutdown
|
||||
};
|
||||
|
||||
static void __init audio_init(void)
|
||||
diff -ru bmon-2.1.0~/src/out_db.c bmon-2.1.0/src/out_db.c
|
||||
--- bmon-2.1.0~/src/out_db.c 2008-07-26 20:06:24.000000000 +0200
|
||||
+++ bmon-2.1.0/src/out_db.c 2008-07-26 20:07:44.000000000 +0200
|
||||
@@ -679,7 +679,7 @@
|
||||
.om_draw = db_draw,
|
||||
.om_set_opts = db_set_opts,
|
||||
.om_probe = db_probe,
|
||||
- .om_shutdown db_shutdown,
|
||||
+ .om_shutdown = db_shutdown,
|
||||
};
|
||||
|
||||
static void __init db_init(void)
|
||||
diff -ru bmon-2.1.0~/src/out_xml_event.c bmon-2.1.0/src/out_xml_event.c
|
||||
--- bmon-2.1.0~/src/out_xml_event.c 2008-07-26 20:06:24.000000000 +0200
|
||||
+++ bmon-2.1.0/src/out_xml_event.c 2008-07-26 20:09:42.000000000 +0200
|
||||
@@ -127,7 +127,7 @@
|
||||
.om_draw = xml_event_draw,
|
||||
.om_set_opts = xml_event_set_opts,
|
||||
.om_probe = xml_event_probe,
|
||||
- .om_shutdown xml_event_shutdown,
|
||||
+ .om_shutdown = xml_event_shutdown
|
||||
};
|
||||
|
||||
static void __init xml_event_init(void)
|
||||
24
package/bmon/bmon-nolibnl.patch
Normal file
24
package/bmon/bmon-nolibnl.patch
Normal file
@@ -0,0 +1,24 @@
|
||||
diff -Nura bmon/configure bmon.libnl/configure
|
||||
--- bmon/configure 2005-04-05 12:01:33.000000000 -0300
|
||||
+++ bmon.libnl/configure 2009-06-10 16:10:52.000000000 -0300
|
||||
@@ -7327,13 +7327,13 @@
|
||||
echo "${ECHO_T}$ac_cv_lib_nl_nl_connect" >&6
|
||||
if test $ac_cv_lib_nl_nl_connect = yes; then
|
||||
|
||||
-
|
||||
-cat >>confdefs.h <<_ACEOF
|
||||
-#define HAVE_NL "1"
|
||||
-_ACEOF
|
||||
-
|
||||
- LIBNL="-lnl"
|
||||
- NL="Yes"
|
||||
+ case ${target_os} in
|
||||
+ *linux*)
|
||||
+ echo
|
||||
+ echo "*** Warning: Building bmon on Linux w/o libnl ***"
|
||||
+ echo
|
||||
+ ;;
|
||||
+ esac
|
||||
|
||||
else
|
||||
|
||||
12
package/bmon/bmon-nostrip.patch
Normal file
12
package/bmon/bmon-nostrip.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff -Nura bmon/GNUmakefile bmon.nostrip/GNUmakefile
|
||||
--- bmon/GNUmakefile 2005-04-05 12:01:33.000000000 -0300
|
||||
+++ bmon.nostrip/GNUmakefile 2009-06-10 16:12:04.000000000 -0300
|
||||
@@ -50,7 +50,7 @@
|
||||
install:
|
||||
./install-sh -d -m 0755 $(DESTDIR)$(prefix)/bin
|
||||
./install-sh -d -m 0755 $(DESTDIR)$(mandir)/man1
|
||||
- ./install-sh -c -s -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
|
||||
+ ./install-sh -c -m 0755 src/bmon $(DESTDIR)$(prefix)/bin
|
||||
./install-sh -c -m 0644 man/bmon.1 $(DESTDIR)$(mandir)/man1
|
||||
|
||||
show: Makefile.opts
|
||||
18
package/bmon/bmon.mk
Normal file
18
package/bmon/bmon.mk
Normal file
@@ -0,0 +1,18 @@
|
||||
#############################################################
|
||||
#
|
||||
# bmon
|
||||
#
|
||||
#############################################################
|
||||
|
||||
BMON_VERSION = 2.1.0
|
||||
BMON_SOURCE = bmon-$(BMON_VERSION).tar.gz
|
||||
BMON_SITE = http://distfiles.gentoo.org/distfiles
|
||||
BMON_DEPENDENCIES = ncurses uclibc
|
||||
BMON_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
|
||||
|
||||
$(eval $(call AUTOTARGETS,package,bmon))
|
||||
|
||||
$(BMON_TARGET_UNINSTALL):
|
||||
$(call MESSAGE,"Uninstalling")
|
||||
rm -f $(TARGET_DIR)/usr/bin/bmon
|
||||
rm -f $(BMON_TARGET_INSTALL_TARGET) $(BMON_HOOK_POST_INSTALL)
|
||||
@@ -36,7 +36,7 @@ config BR2_BUSYBOX_VERSION
|
||||
string
|
||||
default "1.12.4" if BR2_BUSYBOX_VERSION_1_12_X
|
||||
default "1.13.4" if BR2_BUSYBOX_VERSION_1_13_X
|
||||
default "1.14.0" if BR2_BUSYBOX_VERSION_1_14_X
|
||||
default "1.14.2" if BR2_BUSYBOX_VERSION_1_14_X
|
||||
|
||||
config BR2_PACKAGE_BUSYBOX_FULLINSTALL
|
||||
bool "Run BusyBox's own full installation"
|
||||
|
||||
@@ -562,7 +562,7 @@ CONFIG_DC=y
|
||||
# CONFIG_DEVFSD_FG_NP is not set
|
||||
# CONFIG_DEVFSD_VERBOSE is not set
|
||||
# CONFIG_FEATURE_DEVFS is not set
|
||||
# CONFIG_DEVMEM is not set
|
||||
CONFIG_DEVMEM=y
|
||||
CONFIG_EJECT=y
|
||||
# CONFIG_FEATURE_EJECT_SCSI is not set
|
||||
# CONFIG_FBSPLASH is not set
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
--- busybox-1.14.0/util-linux/acpid.c Tue Apr 14 01:43:11 2009
|
||||
+++ busybox-1.14.0-acpid/util-linux/acpid.c Sat Apr 18 13:33:19 2009
|
||||
@@ -78,8 +78,8 @@
|
||||
// goto configuration directory
|
||||
xchdir(opt_conf);
|
||||
|
||||
-// // setup signals
|
||||
-// bb_signals(BB_FATAL_SIGS, record_signo);
|
||||
+ // prevent zombies
|
||||
+ signal(SIGCHLD, SIG_IGN);
|
||||
|
||||
// no explicit evdev files given? -> use proc event interface
|
||||
if (!*argv) {
|
||||
@@ -1,11 +0,0 @@
|
||||
--- busybox-1.14.0/scripts/defconfig Tue Apr 14 01:42:52 2009
|
||||
+++ busybox-1.14.0-defconfig/scripts/defconfig Fri Apr 17 01:08:24 2009
|
||||
@@ -579,7 +579,7 @@
|
||||
CONFIG_EJECT=y
|
||||
CONFIG_FEATURE_EJECT_SCSI=y
|
||||
CONFIG_FBSPLASH=y
|
||||
-CONFIG_FLASH_ERASEALL=y
|
||||
+# CONFIG_FLASH_ERASEALL is not set
|
||||
CONFIG_IONICE=y
|
||||
# CONFIG_INOTIFYD is not set
|
||||
CONFIG_LAST=y
|
||||
@@ -1,14 +0,0 @@
|
||||
--- busybox-1.14.0/libbb/pw_encrypt_des.c Tue Apr 14 01:43:00 2009
|
||||
+++ busybox-1.14.0-des/libbb/pw_encrypt_des.c Fri May 1 03:40:16 2009
|
||||
@@ -778,8 +778,10 @@
|
||||
to64_msb_first(output + 2, (r0 >> 8));
|
||||
/* bits 7..0 of r0 and 31..16 of r1 */
|
||||
to64_msb_first(output + 6, (r0 << 16) | (r1 >> 16));
|
||||
- /* (bits 15..0 of r1 + 00) and NUL byte */
|
||||
+ /* bits 15..0 of r1 and two zero bits (plus extra zero byte) */
|
||||
to64_msb_first(output + 10, (r1 << 8));
|
||||
+ /* extra zero byte is encoded as '.', fixing it */
|
||||
+ output[13] = '\0';
|
||||
#endif
|
||||
|
||||
return output;
|
||||
@@ -1,12 +0,0 @@
|
||||
--- busybox-1.14.0/networking/udhcp/leases.c Tue Apr 14 01:42:51 2009
|
||||
+++ busybox-1.14.0-dhcp_hostname/networking/udhcp/leases.c Tue Apr 21 02:41:22 2009
|
||||
@@ -63,7 +63,8 @@
|
||||
if (oldest) {
|
||||
oldest->hostname[0] = '\0';
|
||||
if (hostname) {
|
||||
- hostname_length = hostname[-1]; /* look at option size byte */
|
||||
+ /* option size byte, + 1 for NUL */
|
||||
+ hostname_length = hostname[-1] + 1;
|
||||
if (hostname_length > sizeof(oldest->hostname))
|
||||
hostname_length = sizeof(oldest->hostname);
|
||||
hostname = (uint8_t*) safe_strncpy((char*)oldest->hostname, (char*)hostname, hostname_length);
|
||||
@@ -1,24 +0,0 @@
|
||||
--- busybox-1.14.0/util-linux/mdev.c Tue Apr 14 23:23:04 2009
|
||||
+++ busybox-1.14.0-mdev/util-linux/mdev.c Sat May 2 16:31:34 2009
|
||||
@@ -181,7 +181,8 @@
|
||||
* the rest of fields unless keep_matching == 1 */
|
||||
|
||||
/* 2nd field: uid:gid - device ownership */
|
||||
- parse_chown_usergroup_or_die(&ugid, tokens[1]);
|
||||
+ if (get_uidgid(&ugid, tokens[1], 1) == 0)
|
||||
+ bb_error_msg("unknown user/group %s", tokens[1]);
|
||||
|
||||
/* 3rd field: mode - device permissions */
|
||||
mode = strtoul(tokens[2], NULL, 8);
|
||||
@@ -524,7 +525,10 @@
|
||||
make_device(temp, 1);
|
||||
}
|
||||
else if (strcmp(action, "add") == 0) {
|
||||
- make_device(temp, 0);
|
||||
+ /* N.B. make_device() mangles the device path, so save it */
|
||||
+ char *s = xstrdup(temp);
|
||||
+ make_device(s, 0);
|
||||
+ free(s);
|
||||
if (ENABLE_FEATURE_MDEV_LOAD_FIRMWARE) {
|
||||
if (fw)
|
||||
load_firmware(fw, temp);
|
||||
@@ -1,14 +0,0 @@
|
||||
--- busybox-1.14.0/include/platform.h Tue Apr 14 01:43:05 2009
|
||||
+++ busybox-1.14.0-unaligned/include/platform.h Sat Apr 18 00:14:34 2009
|
||||
@@ -173,7 +173,10 @@
|
||||
/* performs reasonably well (gcc usually inlines memcpy here) */
|
||||
#define move_from_unaligned16(v, u16p) (memcpy(&(v), (u16p), 2))
|
||||
#define move_from_unaligned32(v, u32p) (memcpy(&(v), (u32p), 4))
|
||||
-#define move_to_unaligned32(u32p, v) (memcpy((u32p), &(v), 4))
|
||||
+#define move_to_unaligned32(u32p, v) do { \
|
||||
+ uint32_t __t = (v); \
|
||||
+ memcpy((u32p), &__t, 4); \
|
||||
+} while (0)
|
||||
#endif
|
||||
|
||||
/* ---- Networking ------------------------------------------ */
|
||||
134
package/busybox/busybox-1.14.2-df.patch
Normal file
134
package/busybox/busybox-1.14.2-df.patch
Normal file
@@ -0,0 +1,134 @@
|
||||
--- busybox-1.14.2/coreutils/df.c Sun Jul 5 22:59:28 2009
|
||||
+++ busybox-1.14.2-df/coreutils/df.c Sun Jul 5 23:00:09 2009
|
||||
@@ -44,7 +44,6 @@
|
||||
FILE *mount_table;
|
||||
struct mntent *mount_entry;
|
||||
struct statfs s;
|
||||
- static const char ignored_mounts[] ALIGN1 = "rootfs\0";
|
||||
|
||||
enum {
|
||||
OPT_KILO = (1 << 0),
|
||||
@@ -120,7 +119,7 @@
|
||||
mount_point = *argv++;
|
||||
if (!mount_point)
|
||||
break;
|
||||
- mount_entry = find_mount_point(mount_point, bb_path_mtab_file);
|
||||
+ mount_entry = find_mount_point(mount_point);
|
||||
if (!mount_entry) {
|
||||
bb_error_msg("%s: can't find mount point", mount_point);
|
||||
set_error:
|
||||
@@ -154,8 +153,8 @@
|
||||
) / (blocks_used + s.f_bavail);
|
||||
}
|
||||
|
||||
- /* GNU coreutils 6.10 skip certain mounts, try to be compatible. */
|
||||
- if (index_in_strings(device, ignored_mounts) != -1)
|
||||
+ /* GNU coreutils 6.10 skips certain mounts, try to be compatible. */
|
||||
+ if (strcmp(device, "rootfs") == 0)
|
||||
continue;
|
||||
|
||||
#ifdef WHY_WE_DO_IT_FOR_DEV_ROOT_ONLY
|
||||
--- busybox-1.14.2/include/libbb.h Sun Jul 5 22:59:31 2009
|
||||
+++ busybox-1.14.2-df/include/libbb.h Sun Jul 5 23:00:09 2009
|
||||
@@ -1025,7 +1025,7 @@
|
||||
|
||||
#ifdef HAVE_MNTENT_H
|
||||
extern int match_fstype(const struct mntent *mt, const char *fstypes) FAST_FUNC;
|
||||
-extern struct mntent *find_mount_point(const char *name, const char *table) FAST_FUNC;
|
||||
+extern struct mntent *find_mount_point(const char *name) FAST_FUNC;
|
||||
#endif
|
||||
extern void erase_mtab(const char * name) FAST_FUNC;
|
||||
extern unsigned int tty_baud_to_value(speed_t speed) FAST_FUNC;
|
||||
--- busybox-1.14.2/libbb/find_mount_point.c Sun Jul 5 22:59:24 2009
|
||||
+++ busybox-1.14.2-df/libbb/find_mount_point.c Sun Jul 5 23:00:09 2009
|
||||
@@ -17,7 +17,7 @@
|
||||
* Given any other file (or directory), find the mount table entry for its
|
||||
* filesystem.
|
||||
*/
|
||||
-struct mntent* FAST_FUNC find_mount_point(const char *name, const char *table)
|
||||
+struct mntent* FAST_FUNC find_mount_point(const char *name)
|
||||
{
|
||||
struct stat s;
|
||||
dev_t mountDevice;
|
||||
@@ -25,27 +25,35 @@
|
||||
struct mntent *mountEntry;
|
||||
|
||||
if (stat(name, &s) != 0)
|
||||
- return 0;
|
||||
+ return NULL;
|
||||
|
||||
- if ((s.st_mode & S_IFMT) == S_IFBLK)
|
||||
+ if (S_ISBLK(s.st_mode))
|
||||
mountDevice = s.st_rdev;
|
||||
else
|
||||
mountDevice = s.st_dev;
|
||||
|
||||
|
||||
- mountTable = setmntent(table ? table : bb_path_mtab_file, "r");
|
||||
+ mountTable = setmntent(bb_path_mtab_file, "r");
|
||||
if (!mountTable)
|
||||
return 0;
|
||||
|
||||
- while ((mountEntry = getmntent(mountTable)) != 0) {
|
||||
+ while ((mountEntry = getmntent(mountTable)) != NULL) {
|
||||
+ /* rootfs mount in Linux 2.6 exists always,
|
||||
+ * and it makes sense to always ignore it.
|
||||
+ * Otherwise people can't reference their "real" root! */
|
||||
+ if (strcmp(mountEntry->mnt_fsname, "rootfs") == 0)
|
||||
+ continue;
|
||||
+
|
||||
if (strcmp(name, mountEntry->mnt_dir) == 0
|
||||
|| strcmp(name, mountEntry->mnt_fsname) == 0
|
||||
) { /* String match. */
|
||||
break;
|
||||
}
|
||||
- if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice) /* Match the device. */
|
||||
+ /* Match the device. */
|
||||
+ if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice)
|
||||
break;
|
||||
- if (stat(mountEntry->mnt_dir, &s) == 0 && s.st_dev == mountDevice) /* Match the directory's mount point. */
|
||||
+ /* Match the directory's mount point. */
|
||||
+ if (stat(mountEntry->mnt_dir, &s) == 0 && s.st_dev == mountDevice)
|
||||
break;
|
||||
}
|
||||
endmntent(mountTable);
|
||||
--- busybox-1.14.2/util-linux/mkfs_minix.c Sun Jul 5 22:59:30 2009
|
||||
+++ busybox-1.14.2-df/util-linux/mkfs_minix.c Sun Jul 5 23:00:09 2009
|
||||
@@ -624,7 +624,6 @@
|
||||
int mkfs_minix_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||
int mkfs_minix_main(int argc UNUSED_PARAM, char **argv)
|
||||
{
|
||||
- struct mntent *mp;
|
||||
unsigned opt;
|
||||
char *tmp;
|
||||
struct stat statbuf;
|
||||
@@ -683,11 +682,8 @@
|
||||
G.total_blocks = 65535;
|
||||
|
||||
/* Check if it is mounted */
|
||||
- mp = find_mount_point(G.device_name, NULL);
|
||||
- if (mp && strcmp(G.device_name, mp->mnt_fsname) == 0)
|
||||
- bb_error_msg_and_die("%s is mounted on %s; "
|
||||
- "refusing to make a filesystem",
|
||||
- G.device_name, mp->mnt_dir);
|
||||
+ if (find_mount_point(G.device_name))
|
||||
+ bb_error_msg_and_die("can't format mounted filesystem");
|
||||
|
||||
xmove_fd(xopen(G.device_name, O_RDWR), dev_fd);
|
||||
if (fstat(dev_fd, &statbuf) < 0)
|
||||
--- busybox-1.14.2/util-linux/mkfs_vfat.c Sun Jul 5 22:59:30 2009
|
||||
+++ busybox-1.14.2-df/util-linux/mkfs_vfat.c Sun Jul 5 23:00:35 2009
|
||||
@@ -273,10 +273,10 @@
|
||||
device_num == 0x0d00 || // xd
|
||||
device_num == 0x1600 ) // hdc, hdd
|
||||
)
|
||||
- bb_error_msg_and_die("Will not try to make filesystem on full-disk device (use -I if wanted)");
|
||||
+ bb_error_msg_and_die("will not try to make filesystem on full-disk device (use -I if wanted)");
|
||||
// can't work on mounted filesystems
|
||||
- if (find_mount_point(device_name, NULL))
|
||||
- bb_error_msg_and_die("Can't format mounted filesystem");
|
||||
+ if (find_mount_point(device_name))
|
||||
+ bb_error_msg_and_die("can't format mounted filesystem");
|
||||
#endif
|
||||
// get true sector size
|
||||
// (parameter must be int*, not long* or size_t*)
|
||||
152
package/busybox/busybox-1.14.2-ls.patch
Normal file
152
package/busybox/busybox-1.14.2-ls.patch
Normal file
@@ -0,0 +1,152 @@
|
||||
diff -urpN busybox-1.14.2/coreutils/ls.c busybox-1.14.2-ls/coreutils/ls.c
|
||||
--- busybox-1.14.2/coreutils/ls.c 2009-06-22 00:40:29.000000000 +0200
|
||||
+++ busybox-1.14.2-ls/coreutils/ls.c 2009-07-03 12:46:16.000000000 +0200
|
||||
@@ -144,8 +144,7 @@ static const char ls_options[] ALIGN1 =
|
||||
USE_FEATURE_LS_FOLLOWLINKS("L") /* 1, 24 */
|
||||
USE_FEATURE_LS_RECURSIVE("R") /* 1, 25 */
|
||||
USE_FEATURE_HUMAN_READABLE("h") /* 1, 26 */
|
||||
- USE_SELINUX("K") /* 1, 27 */
|
||||
- USE_SELINUX("Z") /* 1, 28 */
|
||||
+ USE_SELINUX("KZ") /* 2, 28 */
|
||||
USE_FEATURE_AUTOWIDTH("T:w:") /* 2, 30 */
|
||||
;
|
||||
enum {
|
||||
@@ -162,6 +161,16 @@ enum {
|
||||
OPT_Q = (1 << 10),
|
||||
//OPT_A = (1 << 11),
|
||||
//OPT_k = (1 << 12),
|
||||
+ OPTBIT_color = 13
|
||||
+ + 4 * ENABLE_FEATURE_LS_TIMESTAMPS
|
||||
+ + 4 * ENABLE_FEATURE_LS_SORTFILES
|
||||
+ + 2 * ENABLE_FEATURE_LS_FILETYPES
|
||||
+ + 1 * ENABLE_FEATURE_LS_FOLLOWLINKS
|
||||
+ + 1 * ENABLE_FEATURE_LS_RECURSIVE
|
||||
+ + 1 * ENABLE_FEATURE_HUMAN_READABLE
|
||||
+ + 2 * ENABLE_SELINUX
|
||||
+ + 2 * ENABLE_FEATURE_AUTOWIDTH,
|
||||
+ OPT_color = 1 << OPTBIT_color,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -889,16 +898,6 @@ static int list_single(const struct dnod
|
||||
}
|
||||
|
||||
|
||||
-/* colored LS support by JaWi, janwillem.janssen@lxtreme.nl */
|
||||
-#if ENABLE_FEATURE_LS_COLOR
|
||||
-/* long option entry used only for --color, which has no short option
|
||||
- * equivalent */
|
||||
-static const char ls_color_opt[] ALIGN1 =
|
||||
- "color\0" Optional_argument "\xff" /* no short equivalent */
|
||||
- ;
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
int ls_main(int argc UNUSED_PARAM, char **argv)
|
||||
{
|
||||
struct dnode **dnd;
|
||||
@@ -911,8 +910,25 @@ int ls_main(int argc UNUSED_PARAM, char
|
||||
int dnfiles;
|
||||
int dndirs;
|
||||
int i;
|
||||
+#if ENABLE_FEATURE_LS_COLOR
|
||||
+ /* colored LS support by JaWi, janwillem.janssen@lxtreme.nl */
|
||||
+ /* coreutils 6.10:
|
||||
+ * # ls --color=BOGUS
|
||||
+ * ls: invalid argument 'BOGUS' for '--color'
|
||||
+ * Valid arguments are:
|
||||
+ * 'always', 'yes', 'force'
|
||||
+ * 'never', 'no', 'none'
|
||||
+ * 'auto', 'tty', 'if-tty'
|
||||
+ * (and substrings: "--color=alwa" work too)
|
||||
+ */
|
||||
+ static const char ls_longopts[] ALIGN1 =
|
||||
+ "color\0" Optional_argument "\xff"; /* no short equivalent */
|
||||
+ static const char color_str[] ALIGN1 =
|
||||
+ "always\0""yes\0""force\0"
|
||||
+ "auto\0""tty\0""if-tty\0";
|
||||
/* need to initialize since --color has _an optional_ argument */
|
||||
- USE_FEATURE_LS_COLOR(const char *color_opt = "always";)
|
||||
+ const char *color_opt = color_str; /* "always" */
|
||||
+#endif
|
||||
|
||||
INIT_G();
|
||||
|
||||
@@ -927,7 +943,7 @@ int ls_main(int argc UNUSED_PARAM, char
|
||||
#endif
|
||||
|
||||
/* process options */
|
||||
- USE_FEATURE_LS_COLOR(applet_long_options = ls_color_opt;)
|
||||
+ USE_FEATURE_LS_COLOR(applet_long_options = ls_longopts;)
|
||||
#if ENABLE_FEATURE_AUTOWIDTH
|
||||
opt_complementary = "T+:w+"; /* -T N, -w N */
|
||||
opt = getopt32(argv, ls_options, &tabstops, &terminal_width
|
||||
@@ -966,13 +982,20 @@ int ls_main(int argc UNUSED_PARAM, char
|
||||
if (!p || (p[0] && strcmp(p, "none") != 0))
|
||||
show_color = 1;
|
||||
}
|
||||
- if (opt & (1 << i)) { /* next flag after short options */
|
||||
- if (strcmp("always", color_opt) == 0)
|
||||
- show_color = 1;
|
||||
- else if (strcmp("never", color_opt) == 0)
|
||||
+ if (opt & OPT_color) {
|
||||
+ if (color_opt[0] == 'n')
|
||||
show_color = 0;
|
||||
- else if (strcmp("auto", color_opt) == 0 && isatty(STDOUT_FILENO))
|
||||
- show_color = 1;
|
||||
+ else switch (index_in_substrings(color_str, color_opt)) {
|
||||
+ case 3:
|
||||
+ case 4:
|
||||
+ case 5:
|
||||
+ if (isatty(STDOUT_FILENO)) {
|
||||
+ case 0:
|
||||
+ case 1:
|
||||
+ case 2:
|
||||
+ show_color = 1;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
#endif
|
||||
|
||||
diff -urpN busybox-1.14.2/testsuite/ls/ls-1-works busybox-1.14.2-ls/testsuite/ls/ls-1-works
|
||||
--- busybox-1.14.2/testsuite/ls/ls-1-works 2009-06-22 00:32:00.000000000 +0200
|
||||
+++ busybox-1.14.2-ls/testsuite/ls/ls-1-works 2009-07-02 14:28:45.000000000 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
[ -n "$d" ] || d=..
|
||||
-ls -1 "$d" > logfile.gnu
|
||||
-busybox ls -1 "$d" > logfile.bb
|
||||
-cmp logfile.gnu logfile.bb
|
||||
+LC_ALL=C ls -1 "$d" > logfile.gnu
|
||||
+LC_ALL=C busybox ls -1 "$d" > logfile.bb
|
||||
+diff -ubw logfile.gnu logfile.bb
|
||||
diff -urpN busybox-1.14.2/testsuite/ls/ls-h-works busybox-1.14.2-ls/testsuite/ls/ls-h-works
|
||||
--- busybox-1.14.2/testsuite/ls/ls-h-works 2009-06-22 00:32:00.000000000 +0200
|
||||
+++ busybox-1.14.2-ls/testsuite/ls/ls-h-works 2009-07-02 14:28:45.000000000 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
[ -n "$d" ] || d=..
|
||||
-ls -h "$d" > logfile.gnu
|
||||
-busybox ls -h "$d" > logfile.bb
|
||||
-cmp logfile.gnu logfile.bb
|
||||
+LC_ALL=C ls -h "$d" > logfile.gnu
|
||||
+LC_ALL=C busybox ls -h "$d" > logfile.bb
|
||||
+diff -ubw logfile.gnu logfile.bb
|
||||
diff -urpN busybox-1.14.2/testsuite/ls/ls-l-works busybox-1.14.2-ls/testsuite/ls/ls-l-works
|
||||
--- busybox-1.14.2/testsuite/ls/ls-l-works 2009-06-22 00:32:00.000000000 +0200
|
||||
+++ busybox-1.14.2-ls/testsuite/ls/ls-l-works 2009-07-02 14:28:45.000000000 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
[ -n "$d" ] || d=..
|
||||
LC_ALL=C ls -l "$d" > logfile.gnu
|
||||
-busybox ls -l "$d" > logfile.bb
|
||||
-diff -w logfile.gnu logfile.bb
|
||||
+LC_ALL=C busybox ls -l "$d" > logfile.bb
|
||||
+diff -ubw logfile.gnu logfile.bb
|
||||
diff -urpN busybox-1.14.2/testsuite/ls/ls-s-works busybox-1.14.2-ls/testsuite/ls/ls-s-works
|
||||
--- busybox-1.14.2/testsuite/ls/ls-s-works 2009-06-22 00:32:00.000000000 +0200
|
||||
+++ busybox-1.14.2-ls/testsuite/ls/ls-s-works 2009-07-02 14:28:45.000000000 +0200
|
||||
@@ -1,4 +1,4 @@
|
||||
[ -n "$d" ] || d=..
|
||||
LC_ALL=C ls -1s "$d" > logfile.gnu
|
||||
-busybox ls -1s "$d" > logfile.bb
|
||||
-cmp logfile.gnu logfile.bb
|
||||
+LC_ALL=C busybox ls -1s "$d" > logfile.bb
|
||||
+diff -ubw logfile.gnu logfile.bb
|
||||
64
package/busybox/busybox-1.14.2-test.patch
Normal file
64
package/busybox/busybox-1.14.2-test.patch
Normal file
@@ -0,0 +1,64 @@
|
||||
diff -urpN busybox-1.14.2/coreutils/test.c busybox-1.14.2-test/coreutils/test.c
|
||||
--- busybox-1.14.2/coreutils/test.c 2009-07-05 22:59:28.000000000 +0200
|
||||
+++ busybox-1.14.2-test/coreutils/test.c 2009-07-17 01:46:28.000000000 +0200
|
||||
@@ -571,7 +571,14 @@ static number_t nexpr(enum token n)
|
||||
|
||||
nest_msg(">nexpr(%s)\n", TOKSTR[n]);
|
||||
if (n == UNOT) {
|
||||
- res = !nexpr(check_operator(*++args));
|
||||
+ n = check_operator(*++args);
|
||||
+ if (n == EOI) {
|
||||
+ /* special case: [ ! ], [ a -a ! ] are valid */
|
||||
+ /* IOW, "! ARG" may miss ARG */
|
||||
+ unnest_msg("<nexpr:1 (!EOI)\n");
|
||||
+ return 1;
|
||||
+ }
|
||||
+ res = !nexpr(n);
|
||||
unnest_msg("<nexpr:%lld\n", res);
|
||||
return res;
|
||||
}
|
||||
@@ -742,7 +749,7 @@ int test_main(int argc, char **argv)
|
||||
check_operator(argv[1]);
|
||||
if (last_operator->op_type == BINOP) {
|
||||
/* "test [!] arg1 <binary_op> arg2" */
|
||||
- args = &argv[0];
|
||||
+ args = argv;
|
||||
res = (binop() == 0);
|
||||
goto ret;
|
||||
}
|
||||
@@ -755,7 +762,7 @@ int test_main(int argc, char **argv)
|
||||
argv--;
|
||||
}
|
||||
#endif
|
||||
- args = &argv[0];
|
||||
+ args = argv;
|
||||
res = !oexpr(check_operator(*args));
|
||||
|
||||
if (*args != NULL && *++args != NULL) {
|
||||
diff -urpN busybox-1.14.2/testsuite/test.tests busybox-1.14.2-test/testsuite/test.tests
|
||||
--- busybox-1.14.2/testsuite/test.tests 2009-07-05 22:59:22.000000000 +0200
|
||||
+++ busybox-1.14.2-test/testsuite/test.tests 2009-07-17 01:46:28.000000000 +0200
|
||||
@@ -21,6 +21,11 @@ testing "test '': should be false (1)" \
|
||||
"1\n" \
|
||||
"" ""
|
||||
|
||||
+testing "test !: should be true (0)" \
|
||||
+ "busybox test !; echo \$?" \
|
||||
+ "0\n" \
|
||||
+ "" ""
|
||||
+
|
||||
testing "test a: should be true (0)" \
|
||||
"busybox test a; echo \$?" \
|
||||
"0\n" \
|
||||
@@ -51,6 +56,11 @@ testing "test -lt = -gt: should be false
|
||||
"1\n" \
|
||||
"" ""
|
||||
|
||||
+testing "test a -a !: should be true (0)" \
|
||||
+ "busybox test a -a !; echo \$?" \
|
||||
+ "0\n" \
|
||||
+ "" ""
|
||||
+
|
||||
testing "test -f = a -o b: should be true (0)" \
|
||||
"busybox test -f = a -o b; echo \$?" \
|
||||
"0\n" \
|
||||
12
package/busybox/busybox-1.14.2-udhcpd.patch
Normal file
12
package/busybox/busybox-1.14.2-udhcpd.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff -urpN busybox-1.14.2/networking/udhcp/files.c busybox-1.14.2-udhcpd/networking/udhcp/files.c
|
||||
--- busybox-1.14.2/networking/udhcp/files.c 2009-06-22 00:40:29.000000000 +0200
|
||||
+++ busybox-1.14.2-udhcpd/networking/udhcp/files.c 2009-07-07 14:58:39.000000000 +0200
|
||||
@@ -420,7 +420,7 @@ void FAST_FUNC read_leases(const char *f
|
||||
continue;
|
||||
/* NB: add_lease takes "relative time", IOW,
|
||||
* lease duration, not lease deadline. */
|
||||
- if (!(add_lease(lease.chaddr, lease.yiaddr, expires, lease.hostname))) {
|
||||
+ if (!(add_lease(lease.chaddr, lease.yiaddr, expires, NULL /* was lease.hostname. bug in add_lease, disabled */ ))) {
|
||||
bb_error_msg("too many leases while loading %s", file);
|
||||
break;
|
||||
}
|
||||
@@ -72,6 +72,11 @@ ifeq ($(BR2_INET_IPV6),y)
|
||||
else
|
||||
$(SED) "s/^.*CONFIG_FEATURE_IPV6.*/CONFIG_FEATURE_IPV6=n/;" $(BUSYBOX_DIR)/.config
|
||||
endif
|
||||
ifeq ($(BR2_INET_RPC),y)
|
||||
$(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=y/;" $(BUSYBOX_DIR)/.config
|
||||
else
|
||||
$(SED) "s/^.*CONFIG_FEATURE_MOUNT_NFS.*/CONFIG_FEATURE_MOUNT_NFS=n/;" $(BUSYBOX_DIR)/.config
|
||||
endif
|
||||
ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y)
|
||||
# force mdev on
|
||||
$(SED) "s/^.*CONFIG_MDEV.*/CONFIG_MDEV=y/" $(BUSYBOX_DIR)/.config
|
||||
|
||||
@@ -48,9 +48,9 @@ else
|
||||
CAIRO_CONF_OPT += --disable-directfb
|
||||
endif
|
||||
|
||||
ifneq ($(BR2_PACKAGE_XSERVER_none),y)
|
||||
ifeq ($(BR2_PACKAGE_XORG7),y)
|
||||
CAIRO_CONF_OPT += --enable-xlib --with-x
|
||||
CAIRO_DEPENDENCIES += $(XSERVER)
|
||||
CAIRO_DEPENDENCIES += xserver_xorg-server
|
||||
else
|
||||
CAIRO_CONF_OPT += --disable-xlib --without-x
|
||||
endif
|
||||
|
||||
4
package/config/.gitignore
vendored
4
package/config/.gitignore
vendored
@@ -1,6 +1,10 @@
|
||||
/buildroot-config
|
||||
/conf
|
||||
/mconf
|
||||
/qconf
|
||||
/qconf.moc
|
||||
/.tmp_qtcheck
|
||||
/lkc_defs.h
|
||||
/lex.zconf.c
|
||||
/zconf.hash.c
|
||||
/zconf.tab.c
|
||||
|
||||
@@ -14,7 +14,10 @@ __hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
|
||||
host-csingle := $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
|
||||
host-cmulti := $(foreach m,$(__hostprogs),\
|
||||
$(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
|
||||
host-cxxmulti := $(foreach m,$(__hostprogs),\
|
||||
$(if $($(m)-cxxobjs),$(m),$(if $($(m)-objs),)))
|
||||
host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
|
||||
host-cxxobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-cxxobjs)))
|
||||
|
||||
$(host-csingle): %: %.c
|
||||
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $< $(HOST_LOADLIBES) -o $@
|
||||
@@ -22,9 +25,15 @@ $(host-csingle): %: %.c
|
||||
$(host-cmulti): %: $(host-cobjs) $(host-cshlib)
|
||||
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $(HOST_LOADLIBES) -o $@
|
||||
|
||||
$(host-cxxmulti): %: $(host-cxxobjs) $(host-cobjs) $(host-cshlib)
|
||||
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $($@-objs) $($@-cxxobjs) $(HOSTLOADLIBES_$@) -o $@
|
||||
|
||||
$(host-cobjs): %.o: %.c
|
||||
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) -c $< -o $@
|
||||
|
||||
$(host-cxxobjs): %.o: %.cc
|
||||
$(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCXXFLAGS_$@) -c $< -o $@
|
||||
|
||||
$(obj)/%:: $(src)/%_shipped
|
||||
$(Q)cat $< > $@
|
||||
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
|
||||
PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
|
||||
|
||||
ifdef KBUILD_KCONFIG
|
||||
Kconfig := $(KBUILD_KCONFIG)
|
||||
else
|
||||
Kconfig := arch/$(SRCARCH)/Kconfig
|
||||
endif
|
||||
|
||||
xconfig: $(obj)/qconf
|
||||
$< $(Kconfig)
|
||||
@@ -24,22 +28,25 @@ oldconfig: $(obj)/conf
|
||||
silentoldconfig: $(obj)/conf
|
||||
$< -s $(Kconfig)
|
||||
|
||||
# Create new linux.po file
|
||||
# Create new linux.pot file
|
||||
# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
|
||||
# The symlink is used to repair a deficiency in arch/um
|
||||
update-po-config: $(obj)/kxgettext
|
||||
xgettext --default-domain=linux \
|
||||
update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h
|
||||
$(Q)echo " GEN config"
|
||||
$(Q)xgettext --default-domain=linux \
|
||||
--add-comments --keyword=_ --keyword=N_ \
|
||||
--from-code=UTF-8 \
|
||||
--files-from=scripts/kconfig/POTFILES.in \
|
||||
--output $(obj)/config.pot
|
||||
$(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot
|
||||
$(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch
|
||||
(for i in `ls arch/`; \
|
||||
do \
|
||||
$(obj)/kxgettext arch/$$i/Kconfig; \
|
||||
done ) >> $(obj)/config.pot
|
||||
msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
|
||||
$(Q)(for i in `ls arch/*/Kconfig`; \
|
||||
do \
|
||||
echo " GEN $$i"; \
|
||||
$(obj)/kxgettext $$i \
|
||||
>> $(obj)/config.pot; \
|
||||
done )
|
||||
$(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
|
||||
--output $(obj)/linux.pot
|
||||
$(Q)rm -f arch/um/Kconfig.arch
|
||||
$(Q)rm -f $(obj)/config.pot
|
||||
@@ -76,7 +83,7 @@ help:
|
||||
@echo ' xconfig - Update current config utilising a QT based front-end'
|
||||
@echo ' gconfig - Update current config utilising a GTK based front-end'
|
||||
@echo ' oldconfig - Update current config utilising a provided .config as base'
|
||||
@echo ' silentoldconfig - Same as oldconfig, but quietly'
|
||||
@echo ' silentoldconfig - Same as oldconfig, but quietly, additionally update deps'
|
||||
@echo ' randconfig - New config with random answer to all options'
|
||||
@echo ' defconfig - New config with default answer to all options'
|
||||
@echo ' allmodconfig - New config selecting modules when possible'
|
||||
@@ -93,17 +100,11 @@ HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
|
||||
|
||||
HOST_EXTRACFLAGS += -DLOCALE
|
||||
|
||||
PHONY += $(obj)/dochecklxdialog
|
||||
$(obj)/dochecklxdialog:
|
||||
$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
|
||||
|
||||
always := dochecklxdialog
|
||||
|
||||
|
||||
# ===========================================================================
|
||||
# Shared Makefile for the various kconfig executables:
|
||||
# conf: Used for defconfig, oldconfig and related targets
|
||||
# mconf: Used for the mconfig target.
|
||||
# mconf: Used for the menuconfig target
|
||||
# Utilizes the lxdialog package
|
||||
# qconf: Used for the xconfig target
|
||||
# Based on QT which needs to be installed to compile it
|
||||
@@ -124,12 +125,16 @@ ifeq ($(MAKECMDGOALS),menuconfig)
|
||||
hostprogs-y += mconf
|
||||
endif
|
||||
ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf)
|
||||
hostprogs-y += mconf
|
||||
hostprogs-y += mconf
|
||||
endif
|
||||
|
||||
ifeq ($(MAKECMDGOALS),xconfig)
|
||||
qconf-target := 1
|
||||
endif
|
||||
ifeq ($(findstring qconf,$(MAKECMDGOALS)),qconf)
|
||||
qconf-target := 1
|
||||
endif
|
||||
|
||||
ifeq ($(MAKECMDGOALS),gconfig)
|
||||
gconf-target := 1
|
||||
endif
|
||||
@@ -145,8 +150,17 @@ gconf-objs := gconf.o kconfig_load.o zconf.tab.o
|
||||
endif
|
||||
|
||||
clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
|
||||
.tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c
|
||||
.tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h
|
||||
clean-files += mconf qconf gconf
|
||||
clean-files += config.pot linux.pot
|
||||
|
||||
# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
|
||||
PHONY += $(obj)/dochecklxdialog
|
||||
$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog
|
||||
$(obj)/dochecklxdialog:
|
||||
$(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
|
||||
|
||||
always := dochecklxdialog
|
||||
|
||||
# Add environment specific flags
|
||||
HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
|
||||
@@ -184,8 +198,8 @@ $(obj)/.tmp_qtcheck:
|
||||
done; \
|
||||
if [ -z "$$dir" ]; then \
|
||||
echo "*"; \
|
||||
echo "* Unable to find the QT installation. Please make sure that"; \
|
||||
echo "* the QT development package is correctly installed and"; \
|
||||
echo "* Unable to find the QT3 installation. Please make sure that"; \
|
||||
echo "* the QT3 development package is correctly installed and"; \
|
||||
echo "* either install pkg-config or set the QTDIR environment"; \
|
||||
echo "* variable to the correct location."; \
|
||||
echo "*"; \
|
||||
@@ -251,6 +265,9 @@ $(obj)/%.moc: $(src)/%.h
|
||||
$(obj)/lkc_defs.h: $(src)/lkc_proto.h
|
||||
sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
|
||||
|
||||
# Extract gconf menu items for I18N support
|
||||
$(obj)/gconf.glade.h: $(obj)/gconf.glade
|
||||
intltool-extract --type=gettext/glade $(obj)/gconf.glade
|
||||
|
||||
###
|
||||
# The following requires flex/bison/gperf
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
scripts/kconfig/lxdialog/checklist.c
|
||||
scripts/kconfig/lxdialog/inputbox.c
|
||||
scripts/kconfig/lxdialog/menubox.c
|
||||
scripts/kconfig/lxdialog/textbox.c
|
||||
scripts/kconfig/lxdialog/util.c
|
||||
scripts/kconfig/lxdialog/yesno.c
|
||||
scripts/kconfig/mconf.c
|
||||
scripts/kconfig/conf.c
|
||||
scripts/kconfig/confdata.c
|
||||
scripts/kconfig/gconf.c
|
||||
scripts/kconfig/gconf.glade.h
|
||||
scripts/kconfig/qconf.cc
|
||||
|
||||
@@ -3,13 +3,15 @@
|
||||
* Released under the terms of the GNU GPL v2.0.
|
||||
*/
|
||||
|
||||
#include <locale.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#define LKC_DIRECT_LINK
|
||||
#include "lkc.h"
|
||||
@@ -31,6 +33,7 @@ char *defconfig_file;
|
||||
|
||||
static int indent = 1;
|
||||
static int valid_stdin = 1;
|
||||
static int sync_kconfig;
|
||||
static int conf_cnt;
|
||||
static char line[128];
|
||||
static struct menu *rootEntry;
|
||||
@@ -40,7 +43,7 @@ static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n"
|
||||
static const char *get_help(struct menu *menu)
|
||||
{
|
||||
if (menu_has_help(menu))
|
||||
return menu_get_help(menu);
|
||||
return _(menu_get_help(menu));
|
||||
else
|
||||
return nohelp_text;
|
||||
}
|
||||
@@ -64,7 +67,7 @@ static void strip(char *str)
|
||||
|
||||
static void check_stdin(void)
|
||||
{
|
||||
if (!valid_stdin && input_mode == ask_silent) {
|
||||
if (!valid_stdin) {
|
||||
printf(_("aborted!\n\n"));
|
||||
printf(_("Console input/output is redirected. "));
|
||||
printf(_("Run 'make oldconfig' to update configuration.\n\n"));
|
||||
@@ -75,10 +78,9 @@ static void check_stdin(void)
|
||||
static int conf_askvalue(struct symbol *sym, const char *def)
|
||||
{
|
||||
enum symbol_type type = sym_get_type(sym);
|
||||
tristate val;
|
||||
|
||||
if (!sym_has_value(sym))
|
||||
printf("(NEW) ");
|
||||
printf(_("(NEW) "));
|
||||
|
||||
line[0] = '\n';
|
||||
line[1] = 0;
|
||||
@@ -91,15 +93,6 @@ static int conf_askvalue(struct symbol *sym, const char *def)
|
||||
}
|
||||
|
||||
switch (input_mode) {
|
||||
case set_no:
|
||||
case set_mod:
|
||||
case set_yes:
|
||||
case set_random:
|
||||
if (sym_has_value(sym)) {
|
||||
printf("%s\n", def);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case ask_new:
|
||||
case ask_silent:
|
||||
if (sym_has_value(sym)) {
|
||||
@@ -111,9 +104,6 @@ static int conf_askvalue(struct symbol *sym, const char *def)
|
||||
fflush(stdout);
|
||||
fgets(line, 128, stdin);
|
||||
return 1;
|
||||
case set_default:
|
||||
printf("%s\n", def);
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -127,52 +117,6 @@ static int conf_askvalue(struct symbol *sym, const char *def)
|
||||
default:
|
||||
;
|
||||
}
|
||||
switch (input_mode) {
|
||||
case set_yes:
|
||||
if (sym_tristate_within_range(sym, yes)) {
|
||||
line[0] = 'y';
|
||||
line[1] = '\n';
|
||||
line[2] = 0;
|
||||
break;
|
||||
}
|
||||
case set_mod:
|
||||
if (type == S_TRISTATE) {
|
||||
if (sym_tristate_within_range(sym, mod)) {
|
||||
line[0] = 'm';
|
||||
line[1] = '\n';
|
||||
line[2] = 0;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (sym_tristate_within_range(sym, yes)) {
|
||||
line[0] = 'y';
|
||||
line[1] = '\n';
|
||||
line[2] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case set_no:
|
||||
if (sym_tristate_within_range(sym, no)) {
|
||||
line[0] = 'n';
|
||||
line[1] = '\n';
|
||||
line[2] = 0;
|
||||
break;
|
||||
}
|
||||
case set_random:
|
||||
do {
|
||||
val = (tristate)(random() % 3);
|
||||
} while (!sym_tristate_within_range(sym, val));
|
||||
switch (val) {
|
||||
case no: line[0] = 'n'; break;
|
||||
case mod: line[0] = 'm'; break;
|
||||
case yes: line[0] = 'y'; break;
|
||||
}
|
||||
line[1] = '\n';
|
||||
line[2] = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
printf("%s", line);
|
||||
return 1;
|
||||
}
|
||||
@@ -183,7 +127,7 @@ int conf_string(struct menu *menu)
|
||||
const char *def;
|
||||
|
||||
while (1) {
|
||||
printf("%*s%s ", indent - 1, "", menu->prompt->text);
|
||||
printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
|
||||
printf("(%s) ", sym->name);
|
||||
def = sym_get_string_value(sym);
|
||||
if (sym_get_string_value(sym))
|
||||
@@ -216,7 +160,7 @@ static int conf_sym(struct menu *menu)
|
||||
tristate oldval, newval;
|
||||
|
||||
while (1) {
|
||||
printf("%*s%s ", indent - 1, "", menu->prompt->text);
|
||||
printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
|
||||
if (sym->name)
|
||||
printf("(%s) ", sym->name);
|
||||
type = sym_get_type(sym);
|
||||
@@ -306,7 +250,7 @@ static int conf_choice(struct menu *menu)
|
||||
case no:
|
||||
return 1;
|
||||
case mod:
|
||||
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
|
||||
printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
|
||||
return 0;
|
||||
case yes:
|
||||
break;
|
||||
@@ -316,7 +260,7 @@ static int conf_choice(struct menu *menu)
|
||||
while (1) {
|
||||
int cnt, def;
|
||||
|
||||
printf("%*s%s\n", indent - 1, "", menu_get_prompt(menu));
|
||||
printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
|
||||
def_sym = sym_get_choice_value(sym);
|
||||
cnt = def = 0;
|
||||
line[0] = 0;
|
||||
@@ -324,7 +268,7 @@ static int conf_choice(struct menu *menu)
|
||||
if (!menu_is_visible(child))
|
||||
continue;
|
||||
if (!child->sym) {
|
||||
printf("%*c %s\n", indent, '*', menu_get_prompt(child));
|
||||
printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));
|
||||
continue;
|
||||
}
|
||||
cnt++;
|
||||
@@ -333,14 +277,14 @@ static int conf_choice(struct menu *menu)
|
||||
printf("%*c", indent, '>');
|
||||
} else
|
||||
printf("%*c", indent, ' ');
|
||||
printf(" %d. %s", cnt, menu_get_prompt(child));
|
||||
printf(" %d. %s", cnt, _(menu_get_prompt(child)));
|
||||
if (child->sym->name)
|
||||
printf(" (%s)", child->sym->name);
|
||||
if (!sym_has_value(child->sym))
|
||||
printf(" (NEW)");
|
||||
printf(_(" (NEW)"));
|
||||
printf("\n");
|
||||
}
|
||||
printf("%*schoice", indent - 1, "");
|
||||
printf(_("%*schoice"), indent - 1, "");
|
||||
if (cnt == 1) {
|
||||
printf("[1]: 1\n");
|
||||
goto conf_childs;
|
||||
@@ -373,15 +317,7 @@ static int conf_choice(struct menu *menu)
|
||||
else
|
||||
continue;
|
||||
break;
|
||||
case set_random:
|
||||
if (is_new)
|
||||
def = (random() % cnt) + 1;
|
||||
case set_default:
|
||||
case set_yes:
|
||||
case set_mod:
|
||||
case set_no:
|
||||
cnt = def;
|
||||
printf("%d\n", cnt);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -399,9 +335,9 @@ static int conf_choice(struct menu *menu)
|
||||
continue;
|
||||
}
|
||||
sym_set_choice_value(sym, child->sym);
|
||||
if (child->list) {
|
||||
for (child = child->list; child; child = child->next) {
|
||||
indent += 2;
|
||||
conf(child->list);
|
||||
conf(child);
|
||||
indent -= 2;
|
||||
}
|
||||
return 1;
|
||||
@@ -433,7 +369,7 @@ static void conf(struct menu *menu)
|
||||
if (prompt)
|
||||
printf("%*c\n%*c %s\n%*c\n",
|
||||
indent, '*',
|
||||
indent, '*', prompt,
|
||||
indent, '*', _(prompt),
|
||||
indent, '*');
|
||||
default:
|
||||
;
|
||||
@@ -495,30 +431,29 @@ static void check_conf(struct menu *menu)
|
||||
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
int i = 1;
|
||||
int opt;
|
||||
const char *name;
|
||||
struct stat tmpstat;
|
||||
|
||||
if (ac > i && av[i][0] == '-') {
|
||||
switch (av[i++][1]) {
|
||||
setlocale(LC_ALL, "");
|
||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||
textdomain(PACKAGE);
|
||||
|
||||
while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
|
||||
switch (opt) {
|
||||
case 'o':
|
||||
input_mode = ask_new;
|
||||
input_mode = ask_silent;
|
||||
break;
|
||||
case 's':
|
||||
input_mode = ask_silent;
|
||||
valid_stdin = isatty(0) && isatty(1) && isatty(2);
|
||||
sync_kconfig = 1;
|
||||
break;
|
||||
case 'd':
|
||||
input_mode = set_default;
|
||||
break;
|
||||
case 'D':
|
||||
input_mode = set_default;
|
||||
defconfig_file = av[i++];
|
||||
if (!defconfig_file) {
|
||||
printf(_("%s: No default config file specified\n"),
|
||||
av[0]);
|
||||
exit(1);
|
||||
}
|
||||
defconfig_file = optarg;
|
||||
break;
|
||||
case 'n':
|
||||
input_mode = set_no;
|
||||
@@ -530,44 +465,63 @@ int main(int ac, char **av)
|
||||
input_mode = set_yes;
|
||||
break;
|
||||
case 'r':
|
||||
{
|
||||
struct timeval now;
|
||||
unsigned int seed;
|
||||
|
||||
/*
|
||||
* Use microseconds derived seed,
|
||||
* compensate for systems where it may be zero
|
||||
*/
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
|
||||
srand(seed);
|
||||
|
||||
input_mode = set_random;
|
||||
srandom(time(NULL));
|
||||
break;
|
||||
}
|
||||
case 'h':
|
||||
case '?':
|
||||
fprintf(stderr, "See README for usage info\n");
|
||||
printf(_("See README for usage info\n"));
|
||||
exit(0);
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, _("See README for usage info\n"));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
name = av[i];
|
||||
if (!name) {
|
||||
if (ac == optind) {
|
||||
printf(_("%s: Kconfig file missing\n"), av[0]);
|
||||
exit(1);
|
||||
}
|
||||
name = av[optind];
|
||||
conf_parse(name);
|
||||
/*zconfdump(stdout);*/
|
||||
if (sync_kconfig) {
|
||||
name = conf_get_configname();
|
||||
if (stat(name, &tmpstat)) {
|
||||
fprintf(stderr, _("***\n"
|
||||
"*** You have not yet configured Buildroot!\n"
|
||||
"*** (missing .config file \"%s\")\n"
|
||||
"***\n"
|
||||
"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
|
||||
"*** \"make menuconfig\" or \"make xconfig\").\n"
|
||||
"***\n"), name);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
switch (input_mode) {
|
||||
case set_default:
|
||||
if (!defconfig_file)
|
||||
defconfig_file = conf_get_default_confname();
|
||||
if (conf_read(defconfig_file)) {
|
||||
printf("***\n"
|
||||
printf(_("***\n"
|
||||
"*** Can't find default configuration \"%s\"!\n"
|
||||
"***\n", defconfig_file);
|
||||
"***\n"), defconfig_file);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
case ask_silent:
|
||||
if (stat(".config", &tmpstat)) {
|
||||
printf(_("***\n"
|
||||
"*** You have not yet configured Buildroot!\n"
|
||||
"*** (missing .config file)\n"
|
||||
"***\n"
|
||||
"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
|
||||
"*** \"make menuconfig\" or \"make config\").\n"
|
||||
"***\n"));
|
||||
exit(1);
|
||||
}
|
||||
case ask_all:
|
||||
case ask_new:
|
||||
conf_read(NULL);
|
||||
@@ -597,35 +551,66 @@ int main(int ac, char **av)
|
||||
break;
|
||||
}
|
||||
|
||||
if (input_mode != ask_silent) {
|
||||
if (sync_kconfig) {
|
||||
if (conf_get_changed()) {
|
||||
name = getenv("KCONFIG_NOSILENTUPDATE");
|
||||
if (name && *name) {
|
||||
fprintf(stderr,
|
||||
_("\n*** Buildroot configuration requires explicit update.\n\n"));
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
valid_stdin = isatty(0) && isatty(1) && isatty(2);
|
||||
}
|
||||
|
||||
switch (input_mode) {
|
||||
case set_no:
|
||||
conf_set_all_new_symbols(def_no);
|
||||
break;
|
||||
case set_yes:
|
||||
conf_set_all_new_symbols(def_yes);
|
||||
break;
|
||||
case set_mod:
|
||||
conf_set_all_new_symbols(def_mod);
|
||||
break;
|
||||
case set_random:
|
||||
conf_set_all_new_symbols(def_random);
|
||||
break;
|
||||
case set_default:
|
||||
conf_set_all_new_symbols(def_default);
|
||||
break;
|
||||
case ask_new:
|
||||
case ask_all:
|
||||
rootEntry = &rootmenu;
|
||||
conf(&rootmenu);
|
||||
if (input_mode == ask_all) {
|
||||
input_mode = ask_silent;
|
||||
valid_stdin = 1;
|
||||
input_mode = ask_silent;
|
||||
/* fall through */
|
||||
case ask_silent:
|
||||
/* Update until a loop caused no more changes */
|
||||
do {
|
||||
conf_cnt = 0;
|
||||
check_conf(&rootmenu);
|
||||
} while (conf_cnt);
|
||||
break;
|
||||
}
|
||||
|
||||
if (sync_kconfig) {
|
||||
/* silentoldconfig is used during the build so we shall update autoconf.
|
||||
* All other commands are only used to generate a config.
|
||||
*/
|
||||
if (conf_get_changed() && conf_write(NULL)) {
|
||||
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
|
||||
exit(1);
|
||||
}
|
||||
} else if (conf_get_changed()) {
|
||||
name = getenv("KCONFIG_NOSILENTUPDATE");
|
||||
if (name && *name) {
|
||||
fprintf(stderr, _("\n*** Buildroot configuration requires explicit update.\n\n"));
|
||||
if (conf_write_autoconf()) {
|
||||
fprintf(stderr, _("\n*** Error during update of the Buildroot configuration.\n\n"));
|
||||
return 1;
|
||||
}
|
||||
} else
|
||||
goto skip_check;
|
||||
|
||||
do {
|
||||
conf_cnt = 0;
|
||||
check_conf(&rootmenu);
|
||||
} while (conf_cnt);
|
||||
if (conf_write(NULL)) {
|
||||
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
|
||||
return 1;
|
||||
} else {
|
||||
if (conf_write(NULL)) {
|
||||
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
skip_check:
|
||||
if (/*input_mode == ask_silent &&*/ conf_write_autoconf()) {
|
||||
fprintf(stderr, _("\n*** Error during writing of the Buildroot configuration.\n\n"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -42,6 +42,13 @@ const char *conf_get_configname(void)
|
||||
return name ? name : ".config";
|
||||
}
|
||||
|
||||
const char *conf_get_autoconfig_name(void)
|
||||
{
|
||||
char *name = getenv("BUILDROOT_AUTOCONFIG");
|
||||
|
||||
return name ? name : "$(BR2_DEPENDS_DIR)/config/auto.conf";
|
||||
}
|
||||
|
||||
static char *conf_expand_value(const char *in)
|
||||
{
|
||||
struct symbol *sym;
|
||||
@@ -224,7 +231,7 @@ load:
|
||||
if (def == S_DEF_USER) {
|
||||
sym = sym_find(line + 2);
|
||||
if (!sym) {
|
||||
conf_warning("trying to assign nonexistent symbol %s", line + 2);
|
||||
sym_add_change_count(1);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -233,8 +240,7 @@ load:
|
||||
sym->type = S_BOOLEAN;
|
||||
}
|
||||
if (sym->flags & def_flags) {
|
||||
conf_warning("trying to reassign symbol %s", sym->name);
|
||||
break;
|
||||
conf_warning("override: reassigning to symbol %s", sym->name);
|
||||
}
|
||||
switch (sym->type) {
|
||||
case S_BOOLEAN:
|
||||
@@ -260,7 +266,7 @@ load:
|
||||
if (def == S_DEF_USER) {
|
||||
sym = sym_find(line);
|
||||
if (!sym) {
|
||||
conf_warning("trying to assign nonexistent symbol %s", line);
|
||||
sym_add_change_count(1);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -269,8 +275,7 @@ load:
|
||||
sym->type = S_OTHER;
|
||||
}
|
||||
if (sym->flags & def_flags) {
|
||||
conf_warning("trying to reassign symbol %s", sym->name);
|
||||
break;
|
||||
conf_warning("override: reassigning to symbol %s", sym->name);
|
||||
}
|
||||
if (conf_set_sym_val(sym, def, def_flags, p))
|
||||
continue;
|
||||
@@ -294,14 +299,12 @@ load:
|
||||
}
|
||||
break;
|
||||
case yes:
|
||||
if (cs->def[def].tri != no) {
|
||||
conf_warning("%s creates inconsistent choice state", sym->name);
|
||||
cs->flags &= ~def_flags;
|
||||
} else
|
||||
cs->def[def].val = sym;
|
||||
if (cs->def[def].tri != no)
|
||||
conf_warning("override: %s changes choice state", sym->name);
|
||||
cs->def[def].val = sym;
|
||||
break;
|
||||
}
|
||||
cs->def[def].tri = E_OR(cs->def[def].tri, sym->def[def].tri);
|
||||
cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
|
||||
}
|
||||
}
|
||||
fclose(in);
|
||||
@@ -313,7 +316,7 @@ load:
|
||||
|
||||
int conf_read(const char *name)
|
||||
{
|
||||
struct symbol *sym;
|
||||
struct symbol *sym, *choice_sym;
|
||||
struct property *prop;
|
||||
struct expr *e;
|
||||
int i, flags;
|
||||
@@ -354,9 +357,9 @@ int conf_read(const char *name)
|
||||
*/
|
||||
prop = sym_get_choice_prop(sym);
|
||||
flags = sym->flags;
|
||||
for (e = prop->expr; e; e = e->left.expr)
|
||||
if (e->right.sym->visible != no)
|
||||
flags &= e->right.sym->flags;
|
||||
expr_list_for_each_sym(prop->expr, e, choice_sym)
|
||||
if (choice_sym->visible != no)
|
||||
flags &= choice_sym->flags;
|
||||
sym->flags &= flags | ~SYMBOL_DEF_USER;
|
||||
}
|
||||
|
||||
@@ -554,15 +557,15 @@ int conf_write(const char *name)
|
||||
|
||||
int conf_split_config(void)
|
||||
{
|
||||
char *name, path[128], *opwd, *dir, *_name;
|
||||
const char *name;
|
||||
char path[128];
|
||||
char *opwd, *dir, *_name;
|
||||
char *s, *d, c;
|
||||
struct symbol *sym;
|
||||
struct stat sb;
|
||||
int res, i, fd;
|
||||
|
||||
name = getenv("KCONFIG_AUTOCONFIG");
|
||||
if (!name)
|
||||
name = "include/config/auto.conf";
|
||||
name = conf_get_autoconfig_name();
|
||||
conf_read_simple(name, S_DEF_AUTO);
|
||||
|
||||
opwd = malloc(256);
|
||||
@@ -683,7 +686,7 @@ int conf_write_autoconf(void)
|
||||
{
|
||||
struct symbol *sym;
|
||||
const char *str;
|
||||
char *name;
|
||||
const char *name;
|
||||
FILE *out, *out_h;
|
||||
time_t now;
|
||||
int i, l;
|
||||
@@ -783,9 +786,7 @@ int conf_write_autoconf(void)
|
||||
name = "include/linux/autoconf.h";
|
||||
if (rename(".tmpconfig.h", name))
|
||||
return 1;
|
||||
name = getenv("KCONFIG_AUTOCONFIG");
|
||||
if (!name)
|
||||
name = "include/config/auto.conf";
|
||||
name = conf_get_autoconfig_name();
|
||||
/*
|
||||
* This must be the last step, kbuild has a dependency on auto.conf
|
||||
* and this marks the successful completion of the previous steps.
|
||||
@@ -822,3 +823,93 @@ void conf_set_changed_callback(void (*fn)(void))
|
||||
{
|
||||
conf_changed_callback = fn;
|
||||
}
|
||||
|
||||
|
||||
void conf_set_all_new_symbols(enum conf_def_mode mode)
|
||||
{
|
||||
struct symbol *sym, *csym;
|
||||
struct property *prop;
|
||||
struct expr *e;
|
||||
int i, cnt, def;
|
||||
|
||||
for_all_symbols(i, sym) {
|
||||
if (sym_has_value(sym))
|
||||
continue;
|
||||
switch (sym_get_type(sym)) {
|
||||
case S_BOOLEAN:
|
||||
case S_TRISTATE:
|
||||
switch (mode) {
|
||||
case def_yes:
|
||||
sym->def[S_DEF_USER].tri = yes;
|
||||
break;
|
||||
case def_mod:
|
||||
sym->def[S_DEF_USER].tri = mod;
|
||||
break;
|
||||
case def_no:
|
||||
sym->def[S_DEF_USER].tri = no;
|
||||
break;
|
||||
case def_random:
|
||||
sym->def[S_DEF_USER].tri = (tristate)(rand() % 3);
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
if (!(sym_is_choice(sym) && mode == def_random))
|
||||
sym->flags |= SYMBOL_DEF_USER;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
sym_clear_all_valid();
|
||||
|
||||
if (mode != def_random)
|
||||
return;
|
||||
/*
|
||||
* We have different type of choice blocks.
|
||||
* If curr.tri equal to mod then we can select several
|
||||
* choice symbols in one block.
|
||||
* In this case we do nothing.
|
||||
* If curr.tri equal yes then only one symbol can be
|
||||
* selected in a choice block and we set it to yes,
|
||||
* and the rest to no.
|
||||
*/
|
||||
for_all_symbols(i, csym) {
|
||||
if (sym_has_value(csym) || !sym_is_choice(csym))
|
||||
continue;
|
||||
|
||||
sym_calc_value(csym);
|
||||
|
||||
if (csym->curr.tri != yes)
|
||||
continue;
|
||||
|
||||
prop = sym_get_choice_prop(csym);
|
||||
|
||||
/* count entries in choice block */
|
||||
cnt = 0;
|
||||
expr_list_for_each_sym(prop->expr, e, sym)
|
||||
cnt++;
|
||||
|
||||
/*
|
||||
* find a random value and set it to yes,
|
||||
* set the rest to no so we have only one set
|
||||
*/
|
||||
def = (rand() % cnt);
|
||||
|
||||
cnt = 0;
|
||||
expr_list_for_each_sym(prop->expr, e, sym) {
|
||||
if (def == cnt++) {
|
||||
sym->def[S_DEF_USER].tri = yes;
|
||||
csym->def[S_DEF_USER].val = sym;
|
||||
}
|
||||
else {
|
||||
sym->def[S_DEF_USER].tri = no;
|
||||
}
|
||||
}
|
||||
csym->flags |= SYMBOL_DEF_USER;
|
||||
/* clear VALID to get value calculated */
|
||||
csym->flags &= ~(SYMBOL_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ struct expr *expr_copy(struct expr *org)
|
||||
break;
|
||||
case E_AND:
|
||||
case E_OR:
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
e->left.expr = expr_copy(org->left.expr);
|
||||
e->right.expr = expr_copy(org->right.expr);
|
||||
break;
|
||||
@@ -217,7 +217,7 @@ int expr_eq(struct expr *e1, struct expr *e2)
|
||||
expr_free(e2);
|
||||
trans_count = old_count;
|
||||
return res;
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
case E_RANGE:
|
||||
case E_NONE:
|
||||
/* panic */;
|
||||
@@ -648,7 +648,7 @@ struct expr *expr_transform(struct expr *e)
|
||||
case E_EQUAL:
|
||||
case E_UNEQUAL:
|
||||
case E_SYMBOL:
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
break;
|
||||
default:
|
||||
e->left.expr = expr_transform(e->left.expr);
|
||||
@@ -932,7 +932,7 @@ struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symb
|
||||
break;
|
||||
case E_SYMBOL:
|
||||
return expr_alloc_comp(type, e->left.sym, sym);
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
case E_RANGE:
|
||||
case E_NONE:
|
||||
/* panic */;
|
||||
@@ -955,14 +955,14 @@ tristate expr_calc_value(struct expr *e)
|
||||
case E_AND:
|
||||
val1 = expr_calc_value(e->left.expr);
|
||||
val2 = expr_calc_value(e->right.expr);
|
||||
return E_AND(val1, val2);
|
||||
return EXPR_AND(val1, val2);
|
||||
case E_OR:
|
||||
val1 = expr_calc_value(e->left.expr);
|
||||
val2 = expr_calc_value(e->right.expr);
|
||||
return E_OR(val1, val2);
|
||||
return EXPR_OR(val1, val2);
|
||||
case E_NOT:
|
||||
val1 = expr_calc_value(e->left.expr);
|
||||
return E_NOT(val1);
|
||||
return EXPR_NOT(val1);
|
||||
case E_EQUAL:
|
||||
sym_calc_value(e->left.sym);
|
||||
sym_calc_value(e->right.sym);
|
||||
@@ -1000,9 +1000,9 @@ int expr_compare_type(enum expr_type t1, enum expr_type t2)
|
||||
if (t2 == E_OR)
|
||||
return 1;
|
||||
case E_OR:
|
||||
if (t2 == E_CHOICE)
|
||||
if (t2 == E_LIST)
|
||||
return 1;
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
if (t2 == 0)
|
||||
return 1;
|
||||
default:
|
||||
@@ -1034,12 +1034,18 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
|
||||
expr_print(e->left.expr, fn, data, E_NOT);
|
||||
break;
|
||||
case E_EQUAL:
|
||||
fn(data, e->left.sym, e->left.sym->name);
|
||||
if (e->left.sym->name)
|
||||
fn(data, e->left.sym, e->left.sym->name);
|
||||
else
|
||||
fn(data, NULL, "<choice>");
|
||||
fn(data, NULL, "=");
|
||||
fn(data, e->right.sym, e->right.sym->name);
|
||||
break;
|
||||
case E_UNEQUAL:
|
||||
fn(data, e->left.sym, e->left.sym->name);
|
||||
if (e->left.sym->name)
|
||||
fn(data, e->left.sym, e->left.sym->name);
|
||||
else
|
||||
fn(data, NULL, "<choice>");
|
||||
fn(data, NULL, "!=");
|
||||
fn(data, e->right.sym, e->right.sym->name);
|
||||
break;
|
||||
@@ -1053,11 +1059,11 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
|
||||
fn(data, NULL, " && ");
|
||||
expr_print(e->right.expr, fn, data, E_AND);
|
||||
break;
|
||||
case E_CHOICE:
|
||||
case E_LIST:
|
||||
fn(data, e->right.sym, e->right.sym->name);
|
||||
if (e->left.expr) {
|
||||
fn(data, NULL, " ^ ");
|
||||
expr_print(e->left.expr, fn, data, E_CHOICE);
|
||||
expr_print(e->left.expr, fn, data, E_LIST);
|
||||
}
|
||||
break;
|
||||
case E_RANGE:
|
||||
|
||||
@@ -25,14 +25,13 @@ struct file {
|
||||
|
||||
#define FILE_BUSY 0x0001
|
||||
#define FILE_SCANNED 0x0002
|
||||
#define FILE_PRINTED 0x0004
|
||||
|
||||
typedef enum tristate {
|
||||
no, mod, yes
|
||||
} tristate;
|
||||
|
||||
enum expr_type {
|
||||
E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_CHOICE, E_SYMBOL, E_RANGE
|
||||
E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
|
||||
};
|
||||
|
||||
union expr_data {
|
||||
@@ -45,9 +44,12 @@ struct expr {
|
||||
union expr_data left, right;
|
||||
};
|
||||
|
||||
#define E_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
|
||||
#define E_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
|
||||
#define E_NOT(dep) (2-(dep))
|
||||
#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
|
||||
#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
|
||||
#define EXPR_NOT(dep) (2-(dep))
|
||||
|
||||
#define expr_list_for_each_sym(l, e, s) \
|
||||
for (e = (l); e && (s = e->right.sym); e = e->left.expr)
|
||||
|
||||
struct expr_value {
|
||||
struct expr *expr;
|
||||
@@ -63,9 +65,13 @@ enum symbol_type {
|
||||
S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
|
||||
};
|
||||
|
||||
/* enum values are used as index to symbol.def[] */
|
||||
enum {
|
||||
S_DEF_USER, /* main user value */
|
||||
S_DEF_AUTO
|
||||
S_DEF_AUTO, /* values read from auto.conf */
|
||||
S_DEF_DEF3, /* Reserved for UI usage */
|
||||
S_DEF_DEF4, /* Reserved for UI usage */
|
||||
S_DEF_COUNT
|
||||
};
|
||||
|
||||
struct symbol {
|
||||
@@ -73,7 +79,7 @@ struct symbol {
|
||||
char *name;
|
||||
enum symbol_type type;
|
||||
struct symbol_value curr;
|
||||
struct symbol_value def[4];
|
||||
struct symbol_value def[S_DEF_COUNT];
|
||||
tristate visible;
|
||||
int flags;
|
||||
struct property *prop;
|
||||
@@ -82,42 +88,64 @@ struct symbol {
|
||||
|
||||
#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
|
||||
|
||||
#define SYMBOL_CONST 0x0001
|
||||
#define SYMBOL_CHECK 0x0008
|
||||
#define SYMBOL_CHOICE 0x0010
|
||||
#define SYMBOL_CHOICEVAL 0x0020
|
||||
#define SYMBOL_PRINTED 0x0040
|
||||
#define SYMBOL_VALID 0x0080
|
||||
#define SYMBOL_OPTIONAL 0x0100
|
||||
#define SYMBOL_WRITE 0x0200
|
||||
#define SYMBOL_CHANGED 0x0400
|
||||
#define SYMBOL_AUTO 0x1000
|
||||
#define SYMBOL_CHECKED 0x2000
|
||||
#define SYMBOL_WARNED 0x8000
|
||||
#define SYMBOL_DEF 0x10000
|
||||
#define SYMBOL_DEF_USER 0x10000
|
||||
#define SYMBOL_DEF_AUTO 0x20000
|
||||
#define SYMBOL_DEF3 0x40000
|
||||
#define SYMBOL_DEF4 0x80000
|
||||
#define SYMBOL_CONST 0x0001 /* symbol is const */
|
||||
#define SYMBOL_CHECK 0x0008 /* used during dependency checking */
|
||||
#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
|
||||
#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
|
||||
#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
|
||||
#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
|
||||
#define SYMBOL_WRITE 0x0200 /* ? */
|
||||
#define SYMBOL_CHANGED 0x0400 /* ? */
|
||||
#define SYMBOL_AUTO 0x1000 /* value from environment variable */
|
||||
#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
|
||||
#define SYMBOL_WARNED 0x8000 /* warning has been issued */
|
||||
|
||||
/* Set when symbol.def[] is used */
|
||||
#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */
|
||||
#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */
|
||||
#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */
|
||||
#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
|
||||
#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
|
||||
|
||||
#define SYMBOL_MAXLENGTH 256
|
||||
#define SYMBOL_HASHSIZE 257
|
||||
#define SYMBOL_HASHMASK 0xff
|
||||
|
||||
/* A property represent the config options that can be associated
|
||||
* with a config "symbol".
|
||||
* Sample:
|
||||
* config FOO
|
||||
* default y
|
||||
* prompt "foo prompt"
|
||||
* select BAR
|
||||
* config BAZ
|
||||
* int "BAZ Value"
|
||||
* range 1..255
|
||||
*/
|
||||
enum prop_type {
|
||||
P_UNKNOWN, P_PROMPT, P_COMMENT, P_MENU, P_DEFAULT, P_CHOICE, P_SELECT, P_RANGE
|
||||
P_UNKNOWN,
|
||||
P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
|
||||
P_COMMENT, /* text associated with a comment */
|
||||
P_MENU, /* prompt associated with a menuconfig option */
|
||||
P_DEFAULT, /* default y */
|
||||
P_CHOICE, /* choice value */
|
||||
P_SELECT, /* select BAR */
|
||||
P_RANGE, /* range 7..100 (for a symbol) */
|
||||
P_ENV, /* value from environment variable */
|
||||
};
|
||||
|
||||
struct property {
|
||||
struct property *next;
|
||||
struct symbol *sym;
|
||||
enum prop_type type;
|
||||
const char *text;
|
||||
struct property *next; /* next property - null if last */
|
||||
struct symbol *sym; /* the symbol for which the property is associated */
|
||||
enum prop_type type; /* type of property */
|
||||
const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
|
||||
struct expr_value visible;
|
||||
struct expr *expr;
|
||||
struct menu *menu;
|
||||
struct file *file;
|
||||
int lineno;
|
||||
struct expr *expr; /* the optional conditional part of the property */
|
||||
struct menu *menu; /* the menu the property are associated with
|
||||
* valid for: P_SELECT, P_RANGE, P_CHOICE,
|
||||
* P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
|
||||
struct file *file; /* what file was this property defined */
|
||||
int lineno; /* what lineno was this property defined */
|
||||
};
|
||||
|
||||
#define for_all_properties(sym, st, tok) \
|
||||
|
||||
@@ -119,8 +119,6 @@ const char *dbg_print_flags(int val)
|
||||
strcat(buf, "choice/");
|
||||
if (val & SYMBOL_CHOICEVAL)
|
||||
strcat(buf, "choiceval/");
|
||||
if (val & SYMBOL_PRINTED)
|
||||
strcat(buf, "printed/");
|
||||
if (val & SYMBOL_VALID)
|
||||
strcat(buf, "valid/");
|
||||
if (val & SYMBOL_OPTIONAL)
|
||||
@@ -457,14 +455,18 @@ static void text_insert_help(struct menu *menu)
|
||||
{
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter start, end;
|
||||
const char *prompt = menu_get_prompt(menu);
|
||||
const char *prompt = _(menu_get_prompt(menu));
|
||||
gchar *name;
|
||||
const char *help;
|
||||
|
||||
help = _(menu_get_help(menu));
|
||||
help = menu_get_help(menu);
|
||||
|
||||
/* Gettextize if the help text not empty */
|
||||
if ((help != 0) && (help[0] != 0))
|
||||
help = _(help);
|
||||
|
||||
if (menu->sym && menu->sym->name)
|
||||
name = g_strdup_printf(_(menu->sym->name));
|
||||
name = g_strdup_printf(menu->sym->name);
|
||||
else
|
||||
name = g_strdup("");
|
||||
|
||||
@@ -1171,7 +1173,7 @@ static gchar **fill_row(struct menu *menu)
|
||||
bzero(row, sizeof(row));
|
||||
|
||||
row[COL_OPTION] =
|
||||
g_strdup_printf("%s %s", menu_get_prompt(menu),
|
||||
g_strdup_printf("%s %s", _(menu_get_prompt(menu)),
|
||||
sym && sym_has_value(sym) ? "(NEW)" : "");
|
||||
|
||||
if (show_all && !menu_is_visible(menu))
|
||||
@@ -1221,7 +1223,7 @@ static gchar **fill_row(struct menu *menu)
|
||||
|
||||
if (def_menu)
|
||||
row[COL_VALUE] =
|
||||
g_strdup(menu_get_prompt(def_menu));
|
||||
g_strdup(_(menu_get_prompt(def_menu)));
|
||||
}
|
||||
if (sym->flags & SYMBOL_CHOICEVAL)
|
||||
row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
|
||||
|
||||
@@ -24,7 +24,7 @@ visible if its parent entry is also visible.
|
||||
Menu entries
|
||||
------------
|
||||
|
||||
Most entries define a config option, all other entries help to organize
|
||||
Most entries define a config option; all other entries help to organize
|
||||
them. A single configuration option is defined like this:
|
||||
|
||||
config MODVERSIONS
|
||||
@@ -50,7 +50,7 @@ applicable everywhere (see syntax).
|
||||
|
||||
- type definition: "bool"/"tristate"/"string"/"hex"/"int"
|
||||
Every config option must have a type. There are only two basic types:
|
||||
tristate and string, the other types are based on these two. The type
|
||||
tristate and string; the other types are based on these two. The type
|
||||
definition optionally accepts an input prompt, so these two examples
|
||||
are equivalent:
|
||||
|
||||
@@ -104,14 +104,15 @@ applicable everywhere (see syntax).
|
||||
Reverse dependencies can only be used with boolean or tristate
|
||||
symbols.
|
||||
Note:
|
||||
select is evil.... select will by brute force set a symbol
|
||||
equal to 'y' without visiting the dependencies. So abusing
|
||||
select you are able to select a symbol FOO even if FOO depends
|
||||
on BAR that is not set. In general use select only for
|
||||
non-visible symbols (no promts anywhere) and for symbols with
|
||||
no dependencies. That will limit the usefulness but on the
|
||||
other hand avoid the illegal configurations all over. kconfig
|
||||
should one day warn about such things.
|
||||
select should be used with care. select will force
|
||||
a symbol to a value without visiting the dependencies.
|
||||
By abusing select you are able to select a symbol FOO even
|
||||
if FOO depends on BAR that is not set.
|
||||
In general use select only for non-visible symbols
|
||||
(no prompts anywhere) and for symbols with no dependencies.
|
||||
That will limit the usefulness but on the other hand avoid
|
||||
the illegal configurations all over.
|
||||
kconfig should one day warn about such things.
|
||||
|
||||
- numerical ranges: "range" <symbol> <symbol> ["if" <expr>]
|
||||
This allows to limit the range of possible input values for int
|
||||
@@ -127,6 +128,27 @@ applicable everywhere (see syntax).
|
||||
used to help visually separate configuration logic from help within
|
||||
the file as an aid to developers.
|
||||
|
||||
- misc options: "option" <symbol>[=<value>]
|
||||
Various less common options can be defined via this option syntax,
|
||||
which can modify the behaviour of the menu entry and its config
|
||||
symbol. These options are currently possible:
|
||||
|
||||
- "defconfig_list"
|
||||
This declares a list of default entries which can be used when
|
||||
looking for the default configuration (which is used when the main
|
||||
.config doesn't exists yet.)
|
||||
|
||||
- "modules"
|
||||
This declares the symbol to be used as the MODULES symbol, which
|
||||
enables the third modular state for all config symbols.
|
||||
|
||||
- "env"=<value>
|
||||
This imports the environment variable into Kconfig. It behaves like
|
||||
a default, except that the value comes from the environment, this
|
||||
also means that the behaviour when mixing it with normal defaults is
|
||||
undefined at this point. The symbol is currently not exported back
|
||||
to the build environment (if this is desired, it can be done via
|
||||
another symbol).
|
||||
|
||||
Menu dependencies
|
||||
-----------------
|
||||
@@ -162,9 +184,9 @@ An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
|
||||
respectively for calculations). A menu entry becomes visible when it's
|
||||
expression evaluates to 'm' or 'y'.
|
||||
|
||||
There are two types of symbols: constant and nonconstant symbols.
|
||||
Nonconstant symbols are the most common ones and are defined with the
|
||||
'config' statement. Nonconstant symbols consist entirely of alphanumeric
|
||||
There are two types of symbols: constant and non-constant symbols.
|
||||
Non-constant symbols are the most common ones and are defined with the
|
||||
'config' statement. Non-constant symbols consist entirely of alphanumeric
|
||||
characters or underscores.
|
||||
Constant symbols are only part of expressions. Constant symbols are
|
||||
always surrounded by single or double quotes. Within the quote, any
|
||||
@@ -301,3 +323,57 @@ mainmenu:
|
||||
|
||||
This sets the config program's title bar if the config program chooses
|
||||
to use it.
|
||||
|
||||
|
||||
Kconfig hints
|
||||
-------------
|
||||
This is a collection of Kconfig tips, most of which aren't obvious at
|
||||
first glance and most of which have become idioms in several Kconfig
|
||||
files.
|
||||
|
||||
Adding common features and make the usage configurable
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
It is a common idiom to implement a feature/functionality that are
|
||||
relevant for some architectures but not all.
|
||||
The recommended way to do so is to use a config variable named HAVE_*
|
||||
that is defined in a common Kconfig file and selected by the relevant
|
||||
architectures.
|
||||
An example is the generic IOMAP functionality.
|
||||
|
||||
We would in lib/Kconfig see:
|
||||
|
||||
# Generic IOMAP is used to ...
|
||||
config HAVE_GENERIC_IOMAP
|
||||
|
||||
config GENERIC_IOMAP
|
||||
depends on HAVE_GENERIC_IOMAP && FOO
|
||||
|
||||
And in lib/Makefile we would see:
|
||||
obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
|
||||
|
||||
For each architecture using the generic IOMAP functionality we would see:
|
||||
|
||||
config X86
|
||||
select ...
|
||||
select HAVE_GENERIC_IOMAP
|
||||
select ...
|
||||
|
||||
Note: we use the existing config option and avoid creating a new
|
||||
config variable to select HAVE_GENERIC_IOMAP.
|
||||
|
||||
Note: the use of the internal config variable HAVE_GENERIC_IOMAP, it is
|
||||
introduced to overcome the limitation of select which will force a
|
||||
config option to 'y' no matter the dependencies.
|
||||
The dependencies are moved to the symbol GENERIC_IOMAP and we avoid the
|
||||
situation where select forces a symbol equals to 'y'.
|
||||
|
||||
Build as module only
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
To restrict a component build to module-only, qualify its config symbol
|
||||
with "depends on m". E.g.:
|
||||
|
||||
config FOO
|
||||
depends on BAR && m
|
||||
|
||||
limits FOO to module (=m) or disabled (=n).
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,10 @@ static char *escape(const char* text, char *bf, int len)
|
||||
++text;
|
||||
goto next;
|
||||
}
|
||||
else if (*text == '\\') {
|
||||
*bfp++ = '\\';
|
||||
len--;
|
||||
}
|
||||
*bfp++ = *text++;
|
||||
next:
|
||||
--len;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define FLEX_SCANNER
|
||||
#define YY_FLEX_MAJOR_VERSION 2
|
||||
#define YY_FLEX_MINOR_VERSION 5
|
||||
#define YY_FLEX_SUBMINOR_VERSION 33
|
||||
#define YY_FLEX_SUBMINOR_VERSION 35
|
||||
#if YY_FLEX_SUBMINOR_VERSION > 0
|
||||
#define FLEX_BETA
|
||||
#endif
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
|
||||
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
||||
* if you want the limit (max/min) macros for int types.
|
||||
@@ -72,7 +72,6 @@ typedef int flex_int32_t;
|
||||
typedef unsigned char flex_uint8_t;
|
||||
typedef unsigned short int flex_uint16_t;
|
||||
typedef unsigned int flex_uint32_t;
|
||||
#endif /* ! C99 */
|
||||
|
||||
/* Limits of integral types. */
|
||||
#ifndef INT8_MIN
|
||||
@@ -103,6 +102,8 @@ typedef unsigned int flex_uint32_t;
|
||||
#define UINT32_MAX (4294967295U)
|
||||
#endif
|
||||
|
||||
#endif /* ! C99 */
|
||||
|
||||
#endif /* ! FLEXINT_H */
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -112,11 +113,12 @@ typedef unsigned int flex_uint32_t;
|
||||
|
||||
#else /* ! __cplusplus */
|
||||
|
||||
#if __STDC__
|
||||
/* C99 requires __STDC__ to be defined as 1. */
|
||||
#if defined (__STDC__)
|
||||
|
||||
#define YY_USE_CONST
|
||||
|
||||
#endif /* __STDC__ */
|
||||
#endif /* defined (__STDC__) */
|
||||
#endif /* ! __cplusplus */
|
||||
|
||||
#ifdef YY_USE_CONST
|
||||
@@ -196,14 +198,9 @@ extern FILE *zconfin, *zconfout;
|
||||
|
||||
#define unput(c) yyunput( c, (yytext_ptr) )
|
||||
|
||||
/* The following is because we cannot portably get our hands on size_t
|
||||
* (without autoconf's help, which isn't available because we want
|
||||
* flex-generated scanners to compile on their own).
|
||||
*/
|
||||
|
||||
#ifndef YY_TYPEDEF_YY_SIZE_T
|
||||
#define YY_TYPEDEF_YY_SIZE_T
|
||||
typedef unsigned int yy_size_t;
|
||||
typedef size_t yy_size_t;
|
||||
#endif
|
||||
|
||||
#ifndef YY_STRUCT_YY_BUFFER_STATE
|
||||
@@ -767,6 +764,7 @@ int zconf_flex_debug = 0;
|
||||
#define YY_MORE_ADJ 0
|
||||
#define YY_RESTORE_YY_MORE_OFFSET
|
||||
char *zconftext;
|
||||
#define YY_NO_INPUT 1
|
||||
|
||||
/*
|
||||
* Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
|
||||
@@ -815,12 +813,6 @@ void new_string(void)
|
||||
void append_string(const char *str, int size)
|
||||
{
|
||||
int new_size = text_size + size + 1;
|
||||
|
||||
if ((YY_START == 2 /* HELP */) && (size > 70)) {
|
||||
fprintf (stderr, "%s:%d warning: Overlong line\n",
|
||||
current_file->name, current_file->lineno);
|
||||
}
|
||||
|
||||
if (new_size > text_asize) {
|
||||
new_size += START_STRSIZE - 1;
|
||||
new_size &= -START_STRSIZE;
|
||||
@@ -859,6 +851,35 @@ void alloc_string(const char *str, int size)
|
||||
|
||||
static int yy_init_globals (void );
|
||||
|
||||
/* Accessor methods to globals.
|
||||
These are made visible to non-reentrant scanners for convenience. */
|
||||
|
||||
int zconflex_destroy (void );
|
||||
|
||||
int zconfget_debug (void );
|
||||
|
||||
void zconfset_debug (int debug_flag );
|
||||
|
||||
YY_EXTRA_TYPE zconfget_extra (void );
|
||||
|
||||
void zconfset_extra (YY_EXTRA_TYPE user_defined );
|
||||
|
||||
FILE *zconfget_in (void );
|
||||
|
||||
void zconfset_in (FILE * in_str );
|
||||
|
||||
FILE *zconfget_out (void );
|
||||
|
||||
void zconfset_out (FILE * out_str );
|
||||
|
||||
int zconfget_leng (void );
|
||||
|
||||
char *zconfget_text (void );
|
||||
|
||||
int zconfget_lineno (void );
|
||||
|
||||
void zconfset_lineno (int line_number );
|
||||
|
||||
/* Macros after this point can all be overridden by user definitions in
|
||||
* section 1.
|
||||
*/
|
||||
@@ -901,7 +922,7 @@ static int input (void );
|
||||
/* This used to be an fputs(), but since the string might contain NUL's,
|
||||
* we now use fwrite().
|
||||
*/
|
||||
#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
|
||||
#define ECHO fwrite( zconftext, zconfleng, 1, zconfout )
|
||||
#endif
|
||||
|
||||
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
|
||||
@@ -1281,6 +1302,11 @@ YY_RULE_SETUP
|
||||
case 32:
|
||||
YY_RULE_SETUP
|
||||
{
|
||||
while (zconfleng) {
|
||||
if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
|
||||
break;
|
||||
zconfleng--;
|
||||
}
|
||||
append_string(zconftext, zconfleng);
|
||||
if (!first_ts)
|
||||
first_ts = last_ts;
|
||||
@@ -1536,7 +1562,7 @@ static int yy_get_next_buffer (void)
|
||||
|
||||
/* Read in more data. */
|
||||
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
|
||||
(yy_n_chars), num_to_read );
|
||||
(yy_n_chars), (size_t) num_to_read );
|
||||
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
|
||||
}
|
||||
@@ -1560,6 +1586,14 @@ static int yy_get_next_buffer (void)
|
||||
else
|
||||
ret_val = EOB_ACT_CONTINUE_SCAN;
|
||||
|
||||
if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
|
||||
/* Extend the array by 50%, plus the number we really need. */
|
||||
yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
|
||||
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
|
||||
}
|
||||
|
||||
(yy_n_chars) += number_to_move;
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
|
||||
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
|
||||
@@ -1946,7 +1980,9 @@ static void zconfensure_buffer_stack (void)
|
||||
(yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
|
||||
(num_to_alloc * sizeof(struct yy_buffer_state*)
|
||||
);
|
||||
|
||||
if ( ! (yy_buffer_stack) )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
|
||||
|
||||
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
|
||||
|
||||
(yy_buffer_stack_max) = num_to_alloc;
|
||||
@@ -1964,6 +2000,8 @@ static void zconfensure_buffer_stack (void)
|
||||
((yy_buffer_stack),
|
||||
num_to_alloc * sizeof(struct yy_buffer_state*)
|
||||
);
|
||||
if ( ! (yy_buffer_stack) )
|
||||
YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
|
||||
|
||||
/* zero only the new slots.*/
|
||||
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
|
||||
@@ -2008,7 +2046,7 @@ YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
|
||||
|
||||
/** Setup the input buffer state to scan a string. The next call to zconflex() will
|
||||
* scan from a @e copy of @a str.
|
||||
* @param str a NUL-terminated string to scan
|
||||
* @param yystr a NUL-terminated string to scan
|
||||
*
|
||||
* @return the newly allocated buffer state object.
|
||||
* @note If you want to scan bytes that may contain NUL values, then use
|
||||
@@ -2332,11 +2370,14 @@ void zconf_nextfile(const char *name)
|
||||
current_buf = buf;
|
||||
|
||||
if (file->flags & FILE_BUSY) {
|
||||
printf("recursive scan (%s)?\n", name);
|
||||
printf("%s:%d: do not source '%s' from itself\n",
|
||||
zconf_curname(), zconf_lineno(), name);
|
||||
exit(1);
|
||||
}
|
||||
if (file->flags & FILE_SCANNED) {
|
||||
printf("file %s already scanned?\n", name);
|
||||
printf("%s:%d: file '%s' is already sourced from '%s'\n",
|
||||
zconf_curname(), zconf_lineno(), name,
|
||||
file->parent->name);
|
||||
exit(1);
|
||||
}
|
||||
file->flags |= FILE_BUSY;
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
#ifndef KBUILD_NO_NLS
|
||||
# include <libintl.h>
|
||||
#else
|
||||
# define gettext(Msgid) ((const char *) (Msgid))
|
||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
||||
static inline const char *gettext(const char *txt) { return txt; }
|
||||
static inline void textdomain(const char *domainname) {}
|
||||
static inline void bindtextdomain(const char *name, const char *dir) {}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -42,8 +42,17 @@ extern "C" {
|
||||
#define TF_PARAM 0x0002
|
||||
#define TF_OPTION 0x0004
|
||||
|
||||
enum conf_def_mode {
|
||||
def_default,
|
||||
def_yes,
|
||||
def_mod,
|
||||
def_no,
|
||||
def_random
|
||||
};
|
||||
|
||||
#define T_OPT_MODULES 1
|
||||
#define T_OPT_DEFCONFIG_LIST 2
|
||||
#define T_OPT_ENV 3
|
||||
|
||||
struct kconf_id {
|
||||
int name;
|
||||
@@ -65,15 +74,18 @@ char *zconf_curname(void);
|
||||
|
||||
/* confdata.c */
|
||||
const char *conf_get_configname(void);
|
||||
const char *conf_get_autoconfig_name(void);
|
||||
char *conf_get_default_confname(void);
|
||||
void sym_set_change_count(int count);
|
||||
void sym_add_change_count(int count);
|
||||
void conf_set_all_new_symbols(enum conf_def_mode mode);
|
||||
|
||||
/* kconfig_load.c */
|
||||
void kconfig_load(void);
|
||||
|
||||
/* menu.c */
|
||||
void menu_init(void);
|
||||
void menu_warn(struct menu *menu, const char *fmt, ...);
|
||||
struct menu *menu_add_menu(void);
|
||||
void menu_end_menu(void);
|
||||
void menu_add_entry(struct symbol *sym);
|
||||
@@ -103,6 +115,8 @@ void str_printf(struct gstr *gs, const char *fmt, ...);
|
||||
const char *str_get(struct gstr *gs);
|
||||
|
||||
/* symbol.c */
|
||||
extern struct expr *sym_env_list;
|
||||
|
||||
void sym_init(void);
|
||||
void sym_clear_all_valid(void);
|
||||
void sym_set_all_changed(void);
|
||||
@@ -110,6 +124,7 @@ void sym_set_changed(struct symbol *sym);
|
||||
struct symbol *sym_check_deps(struct symbol *sym);
|
||||
struct property *prop_alloc(enum prop_type type, struct symbol *sym);
|
||||
struct symbol *prop_get_symbol(struct property *prop);
|
||||
struct property *sym_get_env_prop(struct symbol *sym);
|
||||
|
||||
static inline tristate sym_get_tristate_value(struct symbol *sym)
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ P(menu_get_help,const char *,(struct menu *menu));
|
||||
/* symbol.c */
|
||||
P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
|
||||
|
||||
P(sym_lookup,struct symbol *,(const char *name, int isconst));
|
||||
P(sym_lookup,struct symbol *,(const char *name, int flags));
|
||||
P(sym_find,struct symbol *,(const char *name));
|
||||
P(sym_re_search,struct symbol **,(const char *pattern));
|
||||
P(sym_type_name,const char *,(enum symbol_type type));
|
||||
|
||||
@@ -36,19 +36,23 @@ trap "rm -f $tmp" 0 1 2 3 15
|
||||
|
||||
# Check if we can link to ncurses
|
||||
check() {
|
||||
echo "main() {}" | $cc -xc - -o $tmp 2> /dev/null
|
||||
$cc -xc - -o $tmp 2>/dev/null <<'EOF'
|
||||
#include CURSES_LOC
|
||||
main() {}
|
||||
EOF
|
||||
if [ $? != 0 ]; then
|
||||
echo " *** Unable to find the ncurses libraries." 1>&2
|
||||
echo " *** make menuconfig require the ncurses libraries" 1>&2
|
||||
echo " *** " 1>&2
|
||||
echo " *** Install ncurses (ncurses-devel) and try again" 1>&2
|
||||
echo " *** " 1>&2
|
||||
exit 1
|
||||
echo " *** Unable to find the ncurses libraries or the" 1>&2
|
||||
echo " *** required header files." 1>&2
|
||||
echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
|
||||
echo " *** " 1>&2
|
||||
echo " *** Install ncurses (ncurses-devel) and try again." 1>&2
|
||||
echo " *** " 1>&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
printf "Usage: $0 [-check compiler options|-header|-library]\n"
|
||||
printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
|
||||
@@ -41,7 +41,8 @@ static void print_item(WINDOW * win, int choice, int selected)
|
||||
wmove(win, choice, check_x);
|
||||
wattrset(win, selected ? dlg.check_selected.atr
|
||||
: dlg.check.atr);
|
||||
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
|
||||
if (!item_is_tag(':'))
|
||||
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
|
||||
|
||||
wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
|
||||
mvwaddch(win, choice, item_x, item_str()[0]);
|
||||
@@ -97,8 +98,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
|
||||
int x = width / 2 - 11;
|
||||
int y = height - 2;
|
||||
|
||||
print_button(dialog, "Select", y, x, selected == 0);
|
||||
print_button(dialog, " Help ", y, x + 14, selected == 1);
|
||||
print_button(dialog, gettext("Select"), y, x, selected == 0);
|
||||
print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
|
||||
|
||||
wmove(dialog, y, x + 1 + 14 * selected);
|
||||
wrefresh(dialog);
|
||||
|
||||
@@ -26,6 +26,12 @@
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifndef KBUILD_NO_NLS
|
||||
# include <libintl.h>
|
||||
#else
|
||||
# define gettext(Msgid) ((const char *) (Msgid))
|
||||
#endif
|
||||
|
||||
#ifdef __sun__
|
||||
#define CURS_MACROS
|
||||
#endif
|
||||
@@ -187,10 +193,9 @@ int item_is_tag(char tag);
|
||||
int on_key_esc(WINDOW *win);
|
||||
int on_key_resize(void);
|
||||
|
||||
void init_dialog(const char *backtitle);
|
||||
int init_dialog(const char *backtitle);
|
||||
void set_dialog_backtitle(const char *backtitle);
|
||||
void reset_dialog(void);
|
||||
void end_dialog(void);
|
||||
void end_dialog(int x, int y);
|
||||
void attr_clear(WINDOW * win, int height, int width, chtype attr);
|
||||
void dialog_clear(void);
|
||||
void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
|
||||
|
||||
@@ -31,8 +31,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
|
||||
int x = width / 2 - 11;
|
||||
int y = height - 2;
|
||||
|
||||
print_button(dialog, " Ok ", y, x, selected == 0);
|
||||
print_button(dialog, " Help ", y, x + 14, selected == 1);
|
||||
print_button(dialog, gettext(" Ok "), y, x, selected == 0);
|
||||
print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
|
||||
|
||||
wmove(dialog, y, x + 1 + 14 * selected);
|
||||
wrefresh(dialog);
|
||||
@@ -89,7 +89,7 @@ do_resize:
|
||||
box_y = y + 2;
|
||||
box_x = (width - box_width) / 2;
|
||||
draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
|
||||
dlg.border.atr, dlg.dialog.atr);
|
||||
dlg.dialog.atr, dlg.border.atr);
|
||||
|
||||
print_buttons(dialog, height, width, 0);
|
||||
|
||||
|
||||
@@ -157,9 +157,9 @@ static void print_buttons(WINDOW * win, int height, int width, int selected)
|
||||
int x = width / 2 - 16;
|
||||
int y = height - 2;
|
||||
|
||||
print_button(win, "Select", y, x, selected == 0);
|
||||
print_button(win, " Exit ", y, x + 12, selected == 1);
|
||||
print_button(win, " Help ", y, x + 24, selected == 2);
|
||||
print_button(win, gettext("Select"), y, x, selected == 0);
|
||||
print_button(win, gettext(" Exit "), y, x + 12, selected == 1);
|
||||
print_button(win, gettext(" Help "), y, x + 24, selected == 2);
|
||||
|
||||
wmove(win, y, x + 1 + 12 * selected);
|
||||
wrefresh(win);
|
||||
|
||||
@@ -114,7 +114,7 @@ do_resize:
|
||||
|
||||
print_title(dialog, title, width);
|
||||
|
||||
print_button(dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
|
||||
print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE);
|
||||
wnoutrefresh(dialog);
|
||||
getyx(dialog, cur_y, cur_x); /* Save cursor position */
|
||||
|
||||
|
||||
@@ -266,10 +266,26 @@ void dialog_clear(void)
|
||||
/*
|
||||
* Do some initialization for dialog
|
||||
*/
|
||||
void init_dialog(const char *backtitle)
|
||||
int init_dialog(const char *backtitle)
|
||||
{
|
||||
int height, width;
|
||||
|
||||
initscr(); /* Init curses */
|
||||
getmaxyx(stdscr, height, width);
|
||||
if (height < 19 || width < 80) {
|
||||
endwin();
|
||||
return -ERRDISPLAYTOOSMALL;
|
||||
}
|
||||
|
||||
dlg.backtitle = backtitle;
|
||||
color_setup(getenv("MENUCONFIG_COLOR"));
|
||||
|
||||
keypad(stdscr, TRUE);
|
||||
cbreak();
|
||||
noecho();
|
||||
dialog_clear();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void set_dialog_backtitle(const char *backtitle)
|
||||
@@ -277,20 +293,14 @@ void set_dialog_backtitle(const char *backtitle)
|
||||
dlg.backtitle = backtitle;
|
||||
}
|
||||
|
||||
void reset_dialog(void)
|
||||
{
|
||||
initscr(); /* Init curses */
|
||||
keypad(stdscr, TRUE);
|
||||
cbreak();
|
||||
noecho();
|
||||
dialog_clear();
|
||||
}
|
||||
|
||||
/*
|
||||
* End using dialog functions.
|
||||
*/
|
||||
void end_dialog(void)
|
||||
void end_dialog(int x, int y)
|
||||
{
|
||||
/* move cursor back to original position */
|
||||
move(y, x);
|
||||
refresh();
|
||||
endwin();
|
||||
}
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ static void print_buttons(WINDOW * dialog, int height, int width, int selected)
|
||||
int x = width / 2 - 10;
|
||||
int y = height - 2;
|
||||
|
||||
print_button(dialog, " Yes ", y, x, selected == 0);
|
||||
print_button(dialog, " No ", y, x + 13, selected == 1);
|
||||
print_button(dialog, gettext(" Yes "), y, x, selected == 0);
|
||||
print_button(dialog, gettext(" No "), y, x + 13, selected == 1);
|
||||
|
||||
wmove(dialog, y, x + 1 + 13 * selected);
|
||||
wrefresh(dialog);
|
||||
|
||||
@@ -8,17 +8,13 @@
|
||||
* i18n, 2005, Arnaldo Carvalho de Melo <acme@conectiva.com.br>
|
||||
*/
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/wait.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <signal.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#include <locale.h>
|
||||
|
||||
@@ -274,8 +270,6 @@ search_help[] = N_(
|
||||
"\n");
|
||||
|
||||
static int indent;
|
||||
static struct termios ios_org;
|
||||
static int rows = 0, cols = 0;
|
||||
static struct menu *current_menu;
|
||||
static int child_count;
|
||||
static int single_menu_mode;
|
||||
@@ -289,51 +283,16 @@ static void show_textbox(const char *title, const char *text, int r, int c);
|
||||
static void show_helptext(const char *title, const char *text);
|
||||
static void show_help(struct menu *menu);
|
||||
|
||||
static void init_wsize(void)
|
||||
{
|
||||
struct winsize ws;
|
||||
char *env;
|
||||
|
||||
if (!ioctl(STDIN_FILENO, TIOCGWINSZ, &ws)) {
|
||||
rows = ws.ws_row;
|
||||
cols = ws.ws_col;
|
||||
}
|
||||
|
||||
if (!rows) {
|
||||
env = getenv("LINES");
|
||||
if (env)
|
||||
rows = atoi(env);
|
||||
if (!rows)
|
||||
rows = 24;
|
||||
}
|
||||
if (!cols) {
|
||||
env = getenv("COLUMNS");
|
||||
if (env)
|
||||
cols = atoi(env);
|
||||
if (!cols)
|
||||
cols = 80;
|
||||
}
|
||||
|
||||
if (rows < 19 || cols < 80) {
|
||||
fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
|
||||
fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
rows -= 4;
|
||||
cols -= 5;
|
||||
}
|
||||
|
||||
static void get_prompt_str(struct gstr *r, struct property *prop)
|
||||
{
|
||||
int i, j;
|
||||
struct menu *submenu[8], *menu;
|
||||
|
||||
str_printf(r, "Prompt: %s\n", prop->text);
|
||||
str_printf(r, " Defined at %s:%d\n", prop->menu->file->name,
|
||||
str_printf(r, _("Prompt: %s\n"), _(prop->text));
|
||||
str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
|
||||
prop->menu->lineno);
|
||||
if (!expr_is_yes(prop->visible.expr)) {
|
||||
str_append(r, " Depends on: ");
|
||||
str_append(r, _(" Depends on: "));
|
||||
expr_gstr_print(prop->visible.expr, r);
|
||||
str_append(r, "\n");
|
||||
}
|
||||
@@ -341,13 +300,13 @@ static void get_prompt_str(struct gstr *r, struct property *prop)
|
||||
for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent)
|
||||
submenu[i++] = menu;
|
||||
if (i > 0) {
|
||||
str_printf(r, " Location:\n");
|
||||
str_printf(r, _(" Location:\n"));
|
||||
for (j = 4; --i >= 0; j += 2) {
|
||||
menu = submenu[i];
|
||||
str_printf(r, "%*c-> %s", j, ' ', menu_get_prompt(menu));
|
||||
str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu)));
|
||||
if (menu->sym) {
|
||||
str_printf(r, " (%s [=%s])", menu->sym->name ?
|
||||
menu->sym->name : "<choice>",
|
||||
menu->sym->name : _("<choice>"),
|
||||
sym_get_string_value(menu->sym));
|
||||
}
|
||||
str_append(r, "\n");
|
||||
@@ -377,7 +336,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym)
|
||||
if (hit)
|
||||
str_append(r, "\n");
|
||||
if (sym->rev_dep.expr) {
|
||||
str_append(r, " Selected by: ");
|
||||
str_append(r, _(" Selected by: "));
|
||||
expr_gstr_print(sym->rev_dep.expr, r);
|
||||
str_append(r, "\n");
|
||||
}
|
||||
@@ -393,7 +352,7 @@ static struct gstr get_relations_str(struct symbol **sym_arr)
|
||||
for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
|
||||
get_symbol_str(&res, sym);
|
||||
if (!i)
|
||||
str_append(&res, "No matches found.\n");
|
||||
str_append(&res, _("No matches found.\n"));
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -473,6 +432,7 @@ static void build_conf(struct menu *menu)
|
||||
switch (prop->type) {
|
||||
case P_MENU:
|
||||
child_count++;
|
||||
prompt = _(prompt);
|
||||
if (single_menu_mode) {
|
||||
item_make("%s%*c%s",
|
||||
menu->data ? "-->" : "++>",
|
||||
@@ -488,7 +448,7 @@ static void build_conf(struct menu *menu)
|
||||
case P_COMMENT:
|
||||
if (prompt) {
|
||||
child_count++;
|
||||
item_make(" %*c*** %s ***", indent + 1, ' ', prompt);
|
||||
item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt));
|
||||
item_set_tag(':');
|
||||
item_set_data(menu);
|
||||
}
|
||||
@@ -496,7 +456,7 @@ static void build_conf(struct menu *menu)
|
||||
default:
|
||||
if (prompt) {
|
||||
child_count++;
|
||||
item_make("---%*c%s", indent + 1, ' ', prompt);
|
||||
item_make("---%*c%s", indent + 1, ' ', _(prompt));
|
||||
item_set_tag(':');
|
||||
item_set_data(menu);
|
||||
}
|
||||
@@ -540,10 +500,10 @@ static void build_conf(struct menu *menu)
|
||||
item_set_data(menu);
|
||||
}
|
||||
|
||||
item_add_str("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
|
||||
item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
|
||||
if (val == yes) {
|
||||
if (def_menu) {
|
||||
item_add_str(" (%s)", menu_get_prompt(def_menu));
|
||||
item_add_str(" (%s)", _(menu_get_prompt(def_menu)));
|
||||
item_add_str(" --->");
|
||||
if (def_menu->list) {
|
||||
indent += 2;
|
||||
@@ -555,7 +515,7 @@ static void build_conf(struct menu *menu)
|
||||
}
|
||||
} else {
|
||||
if (menu == current_menu) {
|
||||
item_make("---%*c%s", indent + 1, ' ', menu_get_prompt(menu));
|
||||
item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
|
||||
item_set_tag(':');
|
||||
item_set_data(menu);
|
||||
goto conf_childs;
|
||||
@@ -598,17 +558,17 @@ static void build_conf(struct menu *menu)
|
||||
tmp = indent - tmp + 4;
|
||||
if (tmp < 0)
|
||||
tmp = 0;
|
||||
item_add_str("%*c%s%s", tmp, ' ', menu_get_prompt(menu),
|
||||
item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)),
|
||||
(sym_has_value(sym) || !sym_is_changable(sym)) ?
|
||||
"" : " (NEW)");
|
||||
"" : _(" (NEW)"));
|
||||
item_set_tag('s');
|
||||
item_set_data(menu);
|
||||
goto conf_childs;
|
||||
}
|
||||
}
|
||||
item_add_str("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
|
||||
item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)),
|
||||
(sym_has_value(sym) || !sym_is_changable(sym)) ?
|
||||
"" : " (NEW)");
|
||||
"" : _(" (NEW)"));
|
||||
if (menu->prompt->type == P_MENU) {
|
||||
item_add_str(" --->");
|
||||
return;
|
||||
@@ -646,7 +606,7 @@ static void conf(struct menu *menu)
|
||||
item_set_tag('S');
|
||||
}
|
||||
dialog_clear();
|
||||
res = dialog_menu(prompt ? prompt : _("Main Menu"),
|
||||
res = dialog_menu(prompt ? _(prompt) : _("Main Menu"),
|
||||
_(menu_instructions),
|
||||
active_menu, &s_scroll);
|
||||
if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
|
||||
@@ -693,7 +653,7 @@ static void conf(struct menu *menu)
|
||||
if (sym)
|
||||
show_help(submenu);
|
||||
else
|
||||
show_helptext("README", _(mconf_readme));
|
||||
show_helptext(_("README"), _(mconf_readme));
|
||||
break;
|
||||
case 3:
|
||||
if (item_is_tag('t')) {
|
||||
@@ -743,7 +703,7 @@ static void show_help(struct menu *menu)
|
||||
if (menu_has_help(menu))
|
||||
{
|
||||
if (sym->name) {
|
||||
str_printf(&help, "%s:\n\n", sym->name);
|
||||
str_printf(&help, "CONFIG_%s:\n\n", sym->name);
|
||||
str_append(&help, _(menu_get_help(menu)));
|
||||
str_append(&help, "\n");
|
||||
}
|
||||
@@ -751,13 +711,13 @@ static void show_help(struct menu *menu)
|
||||
str_append(&help, nohelp_text);
|
||||
}
|
||||
get_symbol_str(&help, sym);
|
||||
show_helptext(menu_get_prompt(menu), str_get(&help));
|
||||
show_helptext(_(menu_get_prompt(menu)), str_get(&help));
|
||||
str_free(&help);
|
||||
}
|
||||
|
||||
static void conf_choice(struct menu *menu)
|
||||
{
|
||||
const char *prompt = menu_get_prompt(menu);
|
||||
const char *prompt = _(menu_get_prompt(menu));
|
||||
struct menu *child;
|
||||
struct symbol *active;
|
||||
|
||||
@@ -771,7 +731,12 @@ static void conf_choice(struct menu *menu)
|
||||
for (child = menu->list; child; child = child->next) {
|
||||
if (!menu_is_visible(child))
|
||||
continue;
|
||||
item_make("%s", menu_get_prompt(child));
|
||||
if (child->sym)
|
||||
item_make("%s", _(menu_get_prompt(child)));
|
||||
else {
|
||||
item_make("*** %s ***", _(menu_get_prompt(child)));
|
||||
item_set_tag(':');
|
||||
}
|
||||
item_set_data(child);
|
||||
if (child->sym == active)
|
||||
item_set_selected(1);
|
||||
@@ -779,7 +744,7 @@ static void conf_choice(struct menu *menu)
|
||||
item_set_tag('X');
|
||||
}
|
||||
dialog_clear();
|
||||
res = dialog_checklist(prompt ? prompt : _("Main Menu"),
|
||||
res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"),
|
||||
_(radiolist_instructions),
|
||||
15, 70, 6);
|
||||
selected = item_activate_selected();
|
||||
@@ -787,6 +752,9 @@ static void conf_choice(struct menu *menu)
|
||||
case 0:
|
||||
if (selected) {
|
||||
child = item_data();
|
||||
if (!child->sym)
|
||||
break;
|
||||
|
||||
sym_set_tristate_value(child->sym, yes);
|
||||
}
|
||||
return;
|
||||
@@ -812,7 +780,7 @@ static void conf_string(struct menu *menu)
|
||||
|
||||
while (1) {
|
||||
int res;
|
||||
char *heading;
|
||||
const char *heading;
|
||||
|
||||
switch (sym_get_type(menu->sym)) {
|
||||
case S_INT:
|
||||
@@ -825,10 +793,10 @@ static void conf_string(struct menu *menu)
|
||||
heading = _(inputbox_instructions_string);
|
||||
break;
|
||||
default:
|
||||
heading = "Internal mconf error!";
|
||||
heading = _("Internal mconf error!");
|
||||
}
|
||||
dialog_clear();
|
||||
res = dialog_inputbox(prompt ? prompt : _("Main Menu"),
|
||||
res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"),
|
||||
heading, 10, 75,
|
||||
sym_get_string_value(menu->sym));
|
||||
switch (res) {
|
||||
@@ -860,6 +828,7 @@ static void conf_load(void)
|
||||
return;
|
||||
if (!conf_read(dialog_input_result)) {
|
||||
set_config_filename(dialog_input_result);
|
||||
sym_set_change_count(1);
|
||||
return;
|
||||
}
|
||||
show_textbox(NULL, _("File does not exist!"), 5, 38);
|
||||
@@ -899,13 +868,9 @@ static void conf_save(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void conf_cleanup(void)
|
||||
{
|
||||
tcsetattr(1, TCSAFLUSH, &ios_org);
|
||||
}
|
||||
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
int saved_x, saved_y;
|
||||
char *mode;
|
||||
int res;
|
||||
|
||||
@@ -922,11 +887,13 @@ int main(int ac, char **av)
|
||||
single_menu_mode = 1;
|
||||
}
|
||||
|
||||
tcgetattr(1, &ios_org);
|
||||
atexit(conf_cleanup);
|
||||
init_wsize();
|
||||
reset_dialog();
|
||||
init_dialog(NULL);
|
||||
getyx(stdscr, saved_y, saved_x);
|
||||
if (init_dialog(NULL)) {
|
||||
fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
|
||||
fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
set_config_filename(conf_get_configname());
|
||||
do {
|
||||
conf(&rootmenu);
|
||||
@@ -940,7 +907,7 @@ int main(int ac, char **av)
|
||||
else
|
||||
res = -1;
|
||||
} while (res == KEY_ESC);
|
||||
end_dialog();
|
||||
end_dialog(saved_x, saved_y);
|
||||
|
||||
switch (res) {
|
||||
case 0:
|
||||
@@ -965,3 +932,4 @@ int main(int ac, char **av)
|
||||
|
||||
return conf_write_autoconf();
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ static struct menu **last_entry_ptr;
|
||||
struct file *file_list;
|
||||
struct file *current_file;
|
||||
|
||||
static void menu_warn(struct menu *menu, const char *fmt, ...)
|
||||
void menu_warn(struct menu *menu, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
@@ -172,6 +172,9 @@ void menu_add_option(int token, char *arg)
|
||||
else if (sym_defconfig_list != current_entry->sym)
|
||||
zconf_error("trying to redefine defconfig symbol");
|
||||
break;
|
||||
case T_OPT_ENV:
|
||||
prop_add_env(arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,12 +203,9 @@ void sym_check_prop(struct symbol *sym)
|
||||
prop_warn(prop,
|
||||
"config symbol '%s' uses select, but is "
|
||||
"not boolean or tristate", sym->name);
|
||||
else if (sym2->type == S_UNKNOWN)
|
||||
prop_warn(prop,
|
||||
"'select' used by config symbol '%s' "
|
||||
"refers to undefined symbol '%s'",
|
||||
sym->name, sym2->name);
|
||||
else if (sym2->type != S_BOOLEAN && sym2->type != S_TRISTATE)
|
||||
else if (sym2->type != S_UNKNOWN &&
|
||||
sym2->type != S_BOOLEAN &&
|
||||
sym2->type != S_TRISTATE)
|
||||
prop_warn(prop,
|
||||
"'%s' has wrong type. 'select' only "
|
||||
"accept arguments of boolean and "
|
||||
@@ -235,16 +235,22 @@ void menu_finalize(struct menu *parent)
|
||||
sym = parent->sym;
|
||||
if (parent->list) {
|
||||
if (sym && sym_is_choice(sym)) {
|
||||
/* find the first choice value and find out choice type */
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
if (menu->sym) {
|
||||
current_entry = parent;
|
||||
menu_set_type(menu->sym->type);
|
||||
current_entry = menu;
|
||||
menu_set_type(sym->type);
|
||||
break;
|
||||
if (sym->type == S_UNKNOWN) {
|
||||
/* find the first choice value to find out choice type */
|
||||
current_entry = parent;
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
if (menu->sym && menu->sym->type != S_UNKNOWN) {
|
||||
menu_set_type(menu->sym->type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* set the type of the remaining choice values */
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
current_entry = menu;
|
||||
if (menu->sym && menu->sym->type == S_UNKNOWN)
|
||||
menu_set_type(sym->type);
|
||||
}
|
||||
parentdep = expr_alloc_symbol(sym);
|
||||
} else if (parent->prompt)
|
||||
parentdep = parent->prompt->visible.expr;
|
||||
@@ -311,27 +317,43 @@ void menu_finalize(struct menu *parent)
|
||||
}
|
||||
}
|
||||
for (menu = parent->list; menu; menu = menu->next) {
|
||||
if (sym && sym_is_choice(sym) && menu->sym) {
|
||||
if (sym && sym_is_choice(sym) &&
|
||||
menu->sym && !sym_is_choice_value(menu->sym)) {
|
||||
current_entry = menu;
|
||||
menu->sym->flags |= SYMBOL_CHOICEVAL;
|
||||
if (!menu->prompt)
|
||||
menu_warn(menu, "choice value must have a prompt");
|
||||
for (prop = menu->sym->prop; prop; prop = prop->next) {
|
||||
if (prop->type == P_PROMPT && prop->menu != menu) {
|
||||
prop_warn(prop, "choice values "
|
||||
"currently only support a "
|
||||
"single prompt");
|
||||
}
|
||||
if (prop->type == P_DEFAULT)
|
||||
prop_warn(prop, "defaults for choice "
|
||||
"values not supported");
|
||||
"values not supported");
|
||||
if (prop->menu == menu)
|
||||
continue;
|
||||
if (prop->type == P_PROMPT &&
|
||||
prop->menu->parent->sym != sym)
|
||||
prop_warn(prop, "choice value used outside its choice group");
|
||||
}
|
||||
/* Non-tristate choice values of tristate choices must
|
||||
* depend on the choice being set to Y. The choice
|
||||
* values' dependencies were propagated to their
|
||||
* properties above, so the change here must be re-
|
||||
* propagated.
|
||||
*/
|
||||
if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {
|
||||
basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
|
||||
menu->dep = expr_alloc_and(basedep, menu->dep);
|
||||
for (prop = menu->sym->prop; prop; prop = prop->next) {
|
||||
if (prop->menu != menu)
|
||||
continue;
|
||||
prop->visible.expr = expr_alloc_and(expr_copy(basedep),
|
||||
prop->visible.expr);
|
||||
}
|
||||
}
|
||||
current_entry = menu;
|
||||
menu_set_type(sym->type);
|
||||
menu_add_symbol(P_CHOICE, sym, NULL);
|
||||
prop = sym_get_choice_prop(sym);
|
||||
for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
|
||||
;
|
||||
*ep = expr_alloc_one(E_CHOICE, NULL);
|
||||
*ep = expr_alloc_one(E_LIST, NULL);
|
||||
(*ep)->right.sym = menu->sym;
|
||||
}
|
||||
if (menu->list && (!menu->prompt || !menu->prompt->text)) {
|
||||
@@ -394,9 +416,9 @@ bool menu_is_visible(struct menu *menu)
|
||||
const char *menu_get_prompt(struct menu *menu)
|
||||
{
|
||||
if (menu->prompt)
|
||||
return _(menu->prompt->text);
|
||||
return menu->prompt->text;
|
||||
else if (menu->sym)
|
||||
return _(menu->sym->name);
|
||||
return menu->sym->name;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include <qapplication.h>
|
||||
#include <qmainwindow.h>
|
||||
#include <qdesktopwidget.h>
|
||||
#include <qtoolbar.h>
|
||||
#include <qlayout.h>
|
||||
#include <qvbox.h>
|
||||
@@ -114,7 +115,7 @@ void ConfigItem::updateMenu(void)
|
||||
|
||||
sym = menu->sym;
|
||||
prop = menu->prompt;
|
||||
prompt = QString::fromLocal8Bit(menu_get_prompt(menu));
|
||||
prompt = _(menu_get_prompt(menu));
|
||||
|
||||
if (prop) switch (prop->type) {
|
||||
case P_MENU:
|
||||
@@ -208,7 +209,7 @@ void ConfigItem::updateMenu(void)
|
||||
break;
|
||||
}
|
||||
if (!sym_has_value(sym) && visible)
|
||||
prompt += " (NEW)";
|
||||
prompt += _(" (NEW)");
|
||||
set_prompt:
|
||||
setText(promptColIdx, prompt);
|
||||
}
|
||||
@@ -297,10 +298,10 @@ void ConfigLineEdit::show(ConfigItem* i)
|
||||
void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
|
||||
{
|
||||
switch (e->key()) {
|
||||
case Key_Escape:
|
||||
case Qt::Key_Escape:
|
||||
break;
|
||||
case Key_Return:
|
||||
case Key_Enter:
|
||||
case Qt::Key_Return:
|
||||
case Qt::Key_Enter:
|
||||
sym_set_string_value(item->menu->sym, text().latin1());
|
||||
parent()->updateList(item);
|
||||
break;
|
||||
@@ -346,7 +347,7 @@ ConfigList::ConfigList(ConfigView* p, const char *name)
|
||||
|
||||
for (i = 0; i < colNr; i++)
|
||||
colMap[i] = colRevMap[i] = -1;
|
||||
addColumn(promptColIdx, "Option");
|
||||
addColumn(promptColIdx, _("Option"));
|
||||
|
||||
reinit();
|
||||
}
|
||||
@@ -360,14 +361,14 @@ void ConfigList::reinit(void)
|
||||
removeColumn(nameColIdx);
|
||||
|
||||
if (showName)
|
||||
addColumn(nameColIdx, "Name");
|
||||
addColumn(nameColIdx, _("Name"));
|
||||
if (showRange) {
|
||||
addColumn(noColIdx, "N");
|
||||
addColumn(modColIdx, "M");
|
||||
addColumn(yesColIdx, "Y");
|
||||
}
|
||||
if (showData)
|
||||
addColumn(dataColIdx, "Value");
|
||||
addColumn(dataColIdx, _("Value"));
|
||||
|
||||
updateListAll();
|
||||
}
|
||||
@@ -639,7 +640,7 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
|
||||
struct menu *menu;
|
||||
enum prop_type type;
|
||||
|
||||
if (ev->key() == Key_Escape && mode != fullMode && mode != listMode) {
|
||||
if (ev->key() == Qt::Key_Escape && mode != fullMode && mode != listMode) {
|
||||
emit parentSelected();
|
||||
ev->accept();
|
||||
return;
|
||||
@@ -652,8 +653,8 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
|
||||
item = (ConfigItem*)i;
|
||||
|
||||
switch (ev->key()) {
|
||||
case Key_Return:
|
||||
case Key_Enter:
|
||||
case Qt::Key_Return:
|
||||
case Qt::Key_Enter:
|
||||
if (item->goParent) {
|
||||
emit parentSelected();
|
||||
break;
|
||||
@@ -667,16 +668,16 @@ void ConfigList::keyPressEvent(QKeyEvent* ev)
|
||||
emit menuSelected(menu);
|
||||
break;
|
||||
}
|
||||
case Key_Space:
|
||||
case Qt::Key_Space:
|
||||
changeValue(item);
|
||||
break;
|
||||
case Key_N:
|
||||
case Qt::Key_N:
|
||||
setValue(item, no);
|
||||
break;
|
||||
case Key_M:
|
||||
case Qt::Key_M:
|
||||
setValue(item, mod);
|
||||
break;
|
||||
case Key_Y:
|
||||
case Qt::Key_Y:
|
||||
setValue(item, yes);
|
||||
break;
|
||||
default:
|
||||
@@ -803,7 +804,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
|
||||
QAction *action;
|
||||
|
||||
headerPopup = new QPopupMenu(this);
|
||||
action = new QAction(NULL, "Show Name", 0, this);
|
||||
action = new QAction(NULL, _("Show Name"), 0, this);
|
||||
action->setToggleAction(TRUE);
|
||||
connect(action, SIGNAL(toggled(bool)),
|
||||
parent(), SLOT(setShowName(bool)));
|
||||
@@ -811,7 +812,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
|
||||
action, SLOT(setOn(bool)));
|
||||
action->setOn(showName);
|
||||
action->addTo(headerPopup);
|
||||
action = new QAction(NULL, "Show Range", 0, this);
|
||||
action = new QAction(NULL, _("Show Range"), 0, this);
|
||||
action->setToggleAction(TRUE);
|
||||
connect(action, SIGNAL(toggled(bool)),
|
||||
parent(), SLOT(setShowRange(bool)));
|
||||
@@ -819,7 +820,7 @@ void ConfigList::contextMenuEvent(QContextMenuEvent *e)
|
||||
action, SLOT(setOn(bool)));
|
||||
action->setOn(showRange);
|
||||
action->addTo(headerPopup);
|
||||
action = new QAction(NULL, "Show Data", 0, this);
|
||||
action = new QAction(NULL, _("Show Data"), 0, this);
|
||||
action->setToggleAction(TRUE);
|
||||
connect(action, SIGNAL(toggled(bool)),
|
||||
parent(), SLOT(setShowData(bool)));
|
||||
@@ -920,7 +921,7 @@ void ConfigView::updateListAll(void)
|
||||
}
|
||||
|
||||
ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
|
||||
: Parent(parent, name), menu(0), sym(0)
|
||||
: Parent(parent, name), sym(0), menu(0)
|
||||
{
|
||||
if (name) {
|
||||
configSettings->beginGroup(name);
|
||||
@@ -1041,7 +1042,12 @@ void ConfigInfoView::menuInfo(void)
|
||||
if (showDebug())
|
||||
debug = debug_info(sym);
|
||||
|
||||
help = print_filter(_(menu_get_help(menu)));
|
||||
help = menu_get_help(menu);
|
||||
/* Gettextize if the help text not empty */
|
||||
if (help.isEmpty())
|
||||
help = print_filter(menu_get_help(menu));
|
||||
else
|
||||
help = print_filter(_(menu_get_help(menu)));
|
||||
} else if (menu->prompt) {
|
||||
head += "<big><b>";
|
||||
head += print_filter(_(menu->prompt->text));
|
||||
@@ -1083,7 +1089,11 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
|
||||
debug += "</a><br>";
|
||||
break;
|
||||
case P_DEFAULT:
|
||||
debug += "default: ";
|
||||
case P_SELECT:
|
||||
case P_RANGE:
|
||||
case P_ENV:
|
||||
debug += prop_get_type_name(prop->type);
|
||||
debug += ": ";
|
||||
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
|
||||
debug += "<br>";
|
||||
break;
|
||||
@@ -1094,16 +1104,6 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
|
||||
debug += "<br>";
|
||||
}
|
||||
break;
|
||||
case P_SELECT:
|
||||
debug += "select: ";
|
||||
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
|
||||
debug += "<br>";
|
||||
break;
|
||||
case P_RANGE:
|
||||
debug += "range: ";
|
||||
expr_print(prop->expr, expr_print_help, &debug, E_NONE);
|
||||
debug += "<br>";
|
||||
break;
|
||||
default:
|
||||
debug += "unknown property: ";
|
||||
debug += prop_get_type_name(prop->type);
|
||||
@@ -1167,7 +1167,7 @@ void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char
|
||||
QPopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
|
||||
{
|
||||
QPopupMenu* popup = Parent::createPopupMenu(pos);
|
||||
QAction* action = new QAction(NULL,"Show Debug Info", 0, popup);
|
||||
QAction* action = new QAction(NULL, _("Show Debug Info"), 0, popup);
|
||||
action->setToggleAction(TRUE);
|
||||
connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
|
||||
connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));
|
||||
@@ -1189,18 +1189,18 @@ ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *nam
|
||||
|
||||
QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6);
|
||||
QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6);
|
||||
layout2->addWidget(new QLabel("Find:", this));
|
||||
layout2->addWidget(new QLabel(_("Find:"), this));
|
||||
editField = new QLineEdit(this);
|
||||
connect(editField, SIGNAL(returnPressed()), SLOT(search()));
|
||||
layout2->addWidget(editField);
|
||||
searchButton = new QPushButton("Search", this);
|
||||
searchButton = new QPushButton(_("Search"), this);
|
||||
searchButton->setAutoDefault(FALSE);
|
||||
connect(searchButton, SIGNAL(clicked()), SLOT(search()));
|
||||
layout2->addWidget(searchButton);
|
||||
layout1->addLayout(layout2);
|
||||
|
||||
split = new QSplitter(this);
|
||||
split->setOrientation(QSplitter::Vertical);
|
||||
split->setOrientation(Qt::Vertical);
|
||||
list = new ConfigView(split, name);
|
||||
list->list->mode = listMode;
|
||||
info = new ConfigInfoView(split, name);
|
||||
@@ -1276,9 +1276,8 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
int x, y, width, height;
|
||||
char title[256];
|
||||
|
||||
QWidget *d = configApp->desktop();
|
||||
snprintf(title, sizeof(title), _("Linux Kernel v%s Configuration"),
|
||||
getenv("KERNELVERSION"));
|
||||
QDesktopWidget *d = configApp->desktop();
|
||||
snprintf(title, sizeof(title), _("Buildroot Configuration"));
|
||||
setCaption(title);
|
||||
|
||||
width = configSettings->readNumEntry("/window width", d->width() - 64);
|
||||
@@ -1291,14 +1290,14 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
move(x, y);
|
||||
|
||||
split1 = new QSplitter(this);
|
||||
split1->setOrientation(QSplitter::Horizontal);
|
||||
split1->setOrientation(Qt::Horizontal);
|
||||
setCentralWidget(split1);
|
||||
|
||||
menuView = new ConfigView(split1, "menu");
|
||||
menuList = menuView->list;
|
||||
|
||||
split2 = new QSplitter(split1);
|
||||
split2->setOrientation(QSplitter::Vertical);
|
||||
split2->setOrientation(Qt::Vertical);
|
||||
|
||||
// create config tree
|
||||
configView = new ConfigView(split2, "config");
|
||||
@@ -1313,58 +1312,58 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
menu = menuBar();
|
||||
toolBar = new QToolBar("Tools", this);
|
||||
|
||||
backAction = new QAction("Back", QPixmap(xpm_back), "Back", 0, this);
|
||||
backAction = new QAction("Back", QPixmap(xpm_back), _("Back"), 0, this);
|
||||
connect(backAction, SIGNAL(activated()), SLOT(goBack()));
|
||||
backAction->setEnabled(FALSE);
|
||||
QAction *quitAction = new QAction("Quit", "&Quit", CTRL+Key_Q, this);
|
||||
QAction *quitAction = new QAction("Quit", _("&Quit"), Qt::CTRL + Qt::Key_Q, this);
|
||||
connect(quitAction, SIGNAL(activated()), SLOT(close()));
|
||||
QAction *loadAction = new QAction("Load", QPixmap(xpm_load), "&Load", CTRL+Key_L, this);
|
||||
QAction *loadAction = new QAction("Load", QPixmap(xpm_load), _("&Load"), Qt::CTRL + Qt::Key_L, this);
|
||||
connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
|
||||
saveAction = new QAction("Save", QPixmap(xpm_save), "&Save", CTRL+Key_S, this);
|
||||
saveAction = new QAction("Save", QPixmap(xpm_save), _("&Save"), Qt::CTRL + Qt::Key_S, this);
|
||||
connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
|
||||
conf_set_changed_callback(conf_changed);
|
||||
// Set saveAction's initial state
|
||||
conf_changed();
|
||||
QAction *saveAsAction = new QAction("Save As...", "Save &As...", 0, this);
|
||||
QAction *saveAsAction = new QAction("Save As...", _("Save &As..."), 0, this);
|
||||
connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
|
||||
QAction *searchAction = new QAction("Find", "&Find", CTRL+Key_F, this);
|
||||
QAction *searchAction = new QAction("Find", _("&Find"), Qt::CTRL + Qt::Key_F, this);
|
||||
connect(searchAction, SIGNAL(activated()), SLOT(searchConfig()));
|
||||
QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), "Split View", 0, this);
|
||||
QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
|
||||
connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
|
||||
QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), "Split View", 0, this);
|
||||
QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
|
||||
connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
|
||||
QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), "Full View", 0, this);
|
||||
QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
|
||||
connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
|
||||
|
||||
QAction *showNameAction = new QAction(NULL, "Show Name", 0, this);
|
||||
QAction *showNameAction = new QAction(NULL, _("Show Name"), 0, this);
|
||||
showNameAction->setToggleAction(TRUE);
|
||||
connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));
|
||||
connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool)));
|
||||
showNameAction->setOn(configView->showName());
|
||||
QAction *showRangeAction = new QAction(NULL, "Show Range", 0, this);
|
||||
QAction *showRangeAction = new QAction(NULL, _("Show Range"), 0, this);
|
||||
showRangeAction->setToggleAction(TRUE);
|
||||
connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));
|
||||
connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool)));
|
||||
showRangeAction->setOn(configList->showRange);
|
||||
QAction *showDataAction = new QAction(NULL, "Show Data", 0, this);
|
||||
QAction *showDataAction = new QAction(NULL, _("Show Data"), 0, this);
|
||||
showDataAction->setToggleAction(TRUE);
|
||||
connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
|
||||
connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
|
||||
showDataAction->setOn(configList->showData);
|
||||
QAction *showAllAction = new QAction(NULL, "Show All Options", 0, this);
|
||||
QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
|
||||
showAllAction->setToggleAction(TRUE);
|
||||
connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
|
||||
connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
|
||||
showAllAction->setOn(configList->showAll);
|
||||
QAction *showDebugAction = new QAction(NULL, "Show Debug Info", 0, this);
|
||||
QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
|
||||
showDebugAction->setToggleAction(TRUE);
|
||||
connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
|
||||
connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool)));
|
||||
showDebugAction->setOn(helpText->showDebug());
|
||||
|
||||
QAction *showIntroAction = new QAction(NULL, "Introduction", 0, this);
|
||||
QAction *showIntroAction = new QAction(NULL, _("Introduction"), 0, this);
|
||||
connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
|
||||
QAction *showAboutAction = new QAction(NULL, "About", 0, this);
|
||||
QAction *showAboutAction = new QAction(NULL, _("About"), 0, this);
|
||||
connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
|
||||
|
||||
// init tool bar
|
||||
@@ -1379,7 +1378,7 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
|
||||
// create config menu
|
||||
QPopupMenu* config = new QPopupMenu(this);
|
||||
menu->insertItem("&File", config);
|
||||
menu->insertItem(_("&File"), config);
|
||||
loadAction->addTo(config);
|
||||
saveAction->addTo(config);
|
||||
saveAsAction->addTo(config);
|
||||
@@ -1388,12 +1387,12 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
|
||||
// create edit menu
|
||||
QPopupMenu* editMenu = new QPopupMenu(this);
|
||||
menu->insertItem("&Edit", editMenu);
|
||||
menu->insertItem(_("&Edit"), editMenu);
|
||||
searchAction->addTo(editMenu);
|
||||
|
||||
// create options menu
|
||||
QPopupMenu* optionMenu = new QPopupMenu(this);
|
||||
menu->insertItem("&Option", optionMenu);
|
||||
menu->insertItem(_("&Option"), optionMenu);
|
||||
showNameAction->addTo(optionMenu);
|
||||
showRangeAction->addTo(optionMenu);
|
||||
showDataAction->addTo(optionMenu);
|
||||
@@ -1404,7 +1403,7 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
// create help menu
|
||||
QPopupMenu* helpMenu = new QPopupMenu(this);
|
||||
menu->insertSeparator();
|
||||
menu->insertItem("&Help", helpMenu);
|
||||
menu->insertItem(_("&Help"), helpMenu);
|
||||
showIntroAction->addTo(helpMenu);
|
||||
showAboutAction->addTo(helpMenu);
|
||||
|
||||
@@ -1448,27 +1447,27 @@ ConfigMainWindow::ConfigMainWindow(void)
|
||||
|
||||
void ConfigMainWindow::loadConfig(void)
|
||||
{
|
||||
QString s = QFileDialog::getOpenFileName(".config", NULL, this);
|
||||
QString s = QFileDialog::getOpenFileName(conf_get_configname(), NULL, this);
|
||||
if (s.isNull())
|
||||
return;
|
||||
if (conf_read(QFile::encodeName(s)))
|
||||
QMessageBox::information(this, "qconf", "Unable to load configuration!");
|
||||
QMessageBox::information(this, "qconf", _("Unable to load configuration!"));
|
||||
ConfigView::updateListAll();
|
||||
}
|
||||
|
||||
void ConfigMainWindow::saveConfig(void)
|
||||
{
|
||||
if (conf_write(NULL))
|
||||
QMessageBox::information(this, "qconf", "Unable to save configuration!");
|
||||
QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
|
||||
}
|
||||
|
||||
void ConfigMainWindow::saveConfigAs(void)
|
||||
{
|
||||
QString s = QFileDialog::getSaveFileName(".config", NULL, this);
|
||||
QString s = QFileDialog::getSaveFileName(conf_get_configname(), NULL, this);
|
||||
if (s.isNull())
|
||||
return;
|
||||
if (conf_write(QFile::encodeName(s)))
|
||||
QMessageBox::information(this, "qconf", "Unable to save configuration!");
|
||||
QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
|
||||
}
|
||||
|
||||
void ConfigMainWindow::searchConfig(void)
|
||||
@@ -1525,6 +1524,8 @@ void ConfigMainWindow::setMenuLink(struct menu *menu)
|
||||
case fullMode:
|
||||
list = configList;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (list) {
|
||||
@@ -1610,16 +1611,18 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
|
||||
{
|
||||
if (!conf_get_changed()) {
|
||||
e->accept();
|
||||
conf_write_autoconf();
|
||||
return;
|
||||
}
|
||||
QMessageBox mb("qconf", "Save configuration?", QMessageBox::Warning,
|
||||
QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning,
|
||||
QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
|
||||
mb.setButtonText(QMessageBox::Yes, "&Save Changes");
|
||||
mb.setButtonText(QMessageBox::No, "&Discard Changes");
|
||||
mb.setButtonText(QMessageBox::Cancel, "Cancel Exit");
|
||||
mb.setButtonText(QMessageBox::Yes, _("&Save Changes"));
|
||||
mb.setButtonText(QMessageBox::No, _("&Discard Changes"));
|
||||
mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));
|
||||
switch (mb.exec()) {
|
||||
case QMessageBox::Yes:
|
||||
conf_write(NULL);
|
||||
conf_write_autoconf();
|
||||
case QMessageBox::No:
|
||||
e->accept();
|
||||
break;
|
||||
@@ -1631,7 +1634,7 @@ void ConfigMainWindow::closeEvent(QCloseEvent* e)
|
||||
|
||||
void ConfigMainWindow::showIntro(void)
|
||||
{
|
||||
static char str[] = "Welcome to the qconf graphical kernel configuration tool for Linux.\n\n"
|
||||
static const QString str = _("Welcome to the qconf graphical kernel configuration tool for Linux.\n\n"
|
||||
"For each option, a blank box indicates the feature is disabled, a check\n"
|
||||
"indicates it is enabled, and a dot indicates that it is to be compiled\n"
|
||||
"as a module. Clicking on the box will cycle through the three states.\n\n"
|
||||
@@ -1641,15 +1644,15 @@ void ConfigMainWindow::showIntro(void)
|
||||
"options must be enabled to support the option you are interested in, you can\n"
|
||||
"still view the help of a grayed-out option.\n\n"
|
||||
"Toggling Show Debug Info under the Options menu will show the dependencies,\n"
|
||||
"which you can then match by examining other options.\n\n";
|
||||
"which you can then match by examining other options.\n\n");
|
||||
|
||||
QMessageBox::information(this, "qconf", str);
|
||||
}
|
||||
|
||||
void ConfigMainWindow::showAbout(void)
|
||||
{
|
||||
static char str[] = "qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
|
||||
"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n";
|
||||
static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
|
||||
"Bug reports and feature request can also be entered at http://bugzilla.kernel.org/\n");
|
||||
|
||||
QMessageBox::information(this, "qconf", str);
|
||||
}
|
||||
@@ -1674,6 +1677,9 @@ void ConfigMainWindow::saveSettings(void)
|
||||
case fullMode :
|
||||
entry = "full";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
configSettings->writeEntry("/listMode", entry);
|
||||
|
||||
@@ -1707,7 +1713,7 @@ static const char *progname;
|
||||
|
||||
static void usage(void)
|
||||
{
|
||||
printf("%s <config>\n", progname);
|
||||
printf(_("%s <config>\n"), progname);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,18 +34,19 @@ struct symbol *sym_defconfig_list;
|
||||
struct symbol *modules_sym;
|
||||
tristate modules_val;
|
||||
|
||||
struct expr *sym_env_list;
|
||||
|
||||
void sym_add_default(struct symbol *sym, const char *def)
|
||||
{
|
||||
struct property *prop = prop_alloc(P_DEFAULT, sym);
|
||||
|
||||
prop->expr = expr_alloc_symbol(sym_lookup(def, 1));
|
||||
prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));
|
||||
}
|
||||
|
||||
void sym_init(void)
|
||||
{
|
||||
struct symbol *sym;
|
||||
struct utsname uts;
|
||||
char *p;
|
||||
static bool inited = false;
|
||||
|
||||
if (inited)
|
||||
@@ -54,20 +55,6 @@ void sym_init(void)
|
||||
|
||||
uname(&uts);
|
||||
|
||||
sym = sym_lookup("ARCH", 0);
|
||||
sym->type = S_STRING;
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
p = getenv("ARCH");
|
||||
if (p)
|
||||
sym_add_default(sym, p);
|
||||
|
||||
sym = sym_lookup("BR2_VERSION", 0);
|
||||
sym->type = S_STRING;
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
p = getenv("BR2_VERSION");
|
||||
if (p)
|
||||
sym_add_default(sym, p);
|
||||
|
||||
sym = sym_lookup("UNAME_RELEASE", 0);
|
||||
sym->type = S_STRING;
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
@@ -117,6 +104,15 @@ struct property *sym_get_choice_prop(struct symbol *sym)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct property *sym_get_env_prop(struct symbol *sym)
|
||||
{
|
||||
struct property *prop;
|
||||
|
||||
for_all_properties(sym, prop, P_ENV)
|
||||
return prop;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct property *sym_get_default_prop(struct symbol *sym)
|
||||
{
|
||||
struct property *prop;
|
||||
@@ -199,7 +195,7 @@ static void sym_calc_visibility(struct symbol *sym)
|
||||
tri = no;
|
||||
for_all_prompts(sym, prop) {
|
||||
prop->visible.tri = expr_calc_value(prop->visible.expr);
|
||||
tri = E_OR(tri, prop->visible.tri);
|
||||
tri = EXPR_OR(tri, prop->visible.tri);
|
||||
}
|
||||
if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
|
||||
tri = yes;
|
||||
@@ -247,8 +243,7 @@ static struct symbol *sym_calc_choice(struct symbol *sym)
|
||||
|
||||
/* just get the first visible value */
|
||||
prop = sym_get_choice_prop(sym);
|
||||
for (e = prop->expr; e; e = e->left.expr) {
|
||||
def_sym = e->right.sym;
|
||||
expr_list_for_each_sym(prop->expr, e, def_sym) {
|
||||
sym_calc_visibility(def_sym);
|
||||
if (def_sym->visible != no)
|
||||
return def_sym;
|
||||
@@ -303,22 +298,30 @@ void sym_calc_value(struct symbol *sym)
|
||||
if (sym_is_choice_value(sym) && sym->visible == yes) {
|
||||
prop = sym_get_choice_prop(sym);
|
||||
newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
|
||||
} else if (E_OR(sym->visible, sym->rev_dep.tri) != no) {
|
||||
sym->flags |= SYMBOL_WRITE;
|
||||
if (sym_has_value(sym))
|
||||
newval.tri = sym->def[S_DEF_USER].tri;
|
||||
else if (!sym_is_choice(sym)) {
|
||||
prop = sym_get_default_prop(sym);
|
||||
if (prop)
|
||||
newval.tri = expr_calc_value(prop->expr);
|
||||
}
|
||||
newval.tri = E_OR(E_AND(newval.tri, sym->visible), sym->rev_dep.tri);
|
||||
} else if (!sym_is_choice(sym)) {
|
||||
prop = sym_get_default_prop(sym);
|
||||
if (prop) {
|
||||
} else {
|
||||
if (sym->visible != no) {
|
||||
/* if the symbol is visible use the user value
|
||||
* if available, otherwise try the default value
|
||||
*/
|
||||
sym->flags |= SYMBOL_WRITE;
|
||||
newval.tri = expr_calc_value(prop->expr);
|
||||
if (sym_has_value(sym)) {
|
||||
newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,
|
||||
sym->visible);
|
||||
goto calc_newval;
|
||||
}
|
||||
}
|
||||
if (sym->rev_dep.tri != no)
|
||||
sym->flags |= SYMBOL_WRITE;
|
||||
if (!sym_is_choice(sym)) {
|
||||
prop = sym_get_default_prop(sym);
|
||||
if (prop) {
|
||||
sym->flags |= SYMBOL_WRITE;
|
||||
newval.tri = EXPR_AND(expr_calc_value(prop->expr),
|
||||
prop->visible.tri);
|
||||
}
|
||||
}
|
||||
calc_newval:
|
||||
newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
|
||||
}
|
||||
if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
|
||||
newval.tri = yes;
|
||||
@@ -361,14 +364,19 @@ void sym_calc_value(struct symbol *sym)
|
||||
}
|
||||
|
||||
if (sym_is_choice(sym)) {
|
||||
struct symbol *choice_sym;
|
||||
int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
|
||||
|
||||
prop = sym_get_choice_prop(sym);
|
||||
for (e = prop->expr; e; e = e->left.expr) {
|
||||
e->right.sym->flags |= flags;
|
||||
expr_list_for_each_sym(prop->expr, e, choice_sym) {
|
||||
choice_sym->flags |= flags;
|
||||
if (flags & SYMBOL_CHANGED)
|
||||
sym_set_changed(e->right.sym);
|
||||
sym_set_changed(choice_sym);
|
||||
}
|
||||
}
|
||||
|
||||
if (sym->flags & SYMBOL_AUTO)
|
||||
sym->flags &= ~SYMBOL_WRITE;
|
||||
}
|
||||
|
||||
void sym_clear_all_valid(void)
|
||||
@@ -643,7 +651,7 @@ bool sym_is_changable(struct symbol *sym)
|
||||
return sym->visible > sym->rev_dep.tri;
|
||||
}
|
||||
|
||||
struct symbol *sym_lookup(const char *name, int isconst)
|
||||
struct symbol *sym_lookup(const char *name, int flags)
|
||||
{
|
||||
struct symbol *symbol;
|
||||
const char *ptr;
|
||||
@@ -663,11 +671,10 @@ struct symbol *sym_lookup(const char *name, int isconst)
|
||||
hash &= 0xff;
|
||||
|
||||
for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
|
||||
if (!strcmp(symbol->name, name)) {
|
||||
if ((isconst && symbol->flags & SYMBOL_CONST) ||
|
||||
(!isconst && !(symbol->flags & SYMBOL_CONST)))
|
||||
return symbol;
|
||||
}
|
||||
if (!strcmp(symbol->name, name) &&
|
||||
(flags ? symbol->flags & flags
|
||||
: !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
|
||||
return symbol;
|
||||
}
|
||||
new_name = strdup(name);
|
||||
} else {
|
||||
@@ -679,8 +686,7 @@ struct symbol *sym_lookup(const char *name, int isconst)
|
||||
memset(symbol, 0, sizeof(*symbol));
|
||||
symbol->name = new_name;
|
||||
symbol->type = S_UNKNOWN;
|
||||
if (isconst)
|
||||
symbol->flags |= SYMBOL_CONST;
|
||||
symbol->flags |= flags;
|
||||
|
||||
symbol->next = symbol_hash[hash];
|
||||
symbol_hash[hash] = symbol;
|
||||
@@ -754,8 +760,6 @@ struct symbol **sym_re_search(const char *pattern)
|
||||
}
|
||||
|
||||
|
||||
struct symbol *sym_check_deps(struct symbol *sym);
|
||||
|
||||
static struct symbol *sym_check_expr_deps(struct expr *e)
|
||||
{
|
||||
struct symbol *sym;
|
||||
@@ -787,6 +791,65 @@ static struct symbol *sym_check_expr_deps(struct expr *e)
|
||||
}
|
||||
|
||||
/* return NULL when dependencies are OK */
|
||||
static struct symbol *sym_check_sym_deps(struct symbol *sym)
|
||||
{
|
||||
struct symbol *sym2;
|
||||
struct property *prop;
|
||||
|
||||
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
|
||||
if (sym2)
|
||||
return sym2;
|
||||
|
||||
for (prop = sym->prop; prop; prop = prop->next) {
|
||||
if (prop->type == P_CHOICE || prop->type == P_SELECT)
|
||||
continue;
|
||||
sym2 = sym_check_expr_deps(prop->visible.expr);
|
||||
if (sym2)
|
||||
break;
|
||||
if (prop->type != P_DEFAULT || sym_is_choice(sym))
|
||||
continue;
|
||||
sym2 = sym_check_expr_deps(prop->expr);
|
||||
if (sym2)
|
||||
break;
|
||||
}
|
||||
|
||||
return sym2;
|
||||
}
|
||||
|
||||
static struct symbol *sym_check_choice_deps(struct symbol *choice)
|
||||
{
|
||||
struct symbol *sym, *sym2;
|
||||
struct property *prop;
|
||||
struct expr *e;
|
||||
|
||||
prop = sym_get_choice_prop(choice);
|
||||
expr_list_for_each_sym(prop->expr, e, sym)
|
||||
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
|
||||
|
||||
choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
|
||||
sym2 = sym_check_sym_deps(choice);
|
||||
choice->flags &= ~SYMBOL_CHECK;
|
||||
if (sym2)
|
||||
goto out;
|
||||
|
||||
expr_list_for_each_sym(prop->expr, e, sym) {
|
||||
sym2 = sym_check_sym_deps(sym);
|
||||
if (sym2) {
|
||||
fprintf(stderr, " -> %s", sym->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
out:
|
||||
expr_list_for_each_sym(prop->expr, e, sym)
|
||||
sym->flags &= ~SYMBOL_CHECK;
|
||||
|
||||
if (sym2 && sym_is_choice_value(sym2) &&
|
||||
prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
|
||||
sym2 = choice;
|
||||
|
||||
return sym2;
|
||||
}
|
||||
|
||||
struct symbol *sym_check_deps(struct symbol *sym)
|
||||
{
|
||||
struct symbol *sym2;
|
||||
@@ -794,33 +857,34 @@ struct symbol *sym_check_deps(struct symbol *sym)
|
||||
|
||||
if (sym->flags & SYMBOL_CHECK) {
|
||||
fprintf(stderr, "%s:%d:error: found recursive dependency: %s",
|
||||
sym->prop->file->name, sym->prop->lineno, sym->name);
|
||||
sym->prop->file->name, sym->prop->lineno,
|
||||
sym->name ? sym->name : "<choice>");
|
||||
return sym;
|
||||
}
|
||||
if (sym->flags & SYMBOL_CHECKED)
|
||||
return NULL;
|
||||
|
||||
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
|
||||
sym2 = sym_check_expr_deps(sym->rev_dep.expr);
|
||||
if (sym2)
|
||||
goto out;
|
||||
|
||||
for (prop = sym->prop; prop; prop = prop->next) {
|
||||
if (prop->type == P_CHOICE || prop->type == P_SELECT)
|
||||
continue;
|
||||
sym2 = sym_check_expr_deps(prop->visible.expr);
|
||||
if (sym2)
|
||||
goto out;
|
||||
if (prop->type != P_DEFAULT || sym_is_choice(sym))
|
||||
continue;
|
||||
sym2 = sym_check_expr_deps(prop->expr);
|
||||
if (sym2)
|
||||
goto out;
|
||||
if (sym_is_choice_value(sym)) {
|
||||
/* for choice groups start the check with main choice symbol */
|
||||
prop = sym_get_choice_prop(sym);
|
||||
sym2 = sym_check_deps(prop_get_symbol(prop));
|
||||
} else if (sym_is_choice(sym)) {
|
||||
sym2 = sym_check_choice_deps(sym);
|
||||
} else {
|
||||
sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
|
||||
sym2 = sym_check_sym_deps(sym);
|
||||
sym->flags &= ~SYMBOL_CHECK;
|
||||
}
|
||||
out:
|
||||
if (sym2)
|
||||
fprintf(stderr, " -> %s%s", sym->name, sym2 == sym? "\n": "");
|
||||
sym->flags &= ~SYMBOL_CHECK;
|
||||
|
||||
if (sym2) {
|
||||
fprintf(stderr, " -> %s", sym->name ? sym->name : "<choice>");
|
||||
if (sym2 == sym) {
|
||||
fprintf(stderr, "\n");
|
||||
zconfnerrs++;
|
||||
sym2 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return sym2;
|
||||
}
|
||||
|
||||
@@ -849,7 +913,7 @@ struct property *prop_alloc(enum prop_type type, struct symbol *sym)
|
||||
struct symbol *prop_get_symbol(struct property *prop)
|
||||
{
|
||||
if (prop->expr && (prop->expr->type == E_SYMBOL ||
|
||||
prop->expr->type == E_CHOICE))
|
||||
prop->expr->type == E_LIST))
|
||||
return prop->expr->left.sym;
|
||||
return NULL;
|
||||
}
|
||||
@@ -859,6 +923,8 @@ const char *prop_get_type_name(enum prop_type type)
|
||||
switch (type) {
|
||||
case P_PROMPT:
|
||||
return "prompt";
|
||||
case P_ENV:
|
||||
return "env";
|
||||
case P_COMMENT:
|
||||
return "comment";
|
||||
case P_MENU:
|
||||
@@ -876,3 +942,32 @@ const char *prop_get_type_name(enum prop_type type)
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
void prop_add_env(const char *env)
|
||||
{
|
||||
struct symbol *sym, *sym2;
|
||||
struct property *prop;
|
||||
char *p;
|
||||
|
||||
sym = current_entry->sym;
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
for_all_properties(sym, prop, P_ENV) {
|
||||
sym2 = prop_get_symbol(prop);
|
||||
if (strcmp(sym2->name, env))
|
||||
menu_warn(current_entry, "redefining environment symbol from %s",
|
||||
sym2->name);
|
||||
return;
|
||||
}
|
||||
|
||||
prop = prop_alloc(P_ENV, sym);
|
||||
prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));
|
||||
|
||||
sym_env_list = expr_alloc_one(E_LIST, sym_env_list);
|
||||
sym_env_list->right.sym = sym;
|
||||
|
||||
p = getenv(env);
|
||||
if (p)
|
||||
sym_add_default(sym, p);
|
||||
else
|
||||
menu_warn(current_entry, "environment variable %s undefined", env);
|
||||
}
|
||||
|
||||
@@ -132,6 +132,8 @@ next:
|
||||
/* write a dependency file as used by kbuild to track dependencies */
|
||||
int file_write_dep(const char *name)
|
||||
{
|
||||
struct symbol *sym, *env_sym;
|
||||
struct expr *e;
|
||||
struct file *file;
|
||||
FILE *out;
|
||||
|
||||
@@ -147,12 +149,28 @@ int file_write_dep(const char *name)
|
||||
else
|
||||
fprintf(out, "\t%s\n", file->name);
|
||||
}
|
||||
fprintf(out, "\n$(BR2_DEPENDS_DIR)/config/auto.conf: \\\n"
|
||||
"\t$(deps_config)\n\n"
|
||||
"$(deps_config): ;\n");
|
||||
fprintf(out, "\n%s: \\\n"
|
||||
"\t$(deps_config)\n\n", conf_get_autoconfig_name());
|
||||
|
||||
expr_list_for_each_sym(sym_env_list, e, sym) {
|
||||
struct property *prop;
|
||||
const char *value;
|
||||
|
||||
prop = sym_get_env_prop(sym);
|
||||
env_sym = prop_get_symbol(prop);
|
||||
if (!env_sym)
|
||||
continue;
|
||||
value = getenv(env_sym->name);
|
||||
if (!value)
|
||||
value = "";
|
||||
fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);
|
||||
fprintf(out, "%s: FORCE\n", conf_get_autoconfig_name());
|
||||
fprintf(out, "endif\n");
|
||||
}
|
||||
|
||||
fprintf(out, "\n$(deps_config): ;\n");
|
||||
fclose(out);
|
||||
rename("..config.tmp", name);
|
||||
|
||||
return write_make_deps(NULL);
|
||||
}
|
||||
|
||||
@@ -162,7 +180,7 @@ struct gstr str_new(void)
|
||||
{
|
||||
struct gstr gs;
|
||||
gs.s = malloc(sizeof(char) * 64);
|
||||
gs.len = 16;
|
||||
gs.len = 64;
|
||||
strcpy(gs.s, "\0");
|
||||
return gs;
|
||||
}
|
||||
|
||||
@@ -35,10 +35,10 @@ int, T_TYPE, TF_COMMAND, S_INT
|
||||
hex, T_TYPE, TF_COMMAND, S_HEX
|
||||
string, T_TYPE, TF_COMMAND, S_STRING
|
||||
select, T_SELECT, TF_COMMAND
|
||||
enable, T_SELECT, TF_COMMAND
|
||||
range, T_RANGE, TF_COMMAND
|
||||
option, T_OPTION, TF_COMMAND
|
||||
on, T_ON, TF_PARAM
|
||||
modules, T_OPT_MODULES, TF_OPTION
|
||||
defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
|
||||
env, T_OPT_ENV, TF_OPTION
|
||||
%%
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* ANSI-C code produced by gperf version 3.0.2 */
|
||||
/* ANSI-C code produced by gperf version 3.0.3 */
|
||||
/* Command-line: gperf */
|
||||
/* Computed positions: -k'1,3' */
|
||||
|
||||
@@ -53,9 +53,9 @@ kconf_id_hash (register const char *str, register unsigned int len)
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 18, 11, 5,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 11, 5,
|
||||
0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
|
||||
5, 0, 30, 49, 0, 15, 0, 10, 49, 49,
|
||||
5, 0, 30, 49, 0, 15, 0, 10, 0, 49,
|
||||
25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
|
||||
@@ -89,6 +89,7 @@ kconf_id_hash (register const char *str, register unsigned int len)
|
||||
struct kconf_id_strings_t
|
||||
{
|
||||
char kconf_id_strings_str2[sizeof("on")];
|
||||
char kconf_id_strings_str3[sizeof("env")];
|
||||
char kconf_id_strings_str5[sizeof("endif")];
|
||||
char kconf_id_strings_str6[sizeof("option")];
|
||||
char kconf_id_strings_str7[sizeof("endmenu")];
|
||||
@@ -107,7 +108,6 @@ struct kconf_id_strings_t
|
||||
char kconf_id_strings_str21[sizeof("string")];
|
||||
char kconf_id_strings_str22[sizeof("if")];
|
||||
char kconf_id_strings_str23[sizeof("int")];
|
||||
char kconf_id_strings_str24[sizeof("enable")];
|
||||
char kconf_id_strings_str26[sizeof("select")];
|
||||
char kconf_id_strings_str27[sizeof("modules")];
|
||||
char kconf_id_strings_str28[sizeof("tristate")];
|
||||
@@ -123,6 +123,7 @@ struct kconf_id_strings_t
|
||||
static struct kconf_id_strings_t kconf_id_strings_contents =
|
||||
{
|
||||
"on",
|
||||
"env",
|
||||
"endif",
|
||||
"option",
|
||||
"endmenu",
|
||||
@@ -141,7 +142,6 @@ static struct kconf_id_strings_t kconf_id_strings_contents =
|
||||
"string",
|
||||
"if",
|
||||
"int",
|
||||
"enable",
|
||||
"select",
|
||||
"modules",
|
||||
"tristate",
|
||||
@@ -157,6 +157,9 @@ static struct kconf_id_strings_t kconf_id_strings_contents =
|
||||
#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
|
||||
#ifdef __GNUC__
|
||||
__inline
|
||||
#ifdef __GNUC_STDC_INLINE__
|
||||
__attribute__ ((__gnu_inline__))
|
||||
#endif
|
||||
#endif
|
||||
struct kconf_id *
|
||||
kconf_id_lookup (register const char *str, register unsigned int len)
|
||||
@@ -174,7 +177,8 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
||||
{
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION},
|
||||
{-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
|
||||
@@ -194,8 +198,7 @@ kconf_id_lookup (register const char *str, register unsigned int len)
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str24, T_SELECT, TF_COMMAND},
|
||||
{-1},
|
||||
{-1}, {-1},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
|
||||
{(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
%option backup nostdinit noyywrap never-interactive full ecs
|
||||
%option 8bit backup nodefault perf-report perf-report
|
||||
%option noinput
|
||||
%x COMMAND HELP STRING PARAM
|
||||
%{
|
||||
/*
|
||||
@@ -49,11 +50,6 @@ void new_string(void)
|
||||
void append_string(const char *str, int size)
|
||||
{
|
||||
int new_size = text_size + size + 1;
|
||||
|
||||
if ((YY_START == 2 /* HELP */) && (size > 70)) {
|
||||
fprintf (stderr, "%s:%d warning: Overlong line\n",
|
||||
current_file->name, current_file->lineno);
|
||||
}
|
||||
if (new_size > text_asize) {
|
||||
new_size += START_STRSIZE - 1;
|
||||
new_size &= -START_STRSIZE;
|
||||
@@ -222,6 +218,11 @@ n [A-Za-z0-9_]
|
||||
append_string("\n", 1);
|
||||
}
|
||||
[^ \t\n].* {
|
||||
while (yyleng) {
|
||||
if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
|
||||
break;
|
||||
yyleng--;
|
||||
}
|
||||
append_string(yytext, yyleng);
|
||||
if (!first_ts)
|
||||
first_ts = last_ts;
|
||||
@@ -313,11 +314,14 @@ void zconf_nextfile(const char *name)
|
||||
current_buf = buf;
|
||||
|
||||
if (file->flags & FILE_BUSY) {
|
||||
printf("recursive scan (%s)?\n", name);
|
||||
printf("%s:%d: do not source '%s' from itself\n",
|
||||
zconf_curname(), zconf_lineno(), name);
|
||||
exit(1);
|
||||
}
|
||||
if (file->flags & FILE_SCANNED) {
|
||||
printf("file %s already scanned?\n", name);
|
||||
printf("%s:%d: file '%s' is already sourced from '%s'\n",
|
||||
zconf_curname(), zconf_lineno(), name,
|
||||
file->parent->name);
|
||||
exit(1);
|
||||
}
|
||||
file->flags |= FILE_BUSY;
|
||||
|
||||
@@ -446,16 +446,16 @@ union yyalloc
|
||||
/* YYFINAL -- State number of the termination state. */
|
||||
#define YYFINAL 3
|
||||
/* YYLAST -- Last index in YYTABLE. */
|
||||
#define YYLAST 258
|
||||
#define YYLAST 259
|
||||
|
||||
/* YYNTOKENS -- Number of terminals. */
|
||||
#define YYNTOKENS 35
|
||||
/* YYNNTS -- Number of nonterminals. */
|
||||
#define YYNNTS 45
|
||||
#define YYNNTS 46
|
||||
/* YYNRULES -- Number of rules. */
|
||||
#define YYNRULES 108
|
||||
#define YYNRULES 110
|
||||
/* YYNRULES -- Number of states. */
|
||||
#define YYNSTATES 178
|
||||
#define YYNSTATES 180
|
||||
|
||||
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||
#define YYUNDEFTOK 2
|
||||
@@ -507,13 +507,14 @@ static const yytype_uint16 yyprhs[] =
|
||||
28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
|
||||
53, 55, 57, 59, 61, 63, 67, 70, 74, 77,
|
||||
81, 84, 85, 88, 91, 94, 97, 100, 103, 107,
|
||||
112, 117, 122, 128, 132, 133, 137, 138, 141, 144,
|
||||
147, 149, 153, 154, 157, 160, 163, 166, 169, 174,
|
||||
178, 181, 186, 187, 190, 194, 196, 200, 201, 204,
|
||||
207, 210, 214, 217, 219, 223, 224, 227, 230, 233,
|
||||
237, 241, 244, 247, 250, 251, 254, 257, 260, 265,
|
||||
266, 269, 271, 273, 276, 279, 282, 284, 287, 288,
|
||||
291, 293, 297, 301, 305, 308, 312, 316, 318
|
||||
112, 117, 122, 128, 132, 133, 137, 138, 141, 145,
|
||||
148, 150, 154, 155, 158, 161, 164, 167, 170, 175,
|
||||
179, 182, 187, 188, 191, 195, 197, 201, 202, 205,
|
||||
208, 211, 215, 218, 220, 224, 225, 228, 231, 234,
|
||||
238, 242, 245, 248, 251, 252, 255, 258, 261, 266,
|
||||
267, 270, 272, 274, 277, 280, 283, 285, 288, 289,
|
||||
292, 294, 298, 302, 306, 309, 313, 317, 319, 321,
|
||||
322
|
||||
};
|
||||
|
||||
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||
@@ -533,24 +534,25 @@ static const yytype_int8 yyrhs[] =
|
||||
30, -1, 20, 78, 77, 30, -1, 21, 25, 77,
|
||||
30, -1, 22, 79, 79, 77, 30, -1, 23, 48,
|
||||
30, -1, -1, 48, 25, 49, -1, -1, 33, 74,
|
||||
-1, 7, 30, -1, 50, 54, -1, 75, -1, 51,
|
||||
56, 52, -1, -1, 54, 55, -1, 54, 72, -1,
|
||||
54, 70, -1, 54, 30, -1, 54, 40, -1, 18,
|
||||
74, 77, 30, -1, 19, 73, 30, -1, 17, 30,
|
||||
-1, 20, 25, 77, 30, -1, -1, 56, 39, -1,
|
||||
14, 78, 76, -1, 75, -1, 57, 60, 58, -1,
|
||||
-1, 60, 39, -1, 60, 64, -1, 60, 53, -1,
|
||||
4, 74, 30, -1, 61, 71, -1, 75, -1, 62,
|
||||
65, 63, -1, -1, 65, 39, -1, 65, 64, -1,
|
||||
65, 53, -1, 6, 74, 30, -1, 9, 74, 30,
|
||||
-1, 67, 71, -1, 12, 30, -1, 69, 13, -1,
|
||||
-1, 71, 72, -1, 71, 30, -1, 71, 40, -1,
|
||||
16, 24, 78, 30, -1, -1, 74, 77, -1, 25,
|
||||
-1, 26, -1, 5, 30, -1, 8, 30, -1, 15,
|
||||
30, -1, 30, -1, 76, 30, -1, -1, 14, 78,
|
||||
-1, 79, -1, 79, 33, 79, -1, 79, 27, 79,
|
||||
-1, 29, 78, 28, -1, 34, 78, -1, 78, 31,
|
||||
78, -1, 78, 32, 78, -1, 25, -1, 26, -1
|
||||
-1, 7, 80, 30, -1, 50, 54, -1, 75, -1,
|
||||
51, 56, 52, -1, -1, 54, 55, -1, 54, 72,
|
||||
-1, 54, 70, -1, 54, 30, -1, 54, 40, -1,
|
||||
18, 74, 77, 30, -1, 19, 73, 30, -1, 17,
|
||||
30, -1, 20, 25, 77, 30, -1, -1, 56, 39,
|
||||
-1, 14, 78, 76, -1, 75, -1, 57, 60, 58,
|
||||
-1, -1, 60, 39, -1, 60, 64, -1, 60, 53,
|
||||
-1, 4, 74, 30, -1, 61, 71, -1, 75, -1,
|
||||
62, 65, 63, -1, -1, 65, 39, -1, 65, 64,
|
||||
-1, 65, 53, -1, 6, 74, 30, -1, 9, 74,
|
||||
30, -1, 67, 71, -1, 12, 30, -1, 69, 13,
|
||||
-1, -1, 71, 72, -1, 71, 30, -1, 71, 40,
|
||||
-1, 16, 24, 78, 30, -1, -1, 74, 77, -1,
|
||||
25, -1, 26, -1, 5, 30, -1, 8, 30, -1,
|
||||
15, 30, -1, 30, -1, 76, 30, -1, -1, 14,
|
||||
78, -1, 79, -1, 79, 33, 79, -1, 79, 27,
|
||||
79, -1, 29, 78, 28, -1, 34, 78, -1, 78,
|
||||
31, 78, -1, 78, 32, 78, -1, 25, -1, 26,
|
||||
-1, -1, 25, -1
|
||||
};
|
||||
|
||||
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||
@@ -566,7 +568,8 @@ static const yytype_uint16 yyrline[] =
|
||||
339, 344, 351, 356, 364, 367, 369, 370, 371, 374,
|
||||
382, 389, 396, 402, 409, 411, 412, 413, 416, 424,
|
||||
426, 431, 432, 435, 436, 437, 441, 442, 445, 446,
|
||||
449, 450, 451, 452, 453, 454, 455, 458, 459
|
||||
449, 450, 451, 452, 453, 454, 455, 458, 459, 462,
|
||||
463
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -590,7 +593,8 @@ static const char *const yytname[] =
|
||||
"if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
|
||||
"menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
|
||||
"comment_stmt", "help_start", "help", "depends_list", "depends",
|
||||
"prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol", 0
|
||||
"prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol",
|
||||
"word_opt", 0
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -619,7 +623,8 @@ static const yytype_uint8 yyr1[] =
|
||||
60, 61, 62, 63, 64, 65, 65, 65, 65, 66,
|
||||
67, 68, 69, 70, 71, 71, 71, 71, 72, 73,
|
||||
73, 74, 74, 75, 75, 75, 76, 76, 77, 77,
|
||||
78, 78, 78, 78, 78, 78, 78, 79, 79
|
||||
78, 78, 78, 78, 78, 78, 78, 79, 79, 80,
|
||||
80
|
||||
};
|
||||
|
||||
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||
@@ -629,13 +634,14 @@ static const yytype_uint8 yyr2[] =
|
||||
4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 3, 2, 3, 2, 3,
|
||||
2, 0, 2, 2, 2, 2, 2, 2, 3, 4,
|
||||
4, 4, 5, 3, 0, 3, 0, 2, 2, 2,
|
||||
4, 4, 5, 3, 0, 3, 0, 2, 3, 2,
|
||||
1, 3, 0, 2, 2, 2, 2, 2, 4, 3,
|
||||
2, 4, 0, 2, 3, 1, 3, 0, 2, 2,
|
||||
2, 3, 2, 1, 3, 0, 2, 2, 2, 3,
|
||||
3, 2, 2, 2, 0, 2, 2, 2, 4, 0,
|
||||
2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
|
||||
1, 3, 3, 3, 2, 3, 3, 1, 1
|
||||
1, 3, 3, 3, 2, 3, 3, 1, 1, 0,
|
||||
1
|
||||
};
|
||||
|
||||
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
|
||||
@@ -643,69 +649,69 @@ static const yytype_uint8 yyr2[] =
|
||||
means the default is an error. */
|
||||
static const yytype_uint8 yydefact[] =
|
||||
{
|
||||
3, 0, 0, 1, 0, 0, 0, 0, 0, 0,
|
||||
3, 0, 0, 1, 0, 0, 0, 0, 0, 109,
|
||||
0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
|
||||
18, 15, 17, 0, 19, 0, 4, 31, 22, 31,
|
||||
23, 52, 62, 5, 67, 20, 84, 75, 6, 24,
|
||||
84, 21, 8, 11, 91, 92, 0, 0, 93, 0,
|
||||
48, 94, 0, 0, 0, 107, 108, 0, 0, 0,
|
||||
100, 95, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 96, 7, 71, 79, 80, 27, 29, 0,
|
||||
104, 0, 0, 64, 0, 0, 9, 10, 0, 0,
|
||||
0, 0, 89, 0, 0, 0, 44, 0, 37, 36,
|
||||
32, 33, 0, 35, 34, 0, 0, 89, 0, 56,
|
||||
57, 53, 55, 54, 63, 51, 50, 68, 70, 66,
|
||||
69, 65, 86, 87, 85, 76, 78, 74, 77, 73,
|
||||
97, 103, 105, 106, 102, 101, 26, 82, 0, 98,
|
||||
0, 98, 98, 98, 0, 0, 0, 83, 60, 98,
|
||||
0, 98, 0, 0, 0, 38, 90, 0, 0, 98,
|
||||
46, 43, 25, 0, 59, 0, 88, 99, 39, 40,
|
||||
41, 0, 0, 45, 58, 61, 42, 47
|
||||
110, 0, 94, 0, 0, 0, 107, 108, 0, 0,
|
||||
0, 100, 95, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 96, 7, 71, 79, 48, 80, 27,
|
||||
29, 0, 104, 0, 0, 64, 0, 0, 9, 10,
|
||||
0, 0, 0, 0, 89, 0, 0, 0, 44, 0,
|
||||
37, 36, 32, 33, 0, 35, 34, 0, 0, 89,
|
||||
0, 56, 57, 53, 55, 54, 63, 51, 50, 68,
|
||||
70, 66, 69, 65, 86, 87, 85, 76, 78, 74,
|
||||
77, 73, 97, 103, 105, 106, 102, 101, 26, 82,
|
||||
0, 98, 0, 98, 98, 98, 0, 0, 0, 83,
|
||||
60, 98, 0, 98, 0, 0, 0, 38, 90, 0,
|
||||
0, 98, 46, 43, 25, 0, 59, 0, 88, 99,
|
||||
39, 40, 41, 0, 0, 45, 58, 61, 42, 47
|
||||
};
|
||||
|
||||
/* YYDEFGOTO[NTERM-NUM]. */
|
||||
static const yytype_int16 yydefgoto[] =
|
||||
{
|
||||
-1, 1, 2, 25, 26, 99, 27, 28, 29, 30,
|
||||
64, 100, 101, 145, 173, 31, 32, 115, 33, 66,
|
||||
111, 67, 34, 119, 35, 68, 36, 37, 127, 38,
|
||||
70, 39, 40, 41, 102, 103, 69, 104, 140, 141,
|
||||
42, 73, 154, 59, 60
|
||||
-1, 1, 2, 25, 26, 101, 27, 28, 29, 30,
|
||||
65, 102, 103, 147, 175, 31, 32, 117, 33, 67,
|
||||
113, 68, 34, 121, 35, 69, 36, 37, 129, 38,
|
||||
71, 39, 40, 41, 104, 105, 70, 106, 142, 143,
|
||||
42, 74, 156, 60, 61, 51
|
||||
};
|
||||
|
||||
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||
STATE-NUM. */
|
||||
#define YYPACT_NINF -78
|
||||
#define YYPACT_NINF -80
|
||||
static const yytype_int16 yypact[] =
|
||||
{
|
||||
-78, 33, 130, -78, -28, 73, 73, 7, 73, 36,
|
||||
41, 73, 26, 52, -4, 58, -78, -78, -78, -78,
|
||||
-78, -78, -78, 90, -78, 94, -78, -78, -78, -78,
|
||||
-78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
|
||||
-78, -78, -78, -78, -78, -78, 74, 85, -78, 96,
|
||||
-78, -78, 131, 134, 147, -78, -78, -4, -4, 193,
|
||||
-10, -78, 162, 164, 38, 102, 64, 148, 5, 192,
|
||||
5, 165, -78, 174, -78, -78, -78, -78, -78, 65,
|
||||
-78, -4, -4, 174, 103, 103, -78, -78, 175, 185,
|
||||
197, 73, 73, -4, 194, 103, -78, 231, -78, -78,
|
||||
-78, -78, 220, -78, -78, 204, 73, 73, 210, -78,
|
||||
-78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
|
||||
-78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
|
||||
-78, -78, 205, -78, -78, -78, -78, -78, -4, 222,
|
||||
208, 222, 195, 222, 103, 2, 209, -78, -78, 222,
|
||||
211, 222, 199, -4, 212, -78, -78, 213, 214, 222,
|
||||
207, -78, -78, 215, -78, 216, -78, 111, -78, -78,
|
||||
-78, 217, 73, -78, -78, -78, -78, -78
|
||||
-80, 2, 132, -80, -13, -1, -1, -2, -1, 9,
|
||||
33, -1, 27, 40, -3, 38, -80, -80, -80, -80,
|
||||
-80, -80, -80, 71, -80, 77, -80, -80, -80, -80,
|
||||
-80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
|
||||
-80, -80, -80, -80, -80, -80, 57, 61, -80, 63,
|
||||
-80, 76, -80, 87, 101, 133, -80, -80, -3, -3,
|
||||
195, -6, -80, 136, 149, 39, 104, 65, 150, 5,
|
||||
194, 5, 167, -80, 176, -80, -80, -80, -80, -80,
|
||||
-80, 68, -80, -3, -3, 176, 72, 72, -80, -80,
|
||||
177, 187, 78, -1, -1, -3, 196, 72, -80, 222,
|
||||
-80, -80, -80, -80, 221, -80, -80, 205, -1, -1,
|
||||
211, -80, -80, -80, -80, -80, -80, -80, -80, -80,
|
||||
-80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
|
||||
-80, -80, -80, -80, 206, -80, -80, -80, -80, -80,
|
||||
-3, 223, 209, 223, 197, 223, 72, 7, 210, -80,
|
||||
-80, 223, 212, 223, 201, -3, 213, -80, -80, 214,
|
||||
215, 223, 208, -80, -80, 216, -80, 217, -80, 113,
|
||||
-80, -80, -80, 218, -1, -80, -80, -80, -80, -80
|
||||
};
|
||||
|
||||
/* YYPGOTO[NTERM-NUM]. */
|
||||
static const yytype_int16 yypgoto[] =
|
||||
{
|
||||
-78, -78, -78, -78, 121, -35, -78, -78, -78, -78,
|
||||
219, -78, -78, -78, -78, -78, -78, -78, -44, -78,
|
||||
-78, -78, -78, -78, -78, -78, -78, -78, -78, -6,
|
||||
-78, -78, -78, -78, -78, 183, 218, 21, 143, -5,
|
||||
146, 196, 69, -53, -77
|
||||
-80, -80, -80, -80, 122, -34, -80, -80, -80, -80,
|
||||
220, -80, -80, -80, -80, -80, -80, -80, 59, -80,
|
||||
-80, -80, -80, -80, -80, -80, -80, -80, -80, 125,
|
||||
-80, -80, -80, -80, -80, 183, 219, 22, 142, -5,
|
||||
147, 192, 69, -54, -79, -80
|
||||
};
|
||||
|
||||
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||
@@ -715,62 +721,62 @@ static const yytype_int16 yypgoto[] =
|
||||
#define YYTABLE_NINF -82
|
||||
static const yytype_int16 yytable[] =
|
||||
{
|
||||
46, 47, 43, 49, 79, 80, 52, 134, 135, 6,
|
||||
7, 8, 9, 10, 11, 12, 13, 84, 144, 14,
|
||||
15, 55, 56, 85, 118, 57, 126, 160, 132, 133,
|
||||
58, 110, 161, 3, 123, 24, 123, 48, -28, 88,
|
||||
142, -28, -28, -28, -28, -28, -28, -28, -28, -28,
|
||||
89, 53, -28, -28, 90, -28, 91, 92, 93, 94,
|
||||
95, 96, 120, 97, 128, 88, 50, 159, 98, -49,
|
||||
-49, 51, -49, -49, -49, -49, 89, 54, -49, -49,
|
||||
90, 105, 106, 107, 108, 152, 139, 113, 61, 97,
|
||||
124, 62, 124, 131, 109, 63, 81, 82, 44, 45,
|
||||
167, 149, -30, 88, 72, -30, -30, -30, -30, -30,
|
||||
-30, -30, -30, -30, 89, 74, -30, -30, 90, -30,
|
||||
91, 92, 93, 94, 95, 96, 75, 97, 55, 56,
|
||||
-2, 4, 98, 5, 6, 7, 8, 9, 10, 11,
|
||||
12, 13, 81, 82, 14, 15, 16, 17, 18, 19,
|
||||
20, 21, 22, 7, 8, 23, 10, 11, 12, 13,
|
||||
24, 76, 14, 15, 77, -81, 88, 177, -81, -81,
|
||||
-81, -81, -81, -81, -81, -81, -81, 78, 24, -81,
|
||||
-81, 90, -81, -81, -81, -81, -81, -81, 114, 117,
|
||||
97, 125, 86, 88, 87, 122, -72, -72, -72, -72,
|
||||
-72, -72, -72, -72, 130, 136, -72, -72, 90, 153,
|
||||
156, 157, 158, 116, 121, 137, 129, 97, 163, 143,
|
||||
165, 138, 122, 72, 81, 82, 81, 82, 171, 166,
|
||||
81, 82, 146, 147, 148, 151, 153, 82, 155, 162,
|
||||
172, 164, 168, 169, 170, 174, 175, 176, 65, 112,
|
||||
150, 0, 0, 0, 0, 83, 0, 0, 71
|
||||
46, 47, 3, 49, 81, 82, 53, 136, 137, 6,
|
||||
7, 8, 9, 10, 11, 12, 13, 43, 146, 14,
|
||||
15, 86, 56, 57, 44, 45, 58, 87, 48, 134,
|
||||
135, 59, 162, 112, 50, 24, 125, 163, 125, -28,
|
||||
90, 144, -28, -28, -28, -28, -28, -28, -28, -28,
|
||||
-28, 91, 54, -28, -28, 92, -28, 93, 94, 95,
|
||||
96, 97, 98, 52, 99, 55, 90, 161, 62, 100,
|
||||
-49, -49, 63, -49, -49, -49, -49, 91, 64, -49,
|
||||
-49, 92, 107, 108, 109, 110, 154, 73, 141, 115,
|
||||
99, 75, 126, 76, 126, 111, 133, 56, 57, 83,
|
||||
84, 169, 140, 151, -30, 90, 77, -30, -30, -30,
|
||||
-30, -30, -30, -30, -30, -30, 91, 78, -30, -30,
|
||||
92, -30, 93, 94, 95, 96, 97, 98, 120, 99,
|
||||
128, 79, -2, 4, 100, 5, 6, 7, 8, 9,
|
||||
10, 11, 12, 13, 83, 84, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 7, 8, 23, 10, 11,
|
||||
12, 13, 24, 80, 14, 15, 88, -81, 90, 179,
|
||||
-81, -81, -81, -81, -81, -81, -81, -81, -81, 89,
|
||||
24, -81, -81, 92, -81, -81, -81, -81, -81, -81,
|
||||
116, 119, 99, 127, 122, 90, 130, 124, -72, -72,
|
||||
-72, -72, -72, -72, -72, -72, 132, 138, -72, -72,
|
||||
92, 155, 158, 159, 160, 118, 123, 139, 131, 99,
|
||||
165, 145, 167, 148, 124, 73, 83, 84, 83, 84,
|
||||
173, 168, 83, 84, 149, 150, 153, 155, 84, 157,
|
||||
164, 174, 166, 170, 171, 172, 176, 177, 178, 66,
|
||||
114, 152, 85, 0, 0, 0, 0, 0, 0, 72
|
||||
};
|
||||
|
||||
static const yytype_int16 yycheck[] =
|
||||
{
|
||||
5, 6, 30, 8, 57, 58, 11, 84, 85, 4,
|
||||
5, 6, 7, 8, 9, 10, 11, 27, 95, 14,
|
||||
15, 25, 26, 33, 68, 29, 70, 25, 81, 82,
|
||||
34, 66, 30, 0, 69, 30, 71, 30, 0, 1,
|
||||
93, 3, 4, 5, 6, 7, 8, 9, 10, 11,
|
||||
12, 25, 14, 15, 16, 17, 18, 19, 20, 21,
|
||||
22, 23, 68, 25, 70, 1, 30, 144, 30, 5,
|
||||
6, 30, 8, 9, 10, 11, 12, 25, 14, 15,
|
||||
16, 17, 18, 19, 20, 138, 91, 66, 30, 25,
|
||||
69, 1, 71, 28, 30, 1, 31, 32, 25, 26,
|
||||
153, 106, 0, 1, 30, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 30, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 23, 30, 25, 25, 26,
|
||||
0, 1, 30, 3, 4, 5, 6, 7, 8, 9,
|
||||
10, 11, 31, 32, 14, 15, 16, 17, 18, 19,
|
||||
20, 21, 22, 5, 6, 25, 8, 9, 10, 11,
|
||||
30, 30, 14, 15, 30, 0, 1, 172, 3, 4,
|
||||
5, 6, 7, 8, 9, 10, 11, 30, 30, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 67, 68,
|
||||
25, 70, 30, 1, 30, 30, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 30, 30, 14, 15, 16, 14,
|
||||
141, 142, 143, 67, 68, 30, 70, 25, 149, 25,
|
||||
151, 24, 30, 30, 31, 32, 31, 32, 159, 30,
|
||||
31, 32, 1, 13, 30, 25, 14, 32, 30, 30,
|
||||
33, 30, 30, 30, 30, 30, 30, 30, 29, 66,
|
||||
107, -1, -1, -1, -1, 59, -1, -1, 40
|
||||
5, 6, 0, 8, 58, 59, 11, 86, 87, 4,
|
||||
5, 6, 7, 8, 9, 10, 11, 30, 97, 14,
|
||||
15, 27, 25, 26, 25, 26, 29, 33, 30, 83,
|
||||
84, 34, 25, 67, 25, 30, 70, 30, 72, 0,
|
||||
1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
|
||||
11, 12, 25, 14, 15, 16, 17, 18, 19, 20,
|
||||
21, 22, 23, 30, 25, 25, 1, 146, 30, 30,
|
||||
5, 6, 1, 8, 9, 10, 11, 12, 1, 14,
|
||||
15, 16, 17, 18, 19, 20, 140, 30, 93, 67,
|
||||
25, 30, 70, 30, 72, 30, 28, 25, 26, 31,
|
||||
32, 155, 24, 108, 0, 1, 30, 3, 4, 5,
|
||||
6, 7, 8, 9, 10, 11, 12, 30, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 69, 25,
|
||||
71, 30, 0, 1, 30, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 31, 32, 14, 15, 16, 17,
|
||||
18, 19, 20, 21, 22, 5, 6, 25, 8, 9,
|
||||
10, 11, 30, 30, 14, 15, 30, 0, 1, 174,
|
||||
3, 4, 5, 6, 7, 8, 9, 10, 11, 30,
|
||||
30, 14, 15, 16, 17, 18, 19, 20, 21, 22,
|
||||
68, 69, 25, 71, 69, 1, 71, 30, 4, 5,
|
||||
6, 7, 8, 9, 10, 11, 30, 30, 14, 15,
|
||||
16, 14, 143, 144, 145, 68, 69, 30, 71, 25,
|
||||
151, 25, 153, 1, 30, 30, 31, 32, 31, 32,
|
||||
161, 30, 31, 32, 13, 30, 25, 14, 32, 30,
|
||||
30, 33, 30, 30, 30, 30, 30, 30, 30, 29,
|
||||
67, 109, 60, -1, -1, -1, -1, -1, -1, 40
|
||||
};
|
||||
|
||||
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
|
||||
@@ -782,19 +788,19 @@ static const yytype_uint8 yystos[] =
|
||||
20, 21, 22, 25, 30, 38, 39, 41, 42, 43,
|
||||
44, 50, 51, 53, 57, 59, 61, 62, 64, 66,
|
||||
67, 68, 75, 30, 25, 26, 74, 74, 30, 74,
|
||||
30, 30, 74, 25, 25, 25, 26, 29, 34, 78,
|
||||
79, 30, 1, 1, 45, 45, 54, 56, 60, 71,
|
||||
65, 71, 30, 76, 30, 30, 30, 30, 30, 78,
|
||||
78, 31, 32, 76, 27, 33, 30, 30, 1, 12,
|
||||
16, 18, 19, 20, 21, 22, 23, 25, 30, 40,
|
||||
46, 47, 69, 70, 72, 17, 18, 19, 20, 30,
|
||||
40, 55, 70, 72, 39, 52, 75, 39, 53, 58,
|
||||
64, 75, 30, 40, 72, 39, 53, 63, 64, 75,
|
||||
30, 28, 78, 78, 79, 79, 30, 30, 24, 74,
|
||||
73, 74, 78, 25, 79, 48, 1, 13, 30, 74,
|
||||
73, 25, 78, 14, 77, 30, 77, 77, 77, 79,
|
||||
25, 30, 30, 77, 30, 77, 30, 78, 30, 30,
|
||||
30, 77, 33, 49, 30, 30, 30, 74
|
||||
25, 80, 30, 74, 25, 25, 25, 26, 29, 34,
|
||||
78, 79, 30, 1, 1, 45, 45, 54, 56, 60,
|
||||
71, 65, 71, 30, 76, 30, 30, 30, 30, 30,
|
||||
30, 78, 78, 31, 32, 76, 27, 33, 30, 30,
|
||||
1, 12, 16, 18, 19, 20, 21, 22, 23, 25,
|
||||
30, 40, 46, 47, 69, 70, 72, 17, 18, 19,
|
||||
20, 30, 40, 55, 70, 72, 39, 52, 75, 39,
|
||||
53, 58, 64, 75, 30, 40, 72, 39, 53, 63,
|
||||
64, 75, 30, 28, 78, 78, 79, 79, 30, 30,
|
||||
24, 74, 73, 74, 78, 25, 79, 48, 1, 13,
|
||||
30, 74, 73, 25, 78, 14, 77, 30, 77, 77,
|
||||
77, 79, 25, 30, 30, 77, 30, 77, 30, 78,
|
||||
30, 30, 30, 77, 33, 49, 30, 30, 30, 74
|
||||
};
|
||||
|
||||
#define yyerrok (yyerrstatus = 0)
|
||||
@@ -1781,8 +1787,8 @@ yyreduce:
|
||||
case 48:
|
||||
|
||||
{
|
||||
struct symbol *sym = sym_lookup(NULL, 0);
|
||||
sym->flags |= SYMBOL_CHOICE;
|
||||
struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
menu_add_entry(sym);
|
||||
menu_add_expr(P_CHOICE, NULL, NULL);
|
||||
printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
|
||||
@@ -2014,7 +2020,12 @@ yyreduce:
|
||||
|
||||
case 108:
|
||||
|
||||
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 1); free((yyvsp[(1) - (1)].string)); ;}
|
||||
{ (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
|
||||
break;
|
||||
|
||||
case 109:
|
||||
|
||||
{ (yyval.string) = NULL; ;}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ static struct menu *current_menu, *current_entry;
|
||||
%type <id> end
|
||||
%type <id> option_name
|
||||
%type <menu> if_entry menu_entry choice_entry
|
||||
%type <string> symbol_option_arg
|
||||
%type <string> symbol_option_arg word_opt
|
||||
|
||||
%destructor {
|
||||
fprintf(stderr, "%s:%d: missing end statement for this entry\n",
|
||||
@@ -239,10 +239,10 @@ symbol_option_arg:
|
||||
|
||||
/* choice entry */
|
||||
|
||||
choice: T_CHOICE T_EOL
|
||||
choice: T_CHOICE word_opt T_EOL
|
||||
{
|
||||
struct symbol *sym = sym_lookup(NULL, 0);
|
||||
sym->flags |= SYMBOL_CHOICE;
|
||||
struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE);
|
||||
sym->flags |= SYMBOL_AUTO;
|
||||
menu_add_entry(sym);
|
||||
menu_add_expr(P_CHOICE, NULL, NULL);
|
||||
printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
|
||||
@@ -456,9 +456,12 @@ expr: symbol { $$ = expr_alloc_symbol($1); }
|
||||
;
|
||||
|
||||
symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
|
||||
| T_WORD_QUOTE { $$ = sym_lookup($1, 1); free($1); }
|
||||
| T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); }
|
||||
;
|
||||
|
||||
word_opt: /* empty */ { $$ = NULL; }
|
||||
| T_WORD
|
||||
|
||||
%%
|
||||
|
||||
void conf_parse(const char *name)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
config BR2_PACKAGE_COREUTILS
|
||||
bool "coreutils"
|
||||
depends on BR2_USE_WCHAR && BR2_UCLIBC_PROGRAM_INVOCATION
|
||||
depends on BR2_USE_WCHAR && BR2_PROGRAM_INVOCATION
|
||||
help
|
||||
All of the basic file/text/shell utilities. These are the
|
||||
core utilities which are expected to exist on every system.
|
||||
@@ -14,4 +14,4 @@ config BR2_PACKAGE_COREUTILS
|
||||
http://www.gnu.org/software/coreutils/
|
||||
|
||||
comment "coreutils requires a toolchain with WCHAR and PROGRAM_INVOCATION support"
|
||||
depends on !(BR2_USE_WCHAR && BR2_UCLIBC_PROGRAM_INVOCATION)
|
||||
depends on !(BR2_USE_WCHAR && BR2_PROGRAM_INVOCATION)
|
||||
|
||||
25
package/coreutils/coreutils-7.4-rename-m4-fix.patch
Normal file
25
package/coreutils/coreutils-7.4-rename-m4-fix.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
Commit 7fcb389fb4cd5ba26e330fef991ffdc05392f289 from gnulib, to fix
|
||||
the rename bugs detection macros.
|
||||
---
|
||||
m4/rename.m4 | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: coreutils-7.4/m4/rename.m4
|
||||
===================================================================
|
||||
--- coreutils-7.4.orig/m4/rename.m4
|
||||
+++ coreutils-7.4/m4/rename.m4
|
||||
@@ -51,12 +51,12 @@
|
||||
AC_LIBOBJ([rename])
|
||||
AC_DEFINE([rename], [rpl_rename],
|
||||
[Define to rpl_rename if the replacement function should be used.])
|
||||
- if test $gl_cv_func_rename_trailing_slash_bug; then
|
||||
+ if test $gl_cv_func_rename_trailing_slash_bug = yes; then
|
||||
AC_DEFINE([RENAME_TRAILING_SLASH_BUG], [1],
|
||||
[Define if rename does not work for source file names with a trailing
|
||||
slash, like the one from SunOS 4.1.1_U1.])
|
||||
fi
|
||||
- if test $gl_cv_func_rename_dest_exists_bug; then
|
||||
+ if test $gl_cv_func_rename_dest_exists_bug = yes; then
|
||||
AC_DEFINE([RENAME_DEST_EXISTS_BUG], [1],
|
||||
[Define if rename does not work when the destination file exists,
|
||||
as on Windows.])
|
||||
@@ -3,11 +3,11 @@
|
||||
# coreutils
|
||||
#
|
||||
#############################################################
|
||||
COREUTILS_VERSION:=6.9
|
||||
COREUTILS_SOURCE:=coreutils-$(COREUTILS_VERSION).tar.bz2
|
||||
COREUTILS_VERSION:=7.4
|
||||
COREUTILS_SOURCE:=coreutils-$(COREUTILS_VERSION).tar.gz
|
||||
#COREUTILS_SITE:=ftp://alpha.gnu.org/gnu/coreutils/
|
||||
COREUTILS_SITE:=$(BR2_GNU_MIRROR)/coreutils
|
||||
COREUTILS_CAT:=$(BZCAT)
|
||||
COREUTILS_CAT:=$(ZCAT)
|
||||
COREUTILS_DIR:=$(BUILD_DIR)/coreutils-$(COREUTILS_VERSION)
|
||||
COREUTILS_BINARY:=src/vdir
|
||||
COREUTILS_TARGET_BINARY:=bin/vdir
|
||||
@@ -59,6 +59,7 @@ $(COREUTILS_DIR)/.configured: $(COREUTILS_DIR)/.unpacked
|
||||
ac_cv_func_mkstemp=yes \
|
||||
utils_cv_func_mkstemp_limitations=no \
|
||||
utils_cv_func_mkdir_trailing_slash_bug=no \
|
||||
gl_cv_func_rename_dest_exists_bug=no \
|
||||
ac_cv_func_memcmp_working=yes \
|
||||
ac_cv_have_decl_malloc=yes \
|
||||
gl_cv_func_malloc_0_nonnull=yes \
|
||||
|
||||
13
package/ctorrent/Config.in
Normal file
13
package/ctorrent/Config.in
Normal file
@@ -0,0 +1,13 @@
|
||||
comment "ctorrent requires a toolchain with C++ support enabled"
|
||||
depends on !BR2_INSTALL_LIBSTDCPP
|
||||
|
||||
config BR2_PACKAGE_CTORRENT
|
||||
bool "ctorrent"
|
||||
depends on BR2_INSTALL_LIBSTDCPP
|
||||
help
|
||||
CTorrent is a BitTorrent client implemented in C++
|
||||
to be lightweight and quick.
|
||||
http://ctorrent.sourceforge.net/
|
||||
|
||||
This is the enhanced version from
|
||||
http://www.rahul.net/dholmes/ctorrent/
|
||||
11
package/ctorrent/ctorrent.mk
Normal file
11
package/ctorrent/ctorrent.mk
Normal file
@@ -0,0 +1,11 @@
|
||||
#############################################################
|
||||
#
|
||||
# enhanced ctorrent
|
||||
#
|
||||
#############################################################
|
||||
CTORRENT_VERSION:=dnh3.3.2
|
||||
CTORRENT_SOURCE:=ctorrent-$(CTORRENT_VERSION).tar.gz
|
||||
CTORRENT_SITE:=http://www.rahul.net/dholmes/ctorrent/
|
||||
CTORRENT_CONF_OPT:=--with-ssl=no
|
||||
|
||||
$(eval $(call AUTOTARGETS,package,ctorrent))
|
||||
@@ -4,3 +4,16 @@ config BR2_PACKAGE_CUPS
|
||||
The Common Unix Printing System
|
||||
|
||||
http://www.cups.org
|
||||
|
||||
if BR2_PACKAGE_CUPS
|
||||
|
||||
config BR2_PACKAGE_CUPS_PDFTOPS
|
||||
bool "pdftops support"
|
||||
depends on BR2_INSTALL_LIBSTDCPP
|
||||
help
|
||||
Enable pdftops support
|
||||
|
||||
comment "pdftops support requires a toolchain with C++ support enabled"
|
||||
depends on !BR2_INSTALL_LIBSTDCPP
|
||||
|
||||
endif
|
||||
|
||||
25
package/cups/cups-fix-stack-protector-check.patch
Normal file
25
package/cups/cups-fix-stack-protector-check.patch
Normal file
@@ -0,0 +1,25 @@
|
||||
[PATCH]: use AC_TRY_LINK for stack protector check
|
||||
|
||||
Actually try to link an executable to test for stack protector support,
|
||||
as gcc seems to accept the -fstack-protector argument even when it's
|
||||
compiled with --disable-libssp (but linking fails with a error
|
||||
finding -lssp_nonshared).
|
||||
|
||||
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
|
||||
---
|
||||
config-scripts/cups-compiler.m4 | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: cups-1.3.9/config-scripts/cups-compiler.m4
|
||||
===================================================================
|
||||
--- cups-1.3.9.orig/config-scripts/cups-compiler.m4
|
||||
+++ cups-1.3.9/config-scripts/cups-compiler.m4
|
||||
@@ -109,7 +109,7 @@ if test -n "$GCC"; then
|
||||
AC_MSG_CHECKING(if GCC supports -fstack-protector)
|
||||
OLDCFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fstack-protector"
|
||||
- AC_TRY_COMPILE(,,
|
||||
+ AC_TRY_LINK(,,
|
||||
OPTIM="$OPTIM -fstack-protector"
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no))
|
||||
@@ -18,7 +18,7 @@ else
|
||||
CUPS_CONF_OPT += --disable-dbus
|
||||
endif
|
||||
|
||||
ifneq ($(BR2_PACKAGE_XSERVER_none),y)
|
||||
ifeq ($(BR2_PACKAGE_XORG7),y)
|
||||
CUPS_DEPENDENCIES += xlib_libX11
|
||||
endif
|
||||
|
||||
@@ -58,6 +58,12 @@ else
|
||||
CUPS_CONF_OPT += --disable-python
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_CUPS_PDFTOPS),y)
|
||||
CUPS_CONF_OPT += --enable-pdftops
|
||||
else
|
||||
CUPS_CONF_OPT += --disable-pdftops
|
||||
endif
|
||||
|
||||
$(DL_DIR)/$(CUPS_SOURCE):
|
||||
$(call DOWNLOAD,$(CUPS_SITE),$(CUPS_SOURCE))
|
||||
|
||||
@@ -68,6 +74,7 @@ $(CUPS_DIR)/.unpacked: $(DL_DIR)/$(CUPS_SOURCE)
|
||||
touch $@
|
||||
|
||||
$(CUPS_DIR)/.configured: $(CUPS_DIR)/.unpacked
|
||||
cd $(CUPS_DIR) && $(AUTOCONF)
|
||||
(cd $(CUPS_DIR) && \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
$(TARGET_CONFIGURE_ARGS) \
|
||||
@@ -103,7 +110,7 @@ $(CUPS_DIR)/.installed: $(CUPS_DIR)/.compiled
|
||||
$(SED) "s,^libdir=.*,libdir=\'$(STAGING_DIR)/usr/lib\',g" $(STAGING_DIR)/usr/bin/cups-config
|
||||
touch $@
|
||||
|
||||
cups: uclibc $(CUPS_DEPENDENCIES) $(CUPS_DIR)/.installed
|
||||
cups: uclibc host-autoconf $(CUPS_DEPENDENCIES) $(CUPS_DIR)/.installed
|
||||
|
||||
cups-source: $(DL_DIR)/$(CUPS_SOURCE)
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#
|
||||
#############################################################
|
||||
|
||||
SQLITE_VERSION = 3.6.13
|
||||
SQLITE_SOURCE = sqlite-$(SQLITE_VERSION).tar.gz
|
||||
SQLITE_VERSION = 3.6.16
|
||||
SQLITE_SOURCE = sqlite-amalgamation-$(SQLITE_VERSION).tar.gz
|
||||
SQLITE_SITE = http://www.sqlite.org
|
||||
SQLITE_INSTALL_STAGING = YES
|
||||
SQLITE_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install
|
||||
|
||||
@@ -94,7 +94,8 @@ $(DIFFUTILS_DIR)/$(DIFFUTILS_BINARY): $(DIFFUTILS_DIR)/.configured
|
||||
$(MAKE) CC=$(TARGET_CC) -C $(DIFFUTILS_DIR)
|
||||
|
||||
$(TARGET_DIR)/$(DIFFUTILS_TARGET_BINARY): $(DIFFUTILS_DIR)/$(DIFFUTILS_BINARY)
|
||||
$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(DIFFUTILS_DIR) install-strip
|
||||
$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(DIFFUTILS_DIR) \
|
||||
$(if $(BR2_STRIP_none),install,install-strip)
|
||||
ifneq ($(BR2_HAVE_INFOPAGES),y)
|
||||
rm -rf $(TARGET_DIR)/usr/share/info
|
||||
endif
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
config BR2_PACKAGE_DILLO
|
||||
bool "dillo"
|
||||
depends on BR2_PACKAGE_JPEG
|
||||
depends on BR2_PACKAGE_LIBGLIB12
|
||||
depends on BR2_PACKAGE_LIBGTK12
|
||||
depends on BR2_PACKAGE_ZLIB
|
||||
depends on BR2_PACKAGE_LIBPNG
|
||||
depends on BR2_PACKAGE_XORG||BR2_PACKAGE_XORG7
|
||||
select BR2_PACKAGE_JPEG
|
||||
select BR2_PACKAGE_LIBGLIB12
|
||||
select BR2_PACKAGE_LIBGTK12
|
||||
select BR2_PACKAGE_ZLIB
|
||||
select BR2_PACKAGE_LIBPNG
|
||||
depends on BR2_PACKAGE_XORG7
|
||||
help
|
||||
Dillo is a small GTK+ based web browser written in C.
|
||||
|
||||
http://www.dillo.org/
|
||||
|
||||
comment "dillo - disabled (requires jpeg,libglib12,libgtk12,zlib,libpng and Xorg(7))"
|
||||
depends on !BR2_PACKAGE_JPEG || !BR2_PACKAGE_LIBGLIB12 || !BR2_PACKAGE_LIBGTK12 || !BR2_PACKAGE_ZLIB || !BR2_PACKAGE_LIBPNG || !(BR2_PACKAGE_XORG || BR2_PACKAGE_XORG7)
|
||||
|
||||
@@ -39,7 +39,7 @@ $(DILLO_DIR)/.installed: $(DILLO_DIR)/src/dillo
|
||||
$(MAKE) -C $(DILLO_DIR) DESTDIR=$(TARGET_DIR) install
|
||||
touch $(DILLO_DIR)/.installed
|
||||
|
||||
dillo: uclibc $(XSERVER) libglib12 libgtk12 jpeg libpng $(DILLO_DIR)/.installed
|
||||
dillo: uclibc xserver_xorg-server libglib12 libgtk12 jpeg libpng $(DILLO_DIR)/.installed
|
||||
|
||||
dillo-source: $(DL_DIR)/$(DILLO_SOURCE)
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ config BR2_PACKAGE_DIRECTFB_MULTI
|
||||
config BR2_PACKAGE_DIRECTFB_XSERVER
|
||||
bool "build with X server backend"
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
depends on !BR2_PACKAGE_XSERVER_none
|
||||
depends on BR2_PACKAGE_XORG7
|
||||
|
||||
config BR2_PACKAGE_DIRECTFB_UNIQUE
|
||||
bool "enable unique window manager"
|
||||
@@ -66,12 +66,6 @@ config BR2_PACKAGE_DIRECTFB_SERIALMOUSE
|
||||
default y
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
|
||||
config BR2_PACKAGE_DIRECTFB_PNG
|
||||
bool "enable PNG support"
|
||||
default y
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
select BR2_PACKAGE_LIBPNG
|
||||
|
||||
config BR2_PACKAGE_DIRECTFB_TSLIB
|
||||
bool "enable touchscreen support"
|
||||
default y
|
||||
@@ -89,3 +83,16 @@ config BR2_PACKAGE_DIRECTFB_JPEG
|
||||
default y
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
select BR2_PACKAGE_JPEG
|
||||
|
||||
config BR2_PACKAGE_DIRECTFB_PNG
|
||||
bool "enable PNG support"
|
||||
default y
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
select BR2_PACKAGE_LIBPNG
|
||||
|
||||
config BR2_PACKAGE_DIRECTB_DITHER_RGB16
|
||||
bool "enable advanced dithering of RGB16 surfaces"
|
||||
depends on BR2_PACKAGE_DIRECTFB
|
||||
help
|
||||
Enable dithering when loading images to RGB16 surfaces.
|
||||
This increases the data section by 64 KBytes.
|
||||
|
||||
@@ -3,11 +3,9 @@
|
||||
# directfb
|
||||
#
|
||||
#############################################################
|
||||
DIRECTFB_VERSION_MAJOR:=1.2
|
||||
DIRECTFB_VERSION:=1.2.8
|
||||
#DIRECTFB_VERSION:=1.3.0 is a development version
|
||||
#DIRECTFB_VERSION_MAJOR:=1.3
|
||||
DIRECTFB_SITE:=http://www.directfb.org/downloads/Core
|
||||
DIRECTFB_VERSION_MAJOR:=1.4
|
||||
DIRECTFB_VERSION:=1.4.1
|
||||
DIRECTFB_SITE:=http://www.directfb.org/downloads/Core/DirectFB-$(DIRECTFB_VERSION_MAJOR)
|
||||
DIRECTFB_SOURCE:=DirectFB-$(DIRECTFB_VERSION).tar.gz
|
||||
DIRECTFB_AUTORECONF = NO
|
||||
DIRECTFB_LIBTOOL_PATCH = NO
|
||||
@@ -99,6 +97,12 @@ else
|
||||
DIRECTFB_JPEG:=--disable-jpeg
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_DIRECTB_DITHER_RGB16),y)
|
||||
DIRECTFB_DITHER_RGB16:=--with-dither-rgb16=advanced
|
||||
else
|
||||
DIRECTFB_DITHER_RGB16:=--with-dither-rgb16=none
|
||||
endif
|
||||
|
||||
DIRECTFB_CONF_OPT = \
|
||||
--localstatedir=/var \
|
||||
--with-gfxdrivers=$(DIRECTFB_GFX) \
|
||||
@@ -112,6 +116,7 @@ DIRECTFB_CONF_OPT = \
|
||||
$(DIRECTFB_PNG) \
|
||||
$(DIRECTFB_GIF) \
|
||||
$(DIRECTFB_UNIQUE) \
|
||||
$(DIRECTFB_DITHER_RGB16) \
|
||||
--enable-linux-input \
|
||||
--enable-zlib \
|
||||
--enable-freetype \
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
config BR2_PACKAGE_DM
|
||||
bool "dm"
|
||||
depends on BR2_LARGEFILE
|
||||
help
|
||||
The Device-mapper is a new component of the linux kernel that
|
||||
supports logical volume management. It is required by LVM2 and EVMS.
|
||||
|
||||
comment "dm requires a toolchain with LARGEFILE support"
|
||||
depends on !BR2_LARGEFILE
|
||||
129
package/dm/dm.mk
129
package/dm/dm.mk
@@ -1,129 +0,0 @@
|
||||
#############################################################
|
||||
#
|
||||
# device-mapper
|
||||
#
|
||||
#############################################################
|
||||
# Copyright (C) 2005 by Richard Downer <rdowner@gmail.com>
|
||||
# Derived from work
|
||||
# Copyright (C) 2001-2005 by Erik Andersen <andersen@codepoet.org>
|
||||
# Copyright (C) 2002 by Tim Riker <Tim@Rikers.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Library 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
|
||||
# Library General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library 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
|
||||
|
||||
DM_BASEVER=1.02
|
||||
DM_PATCH=28
|
||||
DM_VERSION=$(DM_BASEVER).$(DM_PATCH)
|
||||
DM_SOURCE:=device-mapper.$(DM_VERSION).tgz
|
||||
DM_SITE:=ftp://sources.redhat.com/pub/dm
|
||||
DM_CAT:=$(ZCAT)
|
||||
DM_DIR:=$(BUILD_DIR)/device-mapper.$(DM_VERSION)
|
||||
DM_STAGING_BINARY:=$(STAGING_DIR)/usr/sbin/dmsetup
|
||||
DM_TARGET_BINARY:=$(TARGET_DIR)/usr/sbin/dmsetup
|
||||
DM_STAGING_LIBRARY:=$(STAGING_DIR)/lib/libdevmapper.so
|
||||
DM_TARGET_LIBRARY:=$(TARGET_DIR)/usr/lib/libdevmapper.so
|
||||
DM_TARGET_HEADER:=$(TARGET_DIR)/usr/include/libdevmapper.h
|
||||
|
||||
$(DL_DIR)/$(DM_SOURCE):
|
||||
$(call DOWNLOAD,$(DM_SITE),$(DM_SOURCE))
|
||||
|
||||
dm-source: $(DL_DIR)/$(DM_SOURCE)
|
||||
|
||||
$(DM_DIR)/.unpacked: $(DL_DIR)/$(DM_SOURCE)
|
||||
$(DM_CAT) $(DL_DIR)/$(DM_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
|
||||
toolchain/patch-kernel.sh $(DM_DIR) package/dm/ \*.patch
|
||||
touch $@
|
||||
|
||||
$(DM_DIR)/.configured: $(DM_DIR)/.unpacked
|
||||
(cd $(DM_DIR); rm -rf config.cache; \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
$(TARGET_CONFIGURE_ARGS) \
|
||||
ac_cv_have_decl_malloc=yes \
|
||||
gl_cv_func_malloc_0_nonnull=yes \
|
||||
ac_cv_func_malloc_0_nonnull=yes \
|
||||
ac_cv_func_calloc_0_nonnull=yes \
|
||||
ac_cv_func_realloc_0_nonnull=yes \
|
||||
ac_cv_func_lstat_dereferences_slashed_symlink=yes \
|
||||
./configure \
|
||||
--target=$(GNU_TARGET_NAME) \
|
||||
--host=$(GNU_TARGET_NAME) \
|
||||
--build=$(GNU_HOST_NAME) \
|
||||
--prefix=/usr \
|
||||
--exec-prefix=/usr \
|
||||
--bindir=/usr/bin \
|
||||
--sbindir=/usr/sbin \
|
||||
--libdir=/lib \
|
||||
--libexecdir=/usr/lib \
|
||||
--sysconfdir=/etc \
|
||||
--datadir=/usr/share \
|
||||
--localstatedir=/var \
|
||||
--includedir=/usr/include \
|
||||
--mandir=/usr/share/man \
|
||||
--infodir=/usr/share/info \
|
||||
$(DISABLE_NLS) \
|
||||
$(DISABLE_LARGEFILE) \
|
||||
--with-user=$(shell id -un) --with-group=$(shell id -gn) \
|
||||
)
|
||||
touch $@
|
||||
|
||||
$(DM_DIR)/$(DM_BINARY): dm-build
|
||||
$(DM_DIR)/$(DM_LIBRARY): dm-build
|
||||
|
||||
$(DM_STAGING_BINARY) $(DM_STAGING_LIBRARY): $(DM_DIR)/.configured
|
||||
$(MAKE) CC=$(TARGET_CC) -C $(DM_DIR)
|
||||
$(MAKE) DESTDIR=$(STAGING_DIR) -C $(DM_DIR) install
|
||||
|
||||
# Install dmsetup from staging to target
|
||||
$(DM_TARGET_BINARY): $(DM_STAGING_BINARY)
|
||||
$(INSTALL) -m 0755 $? $@
|
||||
-$(STRIPCMD) $(DM_TARGET_BINARY)
|
||||
touch -c $@
|
||||
|
||||
# Install libdevmapper.so.1.00 from staging to target
|
||||
$(DM_TARGET_LIBRARY).$(DM_BASEVER): $(DM_STAGING_LIBRARY)
|
||||
$(INSTALL) -m 0644 $? $@
|
||||
-$(STRIPCMD) $@
|
||||
touch -c $@
|
||||
|
||||
# Makes libdevmapper.so a symlink to libdevmapper.so.1.00
|
||||
$(DM_TARGET_LIBRARY): $(DM_TARGET_LIBRARY).$(DM_BASEVER)
|
||||
rm -f $@
|
||||
ln -s $(<F) $@
|
||||
touch -c $@
|
||||
|
||||
# Install header file
|
||||
$(DM_TARGET_HEADER): $(DM_TARGET_LIBRARY)
|
||||
rm -f $@
|
||||
mkdir -p $(STAGING_DIR)/usr/include
|
||||
$(INSTALL) -m 0644 $(STAGING_DIR)/usr/include/libdevmapper.h $@
|
||||
|
||||
dm: uclibc $(DM_TARGET_BINARY) $(DM_TARGET_LIBRARY) #$(DM_TARGET_HEADER)
|
||||
|
||||
dm-clean:
|
||||
rm -f $(DM_TARGET_BINARY) $(DM_TARGET_LIBRARY) \
|
||||
$(DM_TARGET_LIBRARY).$(DM_BASEVER) $(DM_TARGET_HEADER)
|
||||
-$(MAKE) -C $(DM_DIR) clean
|
||||
|
||||
dm-dirclean:
|
||||
rm -rf $(DM_DIR)
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Toplevel Makefile options
|
||||
#
|
||||
#############################################################
|
||||
ifeq ($(BR2_PACKAGE_DM),y)
|
||||
TARGETS+=dm
|
||||
endif
|
||||
@@ -4,7 +4,7 @@ comment "dmraid has no inherent support for AVR32"
|
||||
config BR2_PACKAGE_DMRAID
|
||||
bool "dmraid"
|
||||
depends on BR2_LARGEFILE
|
||||
select BR2_PACKAGE_DM
|
||||
select BR2_PACKAGE_LVM2
|
||||
help
|
||||
dmraid discovers, activates, deactivates and displays properties
|
||||
of software RAID sets (eg, ATARAID) and contained DOS partitions.
|
||||
|
||||
@@ -7,7 +7,9 @@ DMRAID_VERSION:=1.0.0.rc15
|
||||
DMRAID_SOURCE:=dmraid-$(DMRAID_VERSION).tar.bz2
|
||||
DMRAID_SITE:=http://people.redhat.com/~heinzm/sw/dmraid/src
|
||||
DMRAID_SUBDIR:=$(DMRAID_VERSION)
|
||||
DMRAID_DEPENDENCIES:=dm
|
||||
# lib and tools race with parallel make
|
||||
DMRAID_MAKE = $(MAKE1)
|
||||
DMRAID_DEPENDENCIES:=lvm2
|
||||
DMRAID_INSTALL_STAGING:=yes
|
||||
|
||||
$(eval $(call AUTOTARGETS,package,dmraid))
|
||||
|
||||
15
package/dmraid/dmraid_library-linking-fix.patch
Normal file
15
package/dmraid/dmraid_library-linking-fix.patch
Normal file
@@ -0,0 +1,15 @@
|
||||
Why on earth are we trying to link against the libdir in DESTDIR?
|
||||
|
||||
Signed-Off-By: Nigel Kukard <nkukard@lbsd.net>
|
||||
diff -ur dmraid_vanilla/1.0.0.rc15/tools/Makefile.in dmraid_library-linking-fix/1.0.0.rc15/tools/Makefile.in
|
||||
--- dmraid_vanilla/1.0.0.rc15/tools/Makefile.in 2008-09-17 13:24:00.000000000 +0000
|
||||
+++ dmraid_library-linking-fix/1.0.0.rc15/tools/Makefile.in 2009-06-01 10:50:52.000000000 +0000
|
||||
@@ -56,7 +56,7 @@
|
||||
|
||||
dmraid: $(OBJECTS) $(top_srcdir)/lib/libdmraid.a
|
||||
$(CC) -o $@ $(OBJECTS) $(LDFLAGS) -L$(top_srcdir)/lib \
|
||||
- -L$(DESTDIR)$(libdir) $(DMRAIDLIBS) $(LIBS)
|
||||
+ $(DMRAIDLIBS) $(LIBS)
|
||||
|
||||
install_dmraid_tools: $(TARGETS)
|
||||
@echo "Installing $(TARGETS) in $(sbindir)"; \
|
||||
@@ -1,6 +1,6 @@
|
||||
config BR2_PACKAGE_DOCKER
|
||||
bool "docker"
|
||||
depends on BR2_PACKAGE_XORG||BR2_PACKAGE_XORG7||BR2_PACKAGE_TINYX
|
||||
depends on BR2_PACKAGE_XORG7
|
||||
select BR2_PACKAGE_LIBGLIB2
|
||||
help
|
||||
a system tray dock for X
|
||||
|
||||
@@ -14,12 +14,12 @@ DOCKER_MAKE_OPT = CC=$(TARGET_CC) CXX=$(TARGET_CXX) LD=$(TARGET_LD) \
|
||||
CFLAGS="-I$(STAGING_DIR)/usr/include \
|
||||
-I$(STAGING_DIR)/usr/include/glib-2.0 \
|
||||
-I$(STAGING_DIR)/usr/lib/glib-2.0/include" \
|
||||
PKG_CONFIG="$(STAGING_DIR)/usr/bin/pkg-config" \
|
||||
PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
|
||||
LDFLAGS="-L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib"
|
||||
|
||||
DOCKER_INSTALL_TARGET_OPT = PREFIX=$(TARGET_DIR)/usr install
|
||||
|
||||
DOCKER_DEPENDENCIES = uclibc host-pkgconfig libglib2 $(XSERVER)
|
||||
DOCKER_DEPENDENCIES = uclibc host-pkgconfig libglib2 xserver_xorg-server
|
||||
|
||||
$(eval $(call AUTOTARGETS,package,docker))
|
||||
|
||||
|
||||
24
package/dosfstools/Config.in
Normal file
24
package/dosfstools/Config.in
Normal file
@@ -0,0 +1,24 @@
|
||||
config BR2_PACKAGE_DOSFSTOOLS
|
||||
bool "dosfstools"
|
||||
help
|
||||
Tools for creating and checking DOS FAT filesystems.
|
||||
|
||||
http://www.daniel-baumann.ch/software/dosfstools/
|
||||
|
||||
config BR2_PACKAGE_DOSFSTOOLS_MKDOSFS
|
||||
bool "mkdosfs"
|
||||
depends on BR2_PACKAGE_DOSFSTOOLS
|
||||
help
|
||||
Creates a DOS FAT filesystem on a device.
|
||||
|
||||
config BR2_PACKAGE_DOSFSTOOLS_DOSFSCK
|
||||
bool "dosfsck"
|
||||
depends on BR2_PACKAGE_DOSFSTOOLS
|
||||
help
|
||||
Checks a DOS FAT filesystem.
|
||||
|
||||
config BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL
|
||||
bool "dosfslabel"
|
||||
depends on BR2_PACKAGE_DOSFSTOOLS
|
||||
help
|
||||
Get or set the DOS FAT filesystem label.
|
||||
73
package/dosfstools/dosfstools.mk
Normal file
73
package/dosfstools/dosfstools.mk
Normal file
@@ -0,0 +1,73 @@
|
||||
#############################################################
|
||||
#
|
||||
# dosfstools
|
||||
#
|
||||
#############################################################
|
||||
DOSFSTOOLS_VERSION:=3.0.3
|
||||
DOSFSTOOLS_SOURCE:=dosfstools-$(DOSFSTOOLS_VERSION).tar.gz
|
||||
DOSFSTOOLS_SITE:=http://www.daniel-baumann.ch/software/dosfstools
|
||||
DOSFSTOOLS_DIR:=$(BUILD_DIR)/dosfstools-$(DOSFSTOOLS_VERSION)
|
||||
DOSFSTOOLS_CAT:=$(ZCAT)
|
||||
MKDOSFS_BINARY:=mkdosfs
|
||||
MKDOSFS_TARGET_BINARY:=sbin/mkdosfs
|
||||
DOSFSCK_BINARY:=dosfsck
|
||||
DOSFSCK_TARGET_BINARY:=sbin/dosfsck
|
||||
DOSFSLABEL_BINARY:=dosfslabel
|
||||
DOSFSLABEL_TARGET_BINARY:=sbin/dosfslabel
|
||||
|
||||
$(DL_DIR)/$(DOSFSTOOLS_SOURCE):
|
||||
$(call DOWNLOAD,$(DOSFSTOOLS_SITE),$(DOSFSTOOLS_SOURCE))
|
||||
|
||||
dosfstools-source: $(DL_DIR)/$(DOSFSTOOLS_SOURCE)
|
||||
|
||||
$(DOSFSTOOLS_DIR)/.unpacked: $(DL_DIR)/$(DOSFSTOOLS_SOURCE) $(wildcard local/dosfstools/dosfstools*.patch)
|
||||
$(DOSFSTOOLS_CAT) $(DL_DIR)/$(DOSFSTOOLS_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
|
||||
toolchain/patch-kernel.sh $(DOSFSTOOLS_DIR) package/dosfstools/ dosfstools\*.patch
|
||||
touch $(DOSFSTOOLS_DIR)/.unpacked
|
||||
|
||||
$(DOSFSTOOLS_DIR)/.built : $(DOSFSTOOLS_DIR)/.unpacked
|
||||
$(MAKE) CFLAGS="$(TARGET_CFLAGS)" CC="$(TARGET_CC)" -C $(DOSFSTOOLS_DIR)
|
||||
$(STRIPCMD) $(DOSFSTOOLS_DIR)/$(MKDOSFS_BINARY)
|
||||
$(STRIPCMD) $(DOSFSTOOLS_DIR)/$(DOSFSCK_BINARY)
|
||||
$(STRIPCMD) $(DOSFSTOOLS_DIR)/$(DOSFSLABEL_BINARY)
|
||||
touch $@
|
||||
|
||||
$(TARGET_DIR)/$(MKDOSFS_TARGET_BINARY): $(DOSFSTOOLS_DIR)/.built
|
||||
cp -a $(DOSFSTOOLS_DIR)/$(MKDOSFS_BINARY) $@
|
||||
touch -c $@
|
||||
|
||||
$(TARGET_DIR)/$(DOSFSCK_TARGET_BINARY): $(DOSFSTOOLS_DIR)/.built
|
||||
cp -a $(DOSFSTOOLS_DIR)/$(DOSFSCK_BINARY) $@
|
||||
touch -c $@
|
||||
|
||||
$(TARGET_DIR)/$(DOSFSLABEL_TARGET_BINARY): $(DOSFSTOOLS_DIR)/.built
|
||||
cp -a $(DOSFSTOOLS_DIR)/$(DOSFSLABEL_BINARY) $@
|
||||
touch -c $@
|
||||
|
||||
dosfstools: uclibc $(TARGET_DIR)/$(DOSFSTOOLS_TARGET_BINARY) $(TARGET_DIR)/$(DOSFSCK_TARGET_BINARY)
|
||||
|
||||
dosfstools-clean:
|
||||
rm -f $(TARGET_DIR)/$(MKDOSFS_TARGET_BINARY)
|
||||
rm -f $(TARGET_DIR)/$(DOSFSCK_TARGET_BINARY)
|
||||
rm -f $(TARGET_DIR)/$(DOSFSLABEL_TARGET_BINARY)
|
||||
-$(MAKE) -C $(DOSFSTOOLS_DIR) clean
|
||||
|
||||
dosfstools-dirclean:
|
||||
rm -rf $(DOSFSTOOLS_DIR)
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Toplevel Makefile options
|
||||
#
|
||||
#############################################################
|
||||
ifeq ($(BR2_PACKAGE_DOSFSTOOLS_MKDOSFS),y)
|
||||
TARGETS+=$(TARGET_DIR)/$(MKDOSFS_TARGET_BINARY)
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_DOSFSTOOLS_DOSFSCK),y)
|
||||
TARGETS+=$(TARGET_DIR)/$(DOSFSCK_TARGET_BINARY)
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_DOSFSTOOLS_DOSFSLABEL),y)
|
||||
TARGETS+=$(TARGET_DIR)/$(DOSFSLABEL_TARGET_BINARY)
|
||||
endif
|
||||
@@ -5,7 +5,7 @@ diff -ur dropbear-0.48/includes.h dropbear-0.48-patched/includes.h
|
||||
#include <sys/param.h> /* required for BSD4_4 define */
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
+#define __USE_GNU
|
||||
+#define _GNU_SOURCE
|
||||
#include <sys/time.h>
|
||||
#include <sys/un.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
@@ -28,7 +28,7 @@ $(DROPBEAR_TARGET_INSTALL_TARGET):
|
||||
ln -snf ../sbin/dropbear $(TARGET_DIR)/usr/bin/scp
|
||||
ln -snf ../sbin/dropbear $(TARGET_DIR)/usr/bin/ssh
|
||||
if [ ! -f $(TARGET_DIR)/etc/init.d/S50dropbear ]; then \
|
||||
$(INSTALL) -m 0755 -D package/dropbear/S50dropbear $(TARGET_DIR)/etc/init.d; \
|
||||
$(INSTALL) -m 0755 -D package/dropbear/S50dropbear $(TARGET_DIR)/etc/init.d/S50dropbear; \
|
||||
fi
|
||||
touch $@
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user